Index: members/members.install
===================================================================
--- members/members.install	(revision 195)
+++ members/members.install	(working copy)
@@ -93,6 +93,14 @@
   return $ret;	
 }
 
+function members_update_3() {
+  $ret = array();
+
+  db_add_column($ret, 'members_page', 'page_type', 'varchar(20)');
+
+  return $ret;	
+}
+
 function members_uninstall() {
   if (db_table_exists('members_page')) {
     db_query("DROP TABLE {members_page}");
Index: members/contrib/membersuser/membersuser.info
===================================================================
--- members/contrib/membersuser/membersuser.info	(revision 0)
+++ members/contrib/membersuser/membersuser.info	(revision 197)
@@ -0,0 +1,4 @@
+name = Members User 
+description = Provides members module with fields from user information
+dependencies = members
+
Index: members/contrib/membersuser/membersuser.module
===================================================================
--- members/contrib/membersuser/membersuser.module	(revision 0)
+++ members/contrib/membersuser/membersuser.module	(revision 197)
@@ -0,0 +1,81 @@
+<?php
+
+
+/**
+ * Implementation of hook_help()
+  */
+function membersuser_help($section) {
+  switch ($section) {
+    case 'admin/help#membersuser':
+      return t('Provides members module with fields from user table');
+  }
+}
+			  
+/**
+  *
+  * hook_members
+  * handles temp tables for returning data to the members module for sorting
+  *
+  */
+function membersuser_members($op, $a='', $b='', $c='') {
+  global $user;
+    
+  switch($op) {
+    // return array of what fields we can define for members module
+    case 'fields':
+        $fields['uid'] = array('title'=> 'User ID (UID)','type'=>'textfield');
+        $fields['has_posted'] = array('title'=> 'Has Posted Content','type'=>'bool','searchable'=>true);
+        return $fields;
+    break;
+    
+    case 'process':
+      if($a == 'has_posted') {
+        db_query("CREATE TEMPORARY TABLE {%s} (uid int, %s int, INDEX (uid), INDEX(%s))",$b,$a,$a);
+        db_query('INSERT INTO {%s} SELECT uid,uid FROM {node} GROUP BY uid',$b);
+        return true;
+      } else {
+        return false;
+      }
+      
+      
+    break;
+  }
+}
+
+/**
+ * hook_theme
+ *
+ * @param $account row from table join
+ * @param $field_id id of field for profile module reference
+ * @param $row_value value of the join in the current members row
+ * @return string with better representation of the row
+ * 
+ * because we are using profile module for the data, we just need to pass
+ * the account and the field_id (name) and it will return the value for us
+ * 
+ */
+function theme_membersuser_field($account, $field_id) {
+  static $node_uids;
+  
+  if($field_id == 'uid') {
+    return $account->uid;
+  } elseif ($field_id == 'has_posted') {
+    // get all the results of users in one shot and use for later
+    if( ! is_array($node_uids) ) {
+      $result=db_query('SELECT uid,count(*) as c FROM {node} group by uid');
+      while($row = db_fetch_object($result)) {
+        $node_uids[$row->uid]=$row->c;
+      }
+    }
+    
+    if (!$node_uids[$account->uid]) {
+      return 'No';
+    } else {
+      return 'Yes';
+    }
+    
+  }
+  
+  return $data;
+          
+}
Index: members/members.module
===================================================================
--- members/members.module	(revision 195)
+++ members/members.module	(working copy)
@@ -375,6 +375,14 @@
     '#description' => t('Enter the URL to use for this members page. Do not begin or end the URL with a /. Example: \'members/premium\'.'),
   );
 
+    $form['page-info']['page_type'] = array(
+    '#type' => 'select',
+    '#title' => t('Page type'),
+    '#default_value' => $member->page_type,
+    '#options' => array("table"=>"Table","list"=>"List")
+  );
+
+
   $form['page-info']['page_title'] = array(
     '#type' => 'textfield',
     '#title' => t('Title'),
@@ -764,10 +772,10 @@
   
 
   if ($form['mid']) {
-    db_query("UPDATE {members_page} SET name='%s', description='%s', access='%s', page=%d, page_title='%s', url='%s', use_pager=%d, page_header='%s', page_header_format=%d, page_footer='%s', page_footer_format=%d, page_empty='%s', page_empty_format=%d, menu=%d, menu_title='%s', block=%d, block_title='%s', users_per_block=%d, block_more=%d, block_use_page_header=%d, block_header='%s', block_header_format=%d, block_use_page_footer=%d, block_footer='%s', block_footer_format=%d, block_use_page_empty=%d, block_empty='%s', block_empty_format=%d, roles='%s', `searchables`='%s', `fields`='%s', encode_mailto=%d, field_length=%d, users_per_page=%d WHERE mid=%d LIMIT 1", $form['name'], $form['description'], $access, $form['page'], $form['page_title'], $form['url'], $form['use_pager'], $form['page_header'], $form['page_header_format'], $form['page_footer'], $form['page_footer_format'], $form['page_empty'], $form['page_empty_format'], $form['menu'], $form['menu_title'], $form['block'], $form['block_title'], $form['users_per_block'], $form['block_more'], $form['block_use_page_header'], $form['block_header'], $form['block_header_format'], $form['block_use_page_footer'], $form['block_footer'], $form['blocker_footer_format'], $form['block_use_page_empty'], $form['block_empty'], $form['block_empty_format'], $roles, $searchables, $fields, $form['encode_mailto'], $form['field_length'], $form['users_per_page'], $form['mid']);
+    db_query("UPDATE {members_page} SET name='%s', description='%s', access='%s', page=%d, page_title='%s', url='%s', use_pager=%d, page_header='%s', page_header_format=%d, page_footer='%s', page_footer_format=%d, page_empty='%s', page_empty_format=%d, menu=%d, menu_title='%s', block=%d, block_title='%s', users_per_block=%d, block_more=%d, block_use_page_header=%d, block_header='%s', block_header_format=%d, block_use_page_footer=%d, block_footer='%s', block_footer_format=%d, block_use_page_empty=%d, block_empty='%s', block_empty_format=%d, roles='%s', `searchables`='%s', `fields`='%s', encode_mailto=%d, field_length=%d, users_per_page=%d, page_type='%s' WHERE mid=%d LIMIT 1", $form['name'], $form['description'], $access, $form['page'], $form['page_title'], $form['url'], $form['use_pager'], $form['page_header'], $form['page_header_format'], $form['page_footer'], $form['page_footer_format'], $form['page_empty'], $form['page_empty_format'], $form['menu'], $form['menu_title'], $form['block'], $form['block_title'], $form['users_per_block'], $form['block_more'], $form['block_use_page_header'], $form['block_header'], $form['block_header_format'], $form['block_use_page_footer'], $form['block_footer'], $form['blocker_footer_format'], $form['block_use_page_empty'], $form['block_empty'], $form['block_empty_format'], $roles, $searchables, $fields, $form['encode_mailto'], $form['field_length'], $form['users_per_page'],$form['page_type'], $form['mid']);
   }
   else {
-    db_query("INSERT INTO {members_page} (name, description, access, page, page_title, url, use_pager, page_header, page_header_format, page_footer, page_footer_format, page_empty, page_empty_format, menu, menu_title, block, block_title, users_per_block, block_more, block_use_page_header, block_header, block_header_format, block_use_page_footer, block_footer, block_footer_format, block_use_page_empty, block_empty, block_empty_format, roles, `fields`, `searchables`, encode_mailto, field_length, users_per_page) VALUES ('%s', '%s', '%s', %d, '%s', '%s', %d, '%s', %d, '%s', %d, '%s', %d, %d, '%s', %d, '%s', %d, %d, %d, '%s', %d, %d, '%s', %d, %d, '%s', %d, '%s', '%s', '%s', %d, %d, %d)", $form['name'], $form['description'], $access, $form['page'], $form['page_title'], $form['url'], $form['use_pager'], $form['page_header'], $form['page_header_format'], $form['page_footer'], $form['page_footer_format'], $form['page_empty'], $form['page_empty_format'], $form['menu'], $form['menu_title'], $form['block'], $form['block_title'], $form['users_per_block'], $form['block_more'], $form['block_use_page_header'], $form['block_header'], $form['block_header_format'], $form['block_use_page_footer'], $form['block_footer'], $form['block_footer_format'], $form['block_use_page_empty'], $form['block_empty'], $form['block_empty_format'], $roles, $fields, $searchables, $form['encode_mailto'], $form['field_length'], $form['users_per_page']);
+    db_query("INSERT INTO {members_page} (name, description, access, page, page_title, url, use_pager, page_header, page_header_format, page_footer, page_footer_format, page_empty, page_empty_format, menu, menu_title, block, block_title, users_per_block, block_more, block_use_page_header, block_header, block_header_format, block_use_page_footer, block_footer, block_footer_format, block_use_page_empty, block_empty, block_empty_format, roles, `fields`, `searchables`, encode_mailto, field_length, users_per_page) VALUES ('%s', '%s', '%s', %d, '%s', '%s', %d, '%s', %d, '%s', %d, '%s', %d, %d, '%s', %d, '%s', %d, %d, %d, '%s', %d, %d, '%s', %d, %d, '%s', %d, '%s', '%s', '%s', %d, %d, %d, '%s')", $form['name'], $form['description'], $access, $form['page'], $form['page_title'], $form['url'], $form['use_pager'], $form['page_header'], $form['page_header_format'], $form['page_footer'], $form['page_footer_format'], $form['page_empty'], $form['page_empty_format'], $form['menu'], $form['menu_title'], $form['block'], $form['block_title'], $form['users_per_block'], $form['block_more'], $form['block_use_page_header'], $form['block_header'], $form['block_header_format'], $form['block_use_page_footer'], $form['block_footer'], $form['block_footer_format'], $form['block_use_page_empty'], $form['block_empty'], $form['block_empty_format'], $roles, $fields, $searchables, $form['encode_mailto'], $form['field_length'], $form['users_per_page'],$form['page_type']);
   }
 
   if ($form['mid']) {
@@ -1120,12 +1128,13 @@
           else {
             $data = $account->$field;
           }
-
+          
           if (stristr($field, 'name')) {
             $data = l($data, 'user/'.$account->uid);
           }
           $row[] = array('data' => $data);
         }
+        
         $rows[] = $row;
       } 
       
@@ -1145,7 +1154,11 @@
       }
       // Render main content
       
-      $output .= '<div id="members-main">'. theme("table", $header, $rows) .'</div>';
+      if(!$member->page_type || $member->page_type == 'table') {
+        $output .= '<div id="members-'.$member->name.'">'. theme("table", $header, $rows) .'</div>';
+      } elseif ($member->page_type == 'list') {
+        $output .= '<div id="members-'.$member->name.'">'. theme('members_view_list',$member, $header, $rows) .'</div>';
+      }
       
       // Render 'more' link
 
@@ -1502,3 +1515,14 @@
   }
           
 }
+
+function theme_members_view_list($member, $fields, $data) {
+  
+  $output = '';
+  foreach( $data as $user ) {
+    
+    $output .= theme('item_list', $user);    
+  }
+  
+  return $output;
+}
