diff options
Diffstat (limited to 'includes/api/ApiQueryBase.php')
-rw-r--r-- | includes/api/ApiQueryBase.php | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/includes/api/ApiQueryBase.php b/includes/api/ApiQueryBase.php index 65e10ab7..a15754ce 100644 --- a/includes/api/ApiQueryBase.php +++ b/includes/api/ApiQueryBase.php @@ -70,6 +70,10 @@ abstract class ApiQueryBase extends ApiBase { /** * Override this method to request extra fields from the pageSet * using $pageSet->requestField('fieldName') + * + * Note this only makes sense for 'prop' modules, as 'list' and 'meta' + * modules should not be using the pageset. + * * @param ApiPageSet $pageSet */ public function requestExtraData( $pageSet ) { @@ -91,6 +95,13 @@ abstract class ApiQueryBase extends ApiBase { } /** + * @see ApiBase::getParent() + */ + public function getParent() { + return $this->getQuery(); + } + + /** * Get the Query database connection (read-only) * @return DatabaseBase */ @@ -361,12 +372,7 @@ abstract class ApiQueryBase extends ApiBase { isset( $extraQuery['join_conds'] ) ? (array)$extraQuery['join_conds'] : array() ); - // getDB has its own profileDBIn/Out calls - $db = $this->getDB(); - - $this->profileDBIn(); - $res = $db->select( $tables, $fields, $where, $method, $options, $join_conds ); - $this->profileDBOut(); + $res = $this->getDB()->select( $tables, $fields, $where, $method, $options, $join_conds ); return $res; } @@ -450,7 +456,7 @@ abstract class ApiQueryBase extends ApiBase { */ protected function addPageSubItems( $pageId, $data ) { $result = $this->getResult(); - $result->setIndexedTagName( $data, $this->getModulePrefix() ); + ApiResult::setIndexedTagName( $data, $this->getModulePrefix() ); return $result->addValue( array( 'query', 'pages', intval( $pageId ) ), $this->getModuleName(), @@ -475,7 +481,7 @@ abstract class ApiQueryBase extends ApiBase { if ( !$fit ) { return false; } - $result->setIndexedTagName_internal( array( 'query', 'pages', $pageId, + $result->addIndexedTagName( array( 'query', 'pages', $pageId, $this->getModuleName() ), $elemname ); return true; @@ -487,7 +493,7 @@ abstract class ApiQueryBase extends ApiBase { * @param string|array $paramValue Parameter value */ protected function setContinueEnumParameter( $paramName, $paramValue ) { - $this->getResult()->setContinueParam( $this, $paramName, $paramValue ); + $this->getContinuationManager()->addContinueParam( $this, $paramName, $paramValue ); } /** @@ -502,7 +508,8 @@ abstract class ApiQueryBase extends ApiBase { */ public function titlePartToKey( $titlePart, $namespace = NS_MAIN ) { $t = Title::makeTitleSafe( $namespace, $titlePart . 'x' ); - if ( !$t ) { + if ( !$t || $t->hasFragment() ) { + // Invalid title (e.g. bad chars) or contained a '#'. $this->dieUsageMsg( array( 'invalidtitle', $titlePart ) ); } if ( $namespace != $t->getNamespace() || $t->isExternal() ) { @@ -578,7 +585,6 @@ abstract class ApiQueryBase extends ApiBase { protected function checkRowCount() { wfDeprecated( __METHOD__, '1.24' ); $db = $this->getDB(); - $this->profileDBIn(); $rowcount = $db->estimateRowCount( $this->tables, $this->fields, @@ -586,7 +592,6 @@ abstract class ApiQueryBase extends ApiBase { __METHOD__, $this->options ); - $this->profileDBOut(); if ( $rowcount > $this->getConfig()->get( 'APIMaxDBRows' ) ) { return false; @@ -705,13 +710,24 @@ abstract class ApiQueryGeneratorBase extends ApiQueryBase { */ protected function setContinueEnumParameter( $paramName, $paramValue ) { if ( $this->mGeneratorPageSet !== null ) { - $this->getResult()->setGeneratorContinueParam( $this, $paramName, $paramValue ); + $this->getContinuationManager()->addGeneratorContinueParam( $this, $paramName, $paramValue ); } else { parent::setContinueEnumParameter( $paramName, $paramValue ); } } /** + * @see ApiBase::getHelpFlags() + * + * Corresponding messages: api-help-flag-generator + */ + protected function getHelpFlags() { + $flags = parent::getHelpFlags(); + $flags[] = 'generator'; + return $flags; + } + + /** * Execute this module as a generator * @param ApiPageSet $resultPageSet All output should be appended to this object */ |