Revision: 50181
Author:   catrope
Date:     2009-05-04 15:10:42 +0000 (Mon, 04 May 2009)

Log Message:
-----------
API: (bug 18518) Add clprop=hidden to prop=categories. Also use 
array_flip($params['prop']) to simplify code

Modified Paths:
--------------
    trunk/phase3/RELEASE-NOTES
    trunk/phase3/includes/api/ApiQueryCategories.php

Modified: trunk/phase3/RELEASE-NOTES
===================================================================
--- trunk/phase3/RELEASE-NOTES  2009-05-04 14:51:46 UTC (rev 50180)
+++ trunk/phase3/RELEASE-NOTES  2009-05-04 15:10:42 UTC (rev 50181)
@@ -133,6 +133,7 @@
 * (bug 18617) Add xml:space="preserve" attribute to relevant tags in XML output
 * Added PHP and database version to meta=siteinfo output
 * (bug 18533) Add readonly message to meta=siteinfo output
+* (bug 18518) Add clprop=hidden to prop=categories
 
 === Languages updated in 1.16 ===
 

Modified: trunk/phase3/includes/api/ApiQueryCategories.php
===================================================================
--- trunk/phase3/includes/api/ApiQueryCategories.php    2009-05-04 14:51:46 UTC 
(rev 50180)
+++ trunk/phase3/includes/api/ApiQueryCategories.php    2009-05-04 15:10:42 UTC 
(rev 50181)
@@ -53,7 +53,7 @@
                        return; // nothing to do
 
                $params = $this->extractRequestParams();
-               $prop = $params['prop'];
+               $prop = array_flip((array)$params['prop']);
                $show = array_flip((array)$params['show']);
 
                $this->addFields(array (
@@ -61,23 +61,8 @@
                        'cl_to'
                ));
 
-               $fld_sortkey = $fld_timestamp = false;
-               if (!is_null($prop)) {
-                       foreach($prop as $p) {
-                               switch ($p) {
-                                       case 'sortkey':
-                                               $this->addFields('cl_sortkey');
-                                               $fld_sortkey = true;
-                                               break;
-                                       case 'timestamp':
-                                               
$this->addFields('cl_timestamp');
-                                               $fld_timestamp = true;
-                                               break;
-                                       default :
-                                               ApiBase :: dieDebug(__METHOD__, 
"Unknown prop=$p");
-                               }
-                       }
-               }
+               $this->addFieldsIf('cl_sortkey', isset($prop['sortkey']));
+               $this->addFieldsIf('cl_timestamp', isset($prop['timestamp']));
 
                $this->addTables('categorylinks');
                $this->addWhereFld('cl_from', 
array_keys($this->getPageSet()->getGoodTitles()));
@@ -107,10 +92,11 @@
                }
                if(isset($show['hidden']) && isset($show['!hidden']))
                        $this->dieUsage("Incorrect parameter - mutually 
exclusive values may not be supplied", 'show');
-               if(isset($show['hidden']) || isset($show['!hidden']))
+               if(isset($show['hidden']) || isset($show['!hidden']) || 
isset($prop['hidden']))
                {
                        $this->addOption('STRAIGHT_JOIN');
                        $this->addTables(array('page', 'page_props'));
+                       $this->addFieldsIf('pp_propname', 
isset($prop['hidden']));
                        $this->addJoinConds(array(
                                'page' => array('LEFT JOIN', array(
                                        'page_namespace' => NS_CATEGORY,
@@ -121,7 +107,7 @@
                        ));
                        if(isset($show['hidden']))
                                $this->addWhere(array('pp_propname IS NOT 
NULL'));
-                       else
+                       else if(isset($show['!hidden']))
                                $this->addWhere(array('pp_propname IS NULL'));
                }
 
@@ -150,10 +136,12 @@
                                $title = Title :: makeTitle(NS_CATEGORY, 
$row->cl_to);
                                $vals = array();
                                ApiQueryBase :: addTitleInfo($vals, $title);
-                               if ($fld_sortkey)
+                               if (isset($prop['sortkey']))
                                        $vals['sortkey'] = $row->cl_sortkey;
-                               if ($fld_timestamp)
+                               if (isset($prop['timestamp']))
                                        $vals['timestamp'] = 
wfTimestamp(TS_ISO_8601, $row->cl_timestamp);
+                               if (isset($prop['hidden']) && 
!is_null($row->pp_propname))
+                                       $vals['hidden'] = '';
 
                                $fit = $this->addPageSubItem($row->cl_from, 
$vals);
                                if(!$fit)
@@ -190,6 +178,7 @@
                                ApiBase :: PARAM_TYPE => array (
                                        'sortkey',
                                        'timestamp',
+                                       'hidden',
                                )
                        ),
                        'show' => array(



_______________________________________________
MediaWiki-CVS mailing list
MediaWiki-CVS@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to