--- /Users/tim/Documents/Dev/Drupal/contrib-head/modules/members/members.module 2007-01-30 18:25:04.000000000 -0500 +++ /Users/tim/Documents/Dev/Drupal/- Work/members.module 2007-01-30 19:04:33.000000000 -0500 @@ -10,24 +10,42 @@ function members_help($section) { } function members_settings() { - $form["members_roles"] = array( + $form['members_roles'] = array( '#type' => 'select', - '#title' => t("Roles to show"), - '#default_value' => variable_get("members_roles", array()), + '#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."), + '#description' => t('Select roles to show in the members listing.'), '#extra' => 0, '#multiple' => 1, + '#size' => 5, ); - $form["members_fields"] = array( + $form['members_fields'] = array( '#type' => 'select', - '#title' => t("Columns to show"), - '#default_value' => variable_get("members_fields", _member_fields()), + '#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."), + '#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; } @@ -53,7 +71,7 @@ function members_perm() { function members_page($rids = null) { if (user_access("access members list")) { - + // you may specify roles using second url argument. otherwise, use admin pref if ($rids) { $roles = explode(',', $rids); @@ -63,7 +81,6 @@ function members_page($rids = null) { } if ($roles) { - $fields = array(); $enabled_fields = variable_get("members_fields", _member_fields()); foreach (_member_fields() as $field => $data) { @@ -79,22 +96,33 @@ function members_page($rids = null) { } $header[] = array("data" => $data, "field" => $field); } - - 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"; + 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'; + } $sort = tablesort_get_order($header); if ($sort['sql'] == 'p.value') { - $fieldid = db_result(db_query("SELECT fid FROM {profile_fields} WHERE name='%s'",drupal_substr(array_search($sort['name'], $fields), 8))); + $fieldid = db_result(db_query("SELECT fid FROM {profile_fields} WHERE name='%s'", drupal_substr(array_search($sort['name'], $fields), 8))); $query.= " LEFT JOIN {profile_values} p ON u.uid=p.uid WHERE (p.fid = '". db_escape_string($fieldid). "' OR p.fid IS NULL) AND"; } 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(); @@ -110,6 +138,10 @@ function members_page($rids = null) { $profile_fields[$field] = db_fetch_object(db_query("SELECT * FROM {profile_fields} WHERE name='%s'", $field)); } $data = profile_view_field($account, $profile_fields[$field]); + $length = variable_get('members_field_length', 0); + if ($length && is_numeric($length)) { + $data = truncate_utf8($data, $length, TRUE); + } } else if ($field == 'rid') { $data = array(); @@ -123,8 +155,16 @@ function members_page($rids = null) { else if ($field == 'picture') { $data = theme_user_picture($account); } - else if ($field == 'changed') { - $data = format_interval(time() - $account->changed); + else if ($field == 'access') { + $data = ($account->login) ? format_interval(time() - $account->access) : t('Never logged in'); + } + else if ($field == 'mail') { + if (variable_get('members_encode_mailto', 1)) { + $data = _members_encode_mailto($account->mail); + } + else { + $data = $account->mail; + } } else { $data = $account->$field; @@ -137,13 +177,13 @@ 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))); } $output.= '