https://www.mediawiki.org/wiki/Special:Code/MediaWiki/114773
Revision: 114773
Author: bsitu
Date: 2012-04-06 20:53:22 +0000 (Fri, 06 Apr 2012)
Log Message:
-----------
Update the logic for PageTriage filtering
Modified Paths:
--------------
trunk/extensions/PageTriage/api/ApiPageTriageList.php
Modified: trunk/extensions/PageTriage/api/ApiPageTriageList.php
===================================================================
--- trunk/extensions/PageTriage/api/ApiPageTriageList.php 2012-04-06
20:50:53 UTC (rev 114772)
+++ trunk/extensions/PageTriage/api/ApiPageTriageList.php 2012-04-06
20:53:22 UTC (rev 114773)
@@ -55,19 +55,16 @@
}
// Start building the massive filter which includes meta data
- $tagConds = self::buildTagQuery( $opts );
$tables = array( 'pagetriage_page', 'page' );
$conds = array( 'ptrp_page_id = page_id' );
- // Show reviewed
- if ( $opts['showreviewed'] ) {
- $conds['ptrp_reviewed'] = array( 0, 1 );
- } else {
+ // Include reviewed
+ if ( !$opts['showreviewed'] ) {
$conds['ptrp_reviewed'] = 0;
}
- // Show redirect
- if ( $opts['showredirs'] ) {
- $conds['page_is_redirect'] = 1;
+ // Include redirect
+ if ( !$opts['showredirs'] ) {
+ $conds['page_is_redirect'] = 0;
}
// Show by namespace
if ( array_key_exists( 'namespace', $opts ) ) {
@@ -78,10 +75,9 @@
$conds[] = 'ptrp_timestamp' . $offsetOperator .
$opts['offset'];
}
+ $tagConds = self::buildTagQuery( $opts );
if ( $tagConds ) {
- $conds[] = '(' . implode( ' OR ', $tagConds ) . ') AND
ptrpt_page_id = ptrp_page_id';
- $options['GROUP BY'] = 'ptrpt_page_id';
- $options['HAVING'] = 'COUNT(ptrpt_tag_id) = ' . count(
$tagConds );
+ $conds[] = $tagConds;
$tables[] = 'pagetriage_page_tags';
}
@@ -106,9 +102,10 @@
}
private static function buildTagQuery( $opts ) {
- $tagConds = array();
+ $dbr = wfGetDB( DB_SLAVE );
+ $tagConds = '';
- $searchableTags = array(
+ $searchableTags = array(
// no categories assigned
'no_category' => array( 'name' =>
'category_count', 'op' => '=', 'val' => '0' ),
// no inbound links
@@ -117,15 +114,20 @@
'non_autoconfirmed_users' => array(
'name' => 'user_autoconfirmed', 'op' => '=', 'val' => '0' ),
// blocked users
'blocked_users' => array( 'name' =>
'user_block_status', 'op' => '=', 'val' => '1' ),
- // show bots
- 'showbots' => array( 'name' =>
'user_bot', 'op' => '=', 'val' => '1' )
+ // bots
+ 'showbots' => array( 'name' =>
'user_bot', 'op' => '=', 'val' => '1' ),
+ // user name
+ 'username' => array( 'name' =>
'user_name', 'op' => '=', 'val' => $opts['username'] )
);
$tags = ArticleMetadata::getValidTags();
+ // only single tag search is allowed
foreach ( $searchableTags as $key => $val ) {
if ( $opts[$key] ) {
- $tagConds[] = " ( ptrpt_tag_id = '" .
$tags[$val['name']] . "' AND ptrpt_value " . $val['op'] . " " . $val['val'] . "
) ";
+ $tagConds = " ptrpt_page_id = ptrp_page_id AND
ptrpt_tag_id = '" . $tags[$val['name']] . "' AND
+ ptrpt_value " . $val['op'] . " "
. $dbr->addQuotes( $val['val'] );
+ break;
}
}
@@ -171,7 +173,9 @@
'blocked_users' => array(
ApiBase::PARAM_TYPE => 'boolean',
),
-
+ 'username' => array(
+ ApiBase::PARAM_TYPE => 'user',
+ ),
);
}
@@ -187,7 +191,8 @@
'no_category' => 'Whether to show only pages with no
category',
'no_inbound_links' => 'Whether to show only pages with
no inbound links',
'non_autoconfirmed_users' => 'Whether to show only
pages created by non auto confirmed users',
- 'blocked_users' => 'Whether to show only pages created
by blocked users'
+ 'blocked_users' => 'Whether to show only pages created
by blocked users',
+ 'username' => 'Show only pages created by username',
);
}
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs