Index: userinfo.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/userinfo/userinfo.module,v
retrieving revision 1.4
diff -u -p -r1.4 userinfo.module
--- userinfo.module	17 Feb 2008 17:15:26 -0000	1.4
+++ userinfo.module	14 Dec 2008 02:26:53 -0000
@@ -1,5 +1,5 @@
 <?php
-// $Id: userinfo.module,v 1.4 2008/02/17 17:15:26 danielskeenan Exp $
+// $Id$
 
 /**
  * @file
@@ -94,28 +94,33 @@ function userinfo_admin_users() {
    * Reduce Database overhead by getting settings all at once
    */
   $settings = variable_get('userinfo_display', array('uid', 'name', 'mail', 'status',));
+  
+  /**
+   * Number of users
+   */
+  $num_users = db_num_rows(db_query('SELECT * FROM `{users}`'));
 
   $output = '<table><thead>';
   $customfields = array();
   $user_info = array();
 
   /**
-   * Get custom profile fields
+   * Get custom profile fields, if the profile module is enabled
    */
-  $sql = 'SELECT DISTINCT `title`, `name` FROM `{profile_fields}`';
-  $sql_result = db_query($sql);
-  for ($i = 1; $i <= db_num_rows($sql_result); $i++) {
-    $result = db_fetch_array($sql_result);
-    $customfields[] = array(
-      'name' => $result['name'],
-      'title' => $result['title'],
-    );
+  if (in_array('profile', module_list())) {
+    $sql = 'SELECT DISTINCT `title`, `name`, `type` FROM `{profile_fields}`';
+    $sql_result = db_query($sql);
+//     for ($i = 1; $i <= $num_users; $i++) {
+    for ($i = 1; $i <= $num_users; $i++) {
+      $result = db_fetch_array($sql_result);
+      $customfields[$result['name']] = array(
+        'name' => $result['name'],
+        'title' => $result['title'],
+        'type' => $result['type'],
+      );
+    }
   }
   /**
-   * Number of users
-   */
-  $num_users = db_num_rows(db_query('SELECT * FROM `{users}`'));
-  /**
    * Default theme
    */
   $default_theme = variable_get('theme_default', 'garland');
@@ -124,18 +129,22 @@ function userinfo_admin_users() {
    */
   $sql = 'SELECT * FROM `{users}` WHERE `uid` >= 1';
   $sql_result = db_query($sql);
-  for ($i = 1; $i <= db_num_rows($sql_result); $i++) {
+//   for ($i = 1; $i <= db_num_rows($sql_result); $i++) {
+  for ($i = 1; $i <= $num_users; $i++) {
     $result = db_fetch_array($sql_result);
     $user_info[$result['uid']] = $result;
   }
   /**
    * Get data for custom profile fields
    */
-  $sql = 'SELECT `name` , `uid` , `value` FROM {profile_fields} INNER JOIN {profile_values} ON {profile_fields}.fid = {profile_values}.fid';
-  $sql_result = db_query($sql);
-  for ($i = 1; $i <= db_num_rows($sql_result); $i++) {
-    $result = db_fetch_array($sql_result);
-    $user_info[$result['uid']][$result['name']] = $result['value'];
+  if (in_array('profile', module_list())) { 
+    $sql = 'SELECT `name` , `uid` , `value` FROM {profile_fields} INNER JOIN {profile_values} ON {profile_fields}.fid = {profile_values}.fid';
+    $sql_result = db_query($sql);
+//     for ($i = 1; $i <= db_num_rows($sql_result); $i++) {
+    for ($i = 1; $i <= $num_users; $i++) {
+      $result = db_fetch_array($sql_result);
+      $user_info[$result['uid']][$result['name']] = $result['value'];
+    }
   }
   /**
    * Table Header
@@ -198,22 +207,22 @@ function userinfo_admin_users() {
   /**
    * Actual Info
    */
-  for ($i = 1; $i <= $num_users; $i++) {
-    if ($user_info[$i]) {
+  foreach ($user_info as $info) {
+    if ($info) {
       $output .= '<tr>';
         foreach ($settings as $item) {
           if ($item) {
             /**
-             * Special things need to be done with date, status, and picture fields.
+             * Special things need to be done with date, status, picture, url, and e-mail fields
              */
-            if ($item != 'created' && $item != 'access' && $item != 'login' && $item != 'status' && $item != 'picture') {
-              $output .= '<td>' . $user_info[$i][$item] . '</td>';
+            if ($item != 'created' && $item != 'access' && $item != 'login' && $item != 'status' && $item != 'picture' && $customfields[$item]['type'] != 'url' && $item != 'mail') {
+              $output .= '<td>' . $info[$item] . '</td>';
             }
             else if ($item == 'created' || $item == 'access' || $item == 'login') {
-              $output .= '<td>' . format_date($user_info[$i][$item], 'small') . '</td>';
+              $output .= '<td>' . format_date($info[$item], 'small') . '</td>';
             }
             else if ($item == 'status') {
-              if ($user_info[$i][$item]) {
+              if ($info[$item]) {
                 $output .= '<td>Active</td>';
               }
               else {
@@ -221,13 +230,19 @@ function userinfo_admin_users() {
               }
             }
             else if ($item == 'picture') {
-              if ($user_info[$i][$item]) {
-                $output .= '<td><img src="/' . $user_info[$i][$item] . '" /></td>';
+              if ($info[$item]) {
+                $output .= '<td><img src="/' . $info[$item] . '" /></td>';
               }
               else {
                 $output .= '<td></td>';
               }
             }
+            else if ($customfields[$item]['type'] == 'url') {
+              $output .= '<td><a href="' . $info[$item] . '">' . $info[$item] . '</a>';
+            }
+            else if ($item == 'mail') {
+              $output .= '<td><a href="mailto:' . $info[$item] . '">' . $info[$item] . '</a>';
+            }
           }
         }
       $output .= '</tr>';
