summaryrefslogtreecommitdiff
path: root/includes/api/ApiQueryExtLinksUsage.php
diff options
context:
space:
mode:
authorPierre Schmitz <pierre@archlinux.de>2011-06-22 11:28:20 +0200
committerPierre Schmitz <pierre@archlinux.de>2011-06-22 11:28:20 +0200
commit9db190c7e736ec8d063187d4241b59feaf7dc2d1 (patch)
tree46d1a0dee7febef5c2d57a9f7b972be16a163b3d /includes/api/ApiQueryExtLinksUsage.php
parent78677c7bbdcc9739f6c10c75935898a20e1acd9e (diff)
update to MediaWiki 1.17.0
Diffstat (limited to 'includes/api/ApiQueryExtLinksUsage.php')
-rw-r--r--includes/api/ApiQueryExtLinksUsage.php117
1 files changed, 63 insertions, 54 deletions
diff --git a/includes/api/ApiQueryExtLinksUsage.php b/includes/api/ApiQueryExtLinksUsage.php
index 0e171e44..ecd9e699 100644
--- a/includes/api/ApiQueryExtLinksUsage.php
+++ b/includes/api/ApiQueryExtLinksUsage.php
@@ -1,11 +1,10 @@
<?php
-
-/*
- * Created on July 7, 2007
- *
+/**
* API for MediaWiki 1.8+
*
- * Copyright (C) 2006 Yuri Astrakhan <Firstname><Lastname>@gmail.com
+ * Created on July 7, 2007
+ *
+ * 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
@@ -19,13 +18,15 @@
*
* 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
*/
if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ( 'ApiQueryBase.php' );
+ require_once( 'ApiQueryBase.php' );
}
/**
@@ -34,7 +35,7 @@ if ( !defined( 'MEDIAWIKI' ) ) {
class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
public function __construct( $query, $moduleName ) {
- parent :: __construct( $query, $moduleName, 'eu' );
+ parent::__construct( $query, $moduleName, 'eu' );
}
public function execute() {
@@ -50,7 +51,6 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
}
private function run( $resultPageSet = null ) {
-
$params = $this->extractRequestParams();
$protocol = $params['protocol'];
@@ -58,17 +58,16 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
// Find the right prefix
global $wgUrlProtocols;
- if ( $protocol && !in_array( $protocol, $wgUrlProtocols ) )
- {
+ if ( $protocol && !in_array( $protocol, $wgUrlProtocols ) ) {
foreach ( $wgUrlProtocols as $p ) {
if ( substr( $p, 0, strlen( $protocol ) ) === $protocol ) {
$protocol = $p;
break;
}
}
- }
- else
+ } else {
$protocol = null;
+ }
$db = $this->getDB();
$this->addTables( array( 'page', 'externallinks' ) ); // must be in this order for 'USE INDEX'
@@ -76,20 +75,21 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
$this->addWhere( 'page_id=el_from' );
$this->addWhereFld( 'page_namespace', $params['namespace'] );
- if ( !is_null( $query ) || $query != '' )
- {
- if ( is_null( $protocol ) )
+ if ( !is_null( $query ) || $query != '' ) {
+ if ( is_null( $protocol ) ) {
$protocol = 'http://';
+ }
$likeQuery = LinkFilter::makeLikeArray( $query, $protocol );
- if ( !$likeQuery )
+ if ( !$likeQuery ) {
$this->dieUsage( 'Invalid query', 'bad_query' );
+ }
$likeQuery = LinkFilter::keepOneWildcard( $likeQuery );
$this->addWhere( 'el_index ' . $db->buildLike( $likeQuery ) );
- }
- else if ( !is_null( $protocol ) )
+ } elseif ( !is_null( $protocol ) ) {
$this->addWhere( 'el_index ' . $db->buildLike( "$protocol", $db->anyString() ) );
+ }
$prop = array_flip( $params['prop'] );
$fld_ids = isset( $prop['ids'] );
@@ -97,7 +97,7 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
$fld_url = isset( $prop['url'] );
if ( is_null( $resultPageSet ) ) {
- $this->addFields( array (
+ $this->addFields( array(
'page_id',
'page_namespace',
'page_title'
@@ -110,14 +110,15 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
$limit = $params['limit'];
$offset = $params['offset'];
$this->addOption( 'LIMIT', $limit + 1 );
- if ( isset ( $offset ) )
+ if ( isset( $offset ) ) {
$this->addOption( 'OFFSET', $offset );
+ }
$res = $this->select( __METHOD__ );
$result = $this->getResult();
$count = 0;
- while ( $row = $db->fetchObject( $res ) ) {
+ foreach ( $res as $row ) {
if ( ++ $count > $limit ) {
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
$this->setContinueEnumParameter( 'offset', $offset + $limit );
@@ -126,17 +127,18 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
if ( is_null( $resultPageSet ) ) {
$vals = array();
- if ( $fld_ids )
+ if ( $fld_ids ) {
$vals['pageid'] = intval( $row->page_id );
+ }
if ( $fld_title ) {
- $title = Title :: makeTitle( $row->page_namespace, $row->page_title );
+ $title = Title::makeTitle( $row->page_namespace, $row->page_title );
ApiQueryBase::addTitleInfo( $vals, $title );
}
- if ( $fld_url )
+ if ( $fld_url ) {
$vals['url'] = $row->el_to;
+ }
$fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $vals );
- if ( !$fit )
- {
+ if ( !$fit ) {
$this->setContinueEnumParameter( 'offset', $offset + $count - 1 );
break;
}
@@ -144,7 +146,6 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
$resultPageSet->processDbRow( $row );
}
}
- $db->freeResult( $res );
if ( is_null( $resultPageSet ) ) {
$result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ),
@@ -159,44 +160,52 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
$protocols[] = substr( $p, 0, strpos( $p, ':' ) );
}
- return array (
- 'prop' => array (
- ApiBase :: PARAM_ISMULTI => true,
- ApiBase :: PARAM_DFLT => 'ids|title|url',
- ApiBase :: PARAM_TYPE => array (
+ return array(
+ 'prop' => array(
+ ApiBase::PARAM_ISMULTI => true,
+ ApiBase::PARAM_DFLT => 'ids|title|url',
+ ApiBase::PARAM_TYPE => array(
'ids',
'title',
'url'
)
),
- 'offset' => array (
- ApiBase :: PARAM_TYPE => 'integer'
+ 'offset' => array(
+ ApiBase::PARAM_TYPE => 'integer'
),
- 'protocol' => array (
- ApiBase :: PARAM_TYPE => $protocols,
- ApiBase :: PARAM_DFLT => '',
+ 'protocol' => array(
+ ApiBase::PARAM_TYPE => $protocols,
+ ApiBase::PARAM_DFLT => '',
),
'query' => null,
- 'namespace' => array (
- ApiBase :: PARAM_ISMULTI => true,
- ApiBase :: PARAM_TYPE => 'namespace'
+ 'namespace' => array(
+ ApiBase::PARAM_ISMULTI => true,
+ ApiBase::PARAM_TYPE => 'namespace'
),
- 'limit' => array (
- ApiBase :: PARAM_DFLT => 10,
- ApiBase :: PARAM_TYPE => 'limit',
- ApiBase :: PARAM_MIN => 1,
- ApiBase :: PARAM_MAX => ApiBase :: LIMIT_BIG1,
- ApiBase :: PARAM_MAX2 => ApiBase :: LIMIT_BIG2
+ 'limit' => array(
+ ApiBase::PARAM_DFLT => 10,
+ ApiBase::PARAM_TYPE => 'limit',
+ ApiBase::PARAM_MIN => 1,
+ ApiBase::PARAM_MAX => ApiBase::LIMIT_BIG1,
+ ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
)
);
}
public function getParamDescription() {
- return array (
- 'prop' => 'What pieces of information to include',
+ $p = $this->getModulePrefix();
+ return array(
+ 'prop' => array(
+ 'What pieces of information to include',
+ ' ids - Adds the id of page',
+ ' title - Adds the title and namespace id of the page',
+ ' url - Adds the URL used in the page',
+ ),
'offset' => 'Used for paging. Use the value returned for "continue"',
- 'protocol' => array( 'Protocol of the url. If empty and euquery set, the protocol is http.',
- 'Leave both this and euquery empty to list all external links' ),
+ 'protocol' => array(
+ "Protocol of the url. If empty and {$p}query set, the protocol is http.",
+ "Leave both this and {$p}query empty to list all external links"
+ ),
'query' => 'Search string without protocol. See [[Special:LinkSearch]]. Leave empty to list all external links',
'namespace' => 'The page namespace(s) to enumerate.',
'limit' => 'How many pages to return.'
@@ -206,7 +215,7 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
public function getDescription() {
return 'Enumerate pages that contain a given URL';
}
-
+
public function getPossibleErrors() {
return array_merge( parent::getPossibleErrors(), array(
array( 'code' => 'bad_query', 'info' => 'Invalid query' ),
@@ -214,12 +223,12 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
}
protected function getExamples() {
- return array (
+ return array(
'api.php?action=query&list=exturlusage&euquery=www.mediawiki.org'
);
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryExtLinksUsage.php 69932 2010-07-26 08:03:21Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryExtLinksUsage.php 70647 2010-08-07 19:59:42Z ialex $';
}
}