123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- <?php
- /**
- * Copyright © 2006 Yuri Astrakhan "<Firstname><Lastname>@gmail.com"
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- */
- /**
- * @ingroup API
- */
- abstract class ApiQueryGeneratorBase extends ApiQueryBase {
- private $mGeneratorPageSet = null;
- /**
- * Switch this module to generator mode. By default, generator mode is
- * switched off and the module acts like a normal query module.
- * @since 1.21 requires pageset parameter
- * @param ApiPageSet $generatorPageSet ApiPageSet object that the module will get
- * by calling getPageSet() when in generator mode.
- */
- public function setGeneratorMode( ApiPageSet $generatorPageSet ) {
- if ( $generatorPageSet === null ) {
- ApiBase::dieDebug( __METHOD__, 'Required parameter missing - $generatorPageSet' );
- }
- $this->mGeneratorPageSet = $generatorPageSet;
- }
- /**
- * Indicate whether the module is in generator mode
- * @since 1.28
- * @return bool
- */
- public function isInGeneratorMode() {
- return $this->mGeneratorPageSet !== null;
- }
- /**
- * Get the PageSet object to work on.
- * If this module is generator, the pageSet object is different from other module's
- * @return ApiPageSet
- */
- protected function getPageSet() {
- if ( $this->mGeneratorPageSet !== null ) {
- return $this->mGeneratorPageSet;
- }
- return parent::getPageSet();
- }
- /**
- * Overrides ApiBase to prepend 'g' to every generator parameter
- * @param string $paramName Parameter name
- * @return string Prefixed parameter name
- */
- public function encodeParamName( $paramName ) {
- if ( $this->mGeneratorPageSet !== null ) {
- return 'g' . parent::encodeParamName( $paramName );
- } else {
- return parent::encodeParamName( $paramName );
- }
- }
- /**
- * Overridden to set the generator param if in generator mode
- * @param string $paramName Parameter name
- * @param string|array $paramValue Parameter value
- */
- protected function setContinueEnumParameter( $paramName, $paramValue ) {
- if ( $this->mGeneratorPageSet !== null ) {
- $this->getContinuationManager()->addGeneratorContinueParam( $this, $paramName, $paramValue );
- } else {
- parent::setContinueEnumParameter( $paramName, $paramValue );
- }
- }
- /** @inheritDoc */
- protected function getHelpFlags() {
- // Corresponding messages: api-help-flag-generator
- $flags = parent::getHelpFlags();
- $flags[] = 'generator';
- return $flags;
- }
- /**
- * Execute this module as a generator
- * @param ApiPageSet $resultPageSet All output should be appended to this object
- */
- abstract public function executeGenerator( $resultPageSet );
- }
|