* @file
*/
-if ( !defined( 'MEDIAWIKI' ) ) {
- // Eclipse helper - will be ignored in production
- require_once( 'ApiQueryBase.php' );
-}
-
/**
* A query module to show basic page information.
*
$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
* @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;
}
}
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';
}
}