X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2Fapi%2FApiQueryAllUsers.php;h=d2413112ab20a1aeb1d5b4816c3d79aa1a140890;hb=845ae423486fe1c8186ae4dd2b10e00ac757ad8b;hp=dfef286084483de3082c90fb93585e96813e2d54;hpb=7eddc5caaaa92108836c8191b16520f862af94ce;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiQueryAllUsers.php b/includes/api/ApiQueryAllUsers.php index dfef286084..d2413112ab 100644 --- a/includes/api/ApiQueryAllUsers.php +++ b/includes/api/ApiQueryAllUsers.php @@ -111,35 +111,18 @@ class ApiQueryAllUsers extends ApiQueryBase { } } - if ( !is_null( $params['group'] ) && !is_null( $params['excludegroup'] ) ) { - $this->dieUsage( 'group and excludegroup cannot be used together', 'group-excludegroup' ); - } - if ( !is_null( $params['group'] ) && count( $params['group'] ) ) { - $useIndex = false; // Filter only users that belong to a given group - $this->addTables( 'user_groups', 'ug1' ); - $this->addJoinConds( array( 'ug1' => array( 'INNER JOIN', array( 'ug1.ug_user=user_id', - 'ug1.ug_group' => $params['group'] ) ) ) ); + $this->addWhere( 'EXISTS (' . $db->selectSQLText( + 'user_groups', '1', array( 'ug_user=user_id', 'ug_group' => $params['group'] ) + ) . ')' ); } if ( !is_null( $params['excludegroup'] ) && count( $params['excludegroup'] ) ) { - $useIndex = false; // Filter only users don't belong to a given group - $this->addTables( 'user_groups', 'ug1' ); - - if ( count( $params['excludegroup'] ) == 1 ) { - $exclude = array( 'ug1.ug_group' => $params['excludegroup'][0] ); - } else { - $exclude = array( $db->makeList( - array( 'ug1.ug_group' => $params['excludegroup'] ), - LIST_OR - ) ); - } - $this->addJoinConds( array( 'ug1' => array( 'LEFT OUTER JOIN', - array_merge( array( 'ug1.ug_user=user_id' ), $exclude ) - ) ) ); - $this->addWhere( 'ug1.ug_user IS NULL' ); + $this->addWhere( 'NOT EXISTS (' . $db->selectSQLText( + 'user_groups', '1', array( 'ug_user=user_id', 'ug_group' => $params['excludegroup'] ) + ) . ')' ); } if ( $params['witheditsonly'] ) { @@ -156,7 +139,7 @@ class ApiQueryAllUsers extends ApiQueryBase { $this->addTables( 'user_groups', 'ug2' ); $this->addJoinConds( array( 'ug2' => array( 'LEFT JOIN', 'ug2.ug_user=user_id' ) ) ); - $this->addFields( 'ug2.ug_group ug_group2' ); + $this->addFields( array( 'ug_group2' => 'ug2.ug_group' ) ); } else { $sqlLimit = $limit + 1; } @@ -256,6 +239,7 @@ class ApiQueryAllUsers extends ApiQueryBase { $lastUserData['blockid'] = $row->ipb_id; $lastUserData['blockedby'] = $row->ipb_by_text; $lastUserData['blockedbyid'] = $row->ipb_by; + $lastUserData['blockedtimestamp'] = wfTimestamp( TS_ISO_8601, $row->ipb_timestamp ); $lastUserData['blockreason'] = $row->ipb_reason; $lastUserData['blockexpiry'] = $row->ipb_expiry; }