'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;
}