Index: profile_csv.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/profile_csv/profile_csv.module,v
retrieving revision 1.2.2.2
diff -u -r1.2.2.2 profile_csv.module
--- profile_csv.module	28 Aug 2006 02:55:34 -0000	1.2.2.2
+++ profile_csv.module	9 Sep 2006 22:25:25 -0000
@@ -1,4 +1,11 @@
 <?php
+/*
+  ob_start();
+  var_dump($users);
+  $content = ob_get_contents();
+  ob_end_clean();
+  watchdog('profile_csv',$content);
+*/
 
 // Copyright 2006 http://2bits.com
 
@@ -138,14 +145,14 @@
 }  
 
 function _profile_csv_get_profile_fields() {
-    static $fields;
+  static $fields;
   
   if (!isset($fields)) {
     $fields = array();
-    $result = db_query('SELECT pf.fid, pf.name, pf.type FROM {profile_fields} pf');
+    $result = db_query('SELECT pf.fid, pf.name, pf.type, pf.visibility FROM {profile_fields} pf');
     while ($row = db_fetch_object($result)) {
       if (variable_get(PROFILE_CSV_PARAM . 'profile_' . $row->fid, 0)) {
-        $fields[$row->name] = $row->type;
+        $fields[] = array('name' => $row->name, 'type' => $row->type, 'visibility' => $row->visibility);
       }
     }
   }
@@ -156,12 +163,16 @@
 function _profile_csv_format_user($uid = 0) {
   
   $user_data = _profile_csv_get_user($uid);
-  $info = array_merge($user_data, _profile_csv_get_profile($uid));
-    
+  $profile_data = _profile_csv_get_profile($uid,$user_data['data']);
+  unset($user_data['data']);
+  $info = array_merge($user_data, $profile_data);
+  //all of the valid fields in ['data'] should have been picked out in _profile_csv_get_profile, so unset it
+  
+  
   foreach($info as $value) {
     $new_info[] = '"' . str_replace('"', '""', $value) . '"';
   }
-   if (isset($new_info)) { 
+  if (isset($new_info)) { 
     $line = implode(",", $new_info);
   } 
   $data .= trim($line) . "\n";
@@ -171,30 +182,37 @@
 
 function _profile_csv_get_user($uid = 0) {
    $users = array();
-   $result = db_query('SELECT u.uid, u.name, u.mail FROM {users} u WHERE u.uid = %d', $uid);
+   $result = db_query('SELECT u.uid, u.name, u.mail, u.data FROM {users} u WHERE u.uid = %d', $uid);
    while ($row = db_fetch_object($result)) {
     if (variable_get(PROFILE_CSV_PARAM . 'uid', 0)) 
       $users[] = $row->uid;
- 
+   
     if (variable_get(PROFILE_CSV_PARAM . 'name', 0)) 
       $users[] = $row->name;
     
     if (variable_get(PROFILE_CSV_PARAM . 'mail', 0)) 
-      $users[] = $row->mail;     
+      $users[] = $row->mail;
+    $users['data'] = unserialize($row->data);
   } 
   return $users;  
 }  
     
-function _profile_csv_get_profile($uid=0 ) {
-  $profile_flds = _profile_csv_get_profile_fields();
+function _profile_csv_get_profile($uid=0,$user_data=NULL) {
+  $profile_fields = _profile_csv_get_profile_fields();
   
   $profile_result = array();
-  foreach($profile_flds  as $profile_field => $profile_field_type) {
+  foreach($profile_fields as $profile_field) {
+    if ($profile_field ['visibility'] == 4) {
+    	//$value = try to get it from the $user_data
+    	$value = $user_data[$profile_field['name']];
+    } 
+    else {
     $value = db_result(db_query("SELECT pv.value FROM {profile_fields} pf, {profile_values} pv
       WHERE pv.fid = pf.fid
       AND pf.name = '%s'
-      AND pv.uid = %d", $profile_field, $uid));
-    if ($profile_field_type == 'date') {
+      AND pv.uid = %d", $profile_field['name'], $uid));
+    }
+    if ($profile_field['type'] == 'date') {
       $value = unserialize($value);
       $value = $value['year'] .'-'. $value['month'] .'-'. $value['day'];
     }  
@@ -215,8 +233,8 @@
   if (variable_get(PROFILE_CSV_PARAM . 'mail', 0)) 
     $row[] = '"mail"';
 
-  foreach(_profile_csv_get_profile_fields() as $name => $type) {
-    $row[] = '"'. $name .'"';
+  foreach(_profile_csv_get_profile_fields() as $profile_field) {
+    $row[] = '"'. $profile_field['name'] .'"';
   }
 
   return implode(",", $row) ."\n";
