[ Index ] |
PHP Cross Reference of MediaWiki-1.24.0 |
[Summary view] [Print] [Text view]
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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 14:03:12 2014 | Cross-referenced by PHPXref 0.7.1 |