Members

//////////////////////////////////////////////////////////// // Main //////////////////////////////////////////////////////////// // Add form to page print drupal_get_form('memberfilter'); // Show results print memberresults(); //////////////////////////////////////////////////////////// // Subroutines /////////////////////////////////////////////////////////// function memberfilter_getformvalues() { $output=array(); foreach ($_POST as $key=>$value) { $output[$key]=$value; } if (empty($output)) foreach ($_GET as $key=>$value) { $output[$key]=$value; } return $output; } // Build form function memberfilter() { $form = array(); $form['filter'] = array('#type' => 'fieldset', '#title' => t('Use this filter to narrow down the number of members returned'), ); // Show institutions and initiatives $p=memberfilter_getformvalues(); memberfilter_addfilter('institution','Institution',$p,$form); memberfilter_addfilter('initiative','Initiative',$p,$form); return $form; } function memberfilter_addfilter($type,$title,$posted,&$form){ // Build lookup list for each area $options=array('--'); $nodes=db_query("SELECT n.nid,n.title FROM node n WHERE n.type='%s' AND n.status=1 ORDER BY n.title",$type); while ($row=db_fetch_object($nodes)) { $options[$row->nid]=$row->title; } // Add to form $form['filter']["nodes_$type"] = array( '#type' => 'select', '#title' => t($title), '#options' => $options, '#default_value'=>$posted["nodes_$type"], '#attributes'=>array('onChange'=>'this.form.submit()') ); } function memberfilter_submit($form_id,$form_values){ return false; } function memberresults() { // Form values $posted=memberfilter_getformvalues(); // Security $browse=user_access('access user profiles'); // Build results $profile_areaid = 13; $profile_lastname = 15; $profile_firstname = 14; $profile_hide = 16; $sql = "SELECT u.uid, u.name FROM {users} u LEFT JOIN {profile_values} vl ON u.uid=vl.uid AND vl.fid=$profile_lastname LEFT JOIN {profile_values} vf ON u.uid=vf.uid AND vf.fid=$profile_firstname LEFT JOIN {profile_values} v ON u.uid=v.uid AND v.fid=$profile_areaid LEFT JOIN {profile_values} vh ON u.uid=vh.uid AND vh.fid=$profile_hide WHERE u.uid in (SELECT DISTINCT uid FROM {users_roles}) AND u.status!=0 AND IFNULL(vh.value,'')<>'1'"; foreach ($posted as $key=>$value) { if (preg_match('/nodes*/', $key) && is_numeric($value) && $value!=0) $sql .= " AND CONCAT(',',IFNULL(v.value,''),',') LIKE '%,$value,%'"; } $sql .= " ORDER BY vl.value,vf.value"; $result = pager_query($sql, 25); $accounts = array(); while ($account = db_fetch_object($result)) { $item=''; $account=user_load(array('uid'=>$account->uid)); $item.='
'.(($browse)?l($account->profile_fullname, 'user/'. $account->uid,array('title' => t('View user profile.'))):check_plain($account->profile_fullname)).'
'; $item.=$account->profile_specialty?'
'.$account->profile_specialty.'
':''; $item.=''; // Get institutions $areas=$account->profile_areas; if($areas){ $inst=db_query("SELECT nid,title FROM {node} WHERE nid IN ($areas) AND type='institution'"); $institem=''; while ($i=db_fetch_object($inst)) { $institem.=(($institem)?', ':'').l($i->title, 'node/'. $i->nid); } if ($institem) $item.='
'.$institem.'
'; // Initiatives $initq=db_query("SELECT nid,title FROM {node} WHERE nid IN ($areas) AND type='initiative'"); $inititem=''; while ($i=db_fetch_object($initq)) { $inititem.=(($inititem)?', ':'').l($i->title, 'node/'. $i->nid); } if ($inititem) $item.='
Initiative(s): '.$inititem.'
'; } // Email $item.=($browse)?'':''; $accounts[]=$item; } if ($accounts) { $output = theme('item_list', $accounts); $output .= theme('pager', NULL, 25, 0); return $output; } } ?>