'admin/user/user', 'title' => t('Users'), 'description' => t('List, add, and edit users. (Modified for playground)'), 'callback' => 'playground_admin_user_admin', 'callback arguments' => array('list'), 'access' => $admin_access); } return $items; } function playground_admin_user_admin($callback_arg = '') { $op = isset($_POST['op']) ? $_POST['op'] : $callback_arg; switch ($op) { case 'search': case t('Search'): $output = drupal_get_form('search_form', url('admin/user/search'), $_POST['keys'], 'user') . search_data($_POST['keys'], 'user'); break; case t('Create new account'): case 'create': $output = drupal_get_form('user_register'); break; default: if ($_POST['accounts'] && $_POST['operation'] == 'delete') { $output = drupal_get_form('user_multiple_delete_confirm'); } else { $output = drupal_get_form('user_filter_form'); $output .= drupal_get_form('playground_admin_user_admin_account'); } } return $output; } function playground_admin_user_admin_account() { $filter = user_build_filter_query(); $header = array( array(), array('data' => t('Username'), 'field' => 'u.name'), array('data' => t('E-mail'), 'field' => 'u.mail'), array('data' => t('Status'), 'field' => 'u.status'), t('Roles'), array('data' => t('Member for'), 'field' => 'u.created', 'sort' => 'desc'), Array('data' => t('Last access'), 'field' => 'u.access'), t('Operations') ); $sql = 'SELECT DISTINCT u.uid, u.name, u.status, u.created, u.mail, u.access FROM {users} u LEFT JOIN {users_roles} ur ON u.uid = ur.uid '. $filter['join'] .' WHERE u.uid != 0 '. $filter['where']; $sql .= tablesort_sql($header); $result = pager_query($sql, 50, 0, NULL, $filter['args']); $form['options'] = array( '#type' => 'fieldset', '#title' => t('Update options'), '#prefix' => '
', '#suffix' => '
', ); $options = array(); foreach (module_invoke_all('user_operations') as $operation => $array) { $options[$operation] = $array['label']; } $form['options']['operation'] = array( '#type' => 'select', '#options' => $options, '#default_value' => 'unblock', ); $form['options']['submit'] = array( '#type' => 'submit', '#value' => t('Update'), ); $destination = drupal_get_destination(); $status = array(t('blocked'), t('active')); $roles = user_roles(1); while ($account = db_fetch_object($result)) { $accounts[$account->uid] = ''; $form['name'][$account->uid] = array('#value' => theme('username', $account)); $form['status'][$account->uid] = array('#value' => $status[$account->status]); $users_roles = array(); $roles_result = db_query('SELECT rid FROM {users_roles} WHERE uid = %d', $account->uid); while ($user_role = db_fetch_object($roles_result)) { $users_roles[] = $roles[$user_role->rid]; } asort($users_roles); $form['roles'][$account->uid][0] = array('#value' => theme('item_list', $users_roles)); $form['mail'][$account->uid][0] = array('#value' => $account->mail); $form['member_for'][$account->uid] = array('#value' => format_interval(time() - $account->created)); $form['last_access'][$account->uid] = array('#value' => $account->access ? t('@time ago', array('@time' => format_interval(time() - $account->access))) : t('never')); $form['operations'][$account->uid] = array('#value' => l(t('edit'), "user/$account->uid/edit", array(), $destination)); } } $form['accounts'] = array( '#type' => 'checkboxes', '#options' => $accounts ); $form['pager'] = array('#value' => theme('pager', NULL, 50, 0)); return $form; } /** * Theme user administration overview. */ function theme_playground_admin_user_admin_account($form) { // Overview table: $header = array( theme('table_select_header_cell'), array('data' => t('Username'), 'field' => 'u.name'), array('data' => t('Status'), 'field' => 'u.status'), array('data' => t('E-mail'), 'field' => 'u.mail'), t('Roles'), array('data' => t('Member for'), 'field' => 'u.created', 'sort' => 'desc'), array('data' => t('Last access'), 'field' => 'u.access'), t('Operations') ); $output = drupal_render($form['options']); if (isset($form['name']) && is_array($form['name'])) { foreach (element_children($form['name']) as $key) { $rows[] = array( drupal_render($form['accounts'][$key]), drupal_render($form['name'][$key]), drupal_render($form['status'][$key]), drupal_render($form['mail'][$key]), drupal_render($form['roles'][$key]), drupal_render($form['member_for'][$key]), drupal_render($form['last_access'][$key]), drupal_render($form['operations'][$key]), ); } } else { $rows[] = array(array('data' => t('No users available.'), 'colspan' => '7')); } $output .= theme('table', $header, $rows); if ($form['pager']['#value']) { $output .= drupal_render($form['pager']); } $output .= drupal_render($form); return $output; }