Index: members.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/members/members.module,v retrieving revision 1.36.2.2 diff -u -F^f -r1.36.2.2 members.module --- members.module 3 Mar 2006 17:56:52 -0000 1.36.2.2 +++ members.module 30 Jan 2007 19:11:08 -0000 @@ -10,12 +10,47 @@ function members_help($section) { } function members_settings() { - $output = form_select(t("Roles to show"), "members_roles", variable_get("members_roles", array()), user_roles(1), t("Select roles to show in the members listing."), 0, 1); - $output .= form_select(t("Columns to show"), "members_fields", variable_get("members_fields", _member_fields()), _member_fields(), t("Select the fields which should be displayed on your members overview page. Note that some fields require certain modules to be active."), 0, 1); - $output .= form_checkbox(t('Obfuscate e-mail addresses using javascript'), 'members_encode_mailto', 1, variable_get('members_encode_mailto', 1), t('When checked, email addresses will not be included directly in the HTML source to deter spam crawlers. Note: this requires users have a javascript-enabled browser')); - $output .= form_textfield(t('Truncated field length'), 'members_field_length', variable_get('members_field_length', 0), 4, 6, t('If set (and non zero), all fields will be truncated to this length (in characters) to preserve table layouts')); - return $output; + $form['members_roles'] = array( + '#type' => 'select', + '#title' => t('Roles to show'), + '#default_value' => variable_get('members_roles', array()), + '#options' => user_roles(1), + '#description' => t('Select roles to show in the members listing.'), + '#extra' => 0, + '#multiple' => 1, + '#size' => 5, + ); + + $form['members_fields'] = array( + '#type' => 'select', + '#title' => t('Columns to show'), + '#default_value' => variable_get('members_fields', _member_fields()), + '#options' => _member_fields(), + '#description' => t('Select the fields which should be displayed on your members overview page. Note that some fields require certain modules to be active.'), + '#extra' => 0, + '#multiple' => 1, + '#size' => 5, + ); + + $form['members_encode_mailto'] = array( + '#type' => 'checkbox', + '#title' => t('Obfuscate e-mail addresses using JavaScript'), + '#return_value' => 1, + '#default_value' => variable_get('members_encode_mailto', 1), + '#description' => t('When checked, email addresses will not be included directly in the HTML source to deter spam crawlers. Note: this requires users have a JavaScript-enabled browser.'), + ); + + $form['members_field_length'] = array( + '#type' => 'textfield', + '#title' => t('Truncated field length'), + '#default_value' => variable_get('members_field_length', 0), + '#size' => 4, + '#maxlength' => 6, + '#description' => t('If set (and non-zero), all fields will be truncated to this length (in characters) to preserve table layouts.'), + ); + + return $form; } function members_menu($may_cache) { @@ -50,7 +85,6 @@ function members_page($rids = null) { } if ($roles) { - $fields = array(); $enabled_fields = variable_get("members_fields", _member_fields()); foreach (_member_fields() as $field => $data) { @@ -67,12 +101,18 @@ function members_page($rids = null) { $header[] = array("data" => $data, "field" => $field); } - foreach ($roles as $rid) { - $list[] = "'" . db_escape_string($rid) ."'"; + if (in_array('2', $roles)) { + $allusers = 1; + $query = 'SELECT DISTINCT(u.uid) FROM {users} u'; + } + else { + $allusers = 0; + foreach ($roles as $rid) { + $list[] = "'" . db_escape_string($rid) ."'"; + } + $list = implode(',', $list); + $query = 'SELECT DISTINCT(u.uid) FROM {users} u INNER JOIN {users_roles} r ON u.uid = r.uid'; } - $list = implode(',', $list); - - $query = "SELECT DISTINCT(u.uid) FROM {users} u INNER JOIN {users_roles} r ON u.uid=r.uid"; $sort = tablesort_get_order($header); if ($sort['sql'] == 'p.value') { $fieldid = db_result(db_query("SELECT fid FROM {profile_fields} WHERE name='%s'",substr(array_search($sort['name'], $fields), 8))); @@ -81,7 +121,12 @@ function members_page($rids = null) { else { $query.= " WHERE"; } - $query.= " r.rid IN ($list) AND u.status=1" . tablesort_sql($header); + if ($allusers == 0) { + $query .= " r.rid IN ($list) AND u.status = 1" . tablesort_sql($header); + } + else { + $query .= ' u.status=1' . tablesort_sql($header); + } $result = pager_query($query, 200); $rows = array(); @@ -136,7 +181,7 @@ function members_page($rids = null) { $rows[] = $row; } - if ($pager = theme("pager", NULL, 200, 0, tablesort_pager())) { + if ($pager = theme('pager', NULL, 200, 0)) { $rows[] = array(array("data" => $pager, "colspan" => count($header))); } @@ -157,7 +202,7 @@ function _member_fields() { // profile fields if (module_exist('profile')) { - $result = db_query("SELECT name,title FROM {profile_fields} WHERE visibility = %d ORDER BY weight ASC", PROFILE_PUBLIC_LISTINGS); + $result = db_query('SELECT name, title FROM {profile_fields} WHERE visibility = %d ORDER BY weight ASC', PROFILE_PUBLIC_LISTINGS); while ($row = db_fetch_object($result)) { $output["profile.$row->name"] = $row->title; }