X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fapi%2FApiQueryPageProps.php;h=e51c7ab07eefee379ab2df20a5f931bca1de332f;hb=a316b0788f91deaf32b3cc7a496188b3cbb85462;hp=eb8eaa92f4862d50f8cedb2c9031043faa2a25c3;hpb=c5c5092156b6a805a9552587375d6594dd3a5f67;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiQueryPageProps.php b/includes/api/ApiQueryPageProps.php index eb8eaa92f4..e51c7ab07e 100644 --- a/includes/api/ApiQueryPageProps.php +++ b/includes/api/ApiQueryPageProps.php @@ -24,11 +24,6 @@ * @file */ -if ( !defined( 'MEDIAWIKI' ) ) { - // Eclipse helper - will be ignored in production - require_once( 'ApiQueryBase.php' ); -} - /** * A query module to show basic page information. * @@ -54,14 +49,21 @@ class ApiQueryPageProps extends ApiQueryBase { $this->addTables( 'page_props' ); $this->addFields( array( 'pp_page', 'pp_propname', 'pp_value' ) ); - $this->addWhereFld( 'pp_page', array_keys( $pages ) ); + $this->addWhereFld( 'pp_page', array_keys( $pages ) ); if ( $this->params['continue'] ) { $this->addWhere( 'pp_page >=' . intval( $this->params['continue'] ) ); } + if ( $this->params['prop'] ) { + $this->addWhereFld( 'pp_propname', $this->params['prop'] ); + } + # Force a sort order to ensure that properties are grouped by page - $this->addOption( 'ORDER BY', 'pp_page' ); + # But only if pp_page is not constant in the WHERE clause. + if ( count( $pages ) > 1 ) { + $this->addOption( 'ORDER BY', 'pp_page' ); + } $res = $this->select( __METHOD__ ); $currentPage = 0; # Id of the page currently processed @@ -108,11 +110,12 @@ class ApiQueryPageProps extends ApiQueryBase { * @return bool True if it fits in the result */ private function addPageProps( $result, $page, $props ) { - $fit = $result->addValue( array( 'query', 'pages' ), $page, $props ); + $fit = $result->addValue( array( 'query', 'pages', $page ), 'pageprops', $props ); if ( !$fit ) { $this->setContinueEnumParameter( 'continue', $page ); } + return $fit; } @@ -121,24 +124,33 @@ class ApiQueryPageProps extends ApiQueryBase { } public function getAllowedParams() { - return array( 'continue' => null ); + return array( + 'continue' => null, + 'prop' => array( + ApiBase::PARAM_ISMULTI => true, + ), + ); } public function getParamDescription() { - return array( 'continue' => 'When more results are available, use this to continue' ); + return array( + 'continue' => 'When more results are available, use this to continue', + 'prop' => 'Only list these props. Useful for checking whether a ' . + 'certain page uses a certain page prop', + ); } public function getDescription() { return 'Get various properties defined in the page content'; } - protected function getExamples() { + public function getExamples() { return array( 'api.php?action=query&prop=pageprops&titles=Category:Foo', ); } - public function getVersion() { - return __CLASS__ . ': $Id$'; + public function getHelpUrls() { + return 'https://www.mediawiki.org/wiki/API:Properties#pageprops_.2F_pp'; } }