diff options
author | Angie Byron <webchick@24967.no-reply.drupal.org> | 2010-01-12 06:18:58 +0000 |
---|---|---|
committer | Angie Byron <webchick@24967.no-reply.drupal.org> | 2010-01-12 06:18:58 +0000 |
commit | 100ec14f14169ec29a805a2563d2385dd0cc6dba (patch) | |
tree | cecd031c076b0ff686b21ec503c35e81d8322720 | |
parent | e1812b3353b6fe735e9a0dacf7e48b6eeb71d4cd (diff) | |
download | brdo-100ec14f14169ec29a805a2563d2385dd0cc6dba.tar.gz brdo-100ec14f14169ec29a805a2563d2385dd0cc6dba.tar.bz2 |
#604304 by JeremyFrench: Fixed bad query and broken paging on admin/people.
-rw-r--r-- | modules/user/user.admin.inc | 3 | ||||
-rw-r--r-- | modules/user/user.module | 18 |
2 files changed, 16 insertions, 5 deletions
diff --git a/modules/user/user.admin.inc b/modules/user/user.admin.inc index 07c775d78..762ea5448 100644 --- a/modules/user/user.admin.inc +++ b/modules/user/user.admin.inc @@ -151,12 +151,11 @@ function user_admin_account() { ); $query = db_select('users', 'u'); - $query->leftJoin('users_roles', 'ur', 'u.uid = ur.uid'); $query->condition('u.uid', 0, '<>'); user_build_filter_query($query); $count_query = clone $query; - $count_query->addExpression('COUNT(DISTINCT u.uid)'); + $count_query->addExpression('COUNT(u.uid)'); $query = $query->extend('PagerDefault')->extend('TableSort'); $query diff --git a/modules/user/user.module b/modules/user/user.module index ce5c511a1..e972ee8bc 100644 --- a/modules/user/user.module +++ b/modules/user/user.module @@ -2829,7 +2829,8 @@ function user_filters() { */ function user_build_filter_query(SelectQuery $query) { $filters = user_filters(); - + $role_count = 0; + $permission_count = 0; // Extend Query with filter conditions. foreach (isset($_SESSION['user_overview_filter']) ? $_SESSION['user_overview_filter'] : array() as $filter) { list($key, $value) = $filter; @@ -2843,8 +2844,19 @@ function user_build_filter_query(SelectQuery $query) { if (user_access($value, $account)) { continue; } - $query->leftJoin('role_permission', 'p', 'ur.rid = p.rid'); - $query->condition(db_or()->condition('u.uid', 1)->condition('p.permission', $value)); + $user_role_alias = 'ur' . $role_count; + $permission_alias = 'p' . $permission_count; + $query->innerJoin('users_roles', $user_role_alias, $user_role_alias . '.uid = u.uid'); + $query->innerJoin('role_permission', $permission_alias , $user_role_alias . '.rid = ' . $permission_alias . '.rid'); + $query->condition($permission_alias . '.permission', $value); + $role_count++; + $permission_count++; + } + else if ($key == 'role') { + $user_role_alias = 'ur' . $role_count; + $query->innerJoin('users_roles', $user_role_alias, $user_role_alias . '.uid = u.uid'); + $query->condition($user_role_alias . '.rid' , $value); + $role_count++; } else { $query->condition($filters[$key]['field'], $value); |