diff --git a/core/modules/user/user.admin.inc b/core/modules/user/user.admin.inc index 7566a73..d4fea0c 100644 --- a/core/modules/user/user.admin.inc +++ b/core/modules/user/user.admin.inc @@ -6,6 +6,86 @@ */ /** + * Page callback: User administration page. + */ +function user_admin_account() { + $header = array( + 'username' => array('data' => t('Username'), 'field' => 'u.name'), + 'status' => array('data' => t('Status'), 'field' => 'u.status', 'class' => array(RESPONSIVE_PRIORITY_LOW)), + 'roles' => array('data' => t('Roles'), 'class' => array(RESPONSIVE_PRIORITY_LOW)), + 'member_for' => array('data' => t('Member for'), 'field' => 'u.created', 'sort' => 'desc', 'class' => array(RESPONSIVE_PRIORITY_LOW)), + 'access' => array('data' => t('Last access'), 'field' => 'u.access', 'class' => array(RESPONSIVE_PRIORITY_LOW)), + 'operations' => t('Operations'), + ); + + $query = db_select('users', 'u'); + $query->condition('u.uid', 0, '<>'); + user_build_filter_query($query); + + $count_query = clone $query; + $count_query->addExpression('COUNT(u.uid)'); + + $query = $query + ->extend('Drupal\Core\Database\Query\PagerSelectExtender') + ->extend('Drupal\Core\Database\Query\TableSortExtender'); + $query + ->fields('u', array('uid', 'name', 'status', 'created', 'access')) + ->limit(50) + ->orderByHeader($header) + ->setCountQuery($count_query); + $result = $query->execute(); + + $destination = drupal_get_destination(); + $status = array(t('blocked'), t('active')); + $roles = array_map('check_plain', user_role_names(TRUE)); + $accounts = array(); + foreach ($result as $account) { + $account = user_load($account->uid); + $users_roles = array(); + $roles_result = db_query('SELECT rid FROM {users_roles} WHERE uid = :uid', array(':uid' => $account->uid)); + foreach ($roles_result as $user_role) { + $users_roles[] = $roles[$user_role->rid]; + } + asort($users_roles); + + $options[$account->uid] = array( + 'username' => theme('username', array('account' => $account)), + 'status' => $status[$account->status], + 'roles' => theme('item_list', array('items' => $users_roles)), + 'member_for' => format_interval(REQUEST_TIME - $account->created), + 'access' => $account->access ? t('@time ago', array('@time' => format_interval(REQUEST_TIME - $account->access))) : t('never'), + ); + $links = array(); + $links['edit'] = array( + 'title' => t('Edit'), + 'href' => 'user/' . $account->uid . '/edit', + 'query' => $destination, + ); + if (module_invoke('translation_entity', 'translate_access', $account)) { + $links['translate'] = array( + 'title' => t('Translate'), + 'href' => 'user/' . $account->uid . '/translations', + 'query' => $destination, + ); + } + $options[$account->uid]['operations']['data'] = array( + '#type' => 'operations', + '#links' => $links, + ); + } + + $build['accounts'] = array( + '#theme' => 'table', + '#header' => $header, + '#rows' => $options, + '#empty' => t('No people available.'), + ); + $build['pager'] = array('#markup' => theme('pager')); + + return $build; +} + +/** * Page callback: Generates user create administration form. */ function user_admin_create() { diff --git a/core/modules/user/user.module b/core/modules/user/user.module index a0b8e2d..21e91d3 100644 --- a/core/modules/user/user.module +++ b/core/modules/user/user.module @@ -935,15 +935,15 @@ function user_menu() { 'file' => 'user.pages.inc', ); + // User listing pages. $items['admin/people'] = array( 'title' => 'People', 'description' => 'Manage user accounts, roles, and permissions.', - 'page callback' => 'system_admin_menu_block_page', + 'page callback' => 'user_admin_account', 'access arguments' => array('administer users'), 'position' => 'left', 'weight' => -4, - 'file' => 'system.admin.inc', - 'file path' => drupal_get_path('module', 'system'), + 'file' => 'user.admin.inc', ); // Permissions and role forms. $items['admin/people/permissions'] = array(