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

Reply via email to