[ Index ]

PHP Cross Reference of MediaWiki-1.24.0

title

Body

[close]

/includes/api/ -> ApiQueryPagePropNames.php (source)

   1  <?php
   2  /**
   3   * Created on January 21, 2013
   4   *
   5   * Copyright © 2013 Brad Jorsch <[email protected]>
   6   *
   7   * This program is free software; you can redistribute it and/or modify
   8   * it under the terms of the GNU General Public License as published by
   9   * the Free Software Foundation; either version 2 of the License, or
  10   * (at your option) any later version.
  11   *
  12   * This program is distributed in the hope that it will be useful,
  13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15   * GNU General Public License for more details.
  16   *
  17   * You should have received a copy of the GNU General Public License along
  18   * with this program; if not, write to the Free Software Foundation, Inc.,
  19   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  20   * http://www.gnu.org/copyleft/gpl.html
  21   *
  22   * @file
  23   * @since 1.21
  24   * @author Brad Jorsch
  25   */
  26  
  27  /**
  28   * A query module to list used page props
  29   *
  30   * @ingroup API
  31   * @since 1.21
  32   */
  33  class ApiQueryPagePropNames extends ApiQueryBase {
  34  
  35  	public function __construct( ApiQuery $query, $moduleName ) {
  36          parent::__construct( $query, $moduleName, 'ppn' );
  37      }
  38  
  39  	public function getCacheMode( $params ) {
  40          return 'public';
  41      }
  42  
  43  	public function execute() {
  44          $params = $this->extractRequestParams();
  45  
  46          $this->addTables( 'page_props' );
  47          $this->addFields( 'pp_propname' );
  48          $this->addOption( 'DISTINCT' );
  49          $this->addOption( 'ORDER BY', 'pp_propname' );
  50  
  51          if ( $params['continue'] ) {
  52              $cont = explode( '|', $params['continue'] );
  53              $this->dieContinueUsageIf( count( $cont ) != 1 );
  54  
  55              // Add a WHERE clause
  56              $this->addWhereRange( 'pp_propname', 'newer', $cont[0], null );
  57          }
  58  
  59          $limit = $params['limit'];
  60          $this->addOption( 'LIMIT', $limit + 1 );
  61  
  62          $result = $this->getResult();
  63          $count = 0;
  64          foreach ( $this->select( __METHOD__ ) as $row ) {
  65              if ( ++$count > $limit ) {
  66                  // We've reached the one extra which shows that there are
  67                  // additional pages to be had. Stop here...
  68                  $this->setContinueEnumParameter( 'continue', $row->pp_propname );
  69                  break;
  70              }
  71  
  72              $vals = array();
  73              $vals['propname'] = $row->pp_propname;
  74              $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $vals );
  75              if ( !$fit ) {
  76                  $this->setContinueEnumParameter( 'continue', $row->pp_propname );
  77                  break;
  78              }
  79          }
  80  
  81          $result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'p' );
  82      }
  83  
  84  	public function getAllowedParams() {
  85          return array(
  86              'continue' => null,
  87              'limit' => array(
  88                  ApiBase::PARAM_TYPE => 'limit',
  89                  ApiBase::PARAM_DFLT => 10,
  90                  ApiBase::PARAM_MIN => 1,
  91                  ApiBase::PARAM_MAX => ApiBase::LIMIT_BIG1,
  92                  ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
  93              ),
  94          );
  95      }
  96  
  97  	public function getParamDescription() {
  98          return array(
  99              'continue' => 'When more results are available, use this to continue',
 100              'limit' => 'The maximum number of pages to return',
 101          );
 102      }
 103  
 104  	public function getDescription() {
 105          return 'List all page prop names in use on the wiki.';
 106      }
 107  
 108  	public function getExamples() {
 109          return array(
 110              'api.php?action=query&list=pagepropnames' => 'Get first 10 prop names',
 111          );
 112      }
 113  
 114  	public function getHelpUrls() {
 115          return 'https://www.mediawiki.org/wiki/API:Pagepropnames';
 116      }
 117  }


Generated: Fri Nov 28 14:03:12 2014 Cross-referenced by PHPXref 0.7.1