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