<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Oct 16, 2006
*
*/
class ApiQueryBacklinks extends ApiQueryGeneratorBase {
- private $params, $rootTitle, $contID, $redirID, $redirect;
+ /**
+ * @var Title
+ */
+ private $rootTitle;
+
+ private $params, $contID, $redirID, $redirect;
private $bl_ns, $bl_from, $bl_table, $bl_code, $bl_title, $bl_sort, $bl_fields, $hasNS;
- private $pageMap, $resultArr;
+
+ /**
+ * Maps ns and title to pageid
+ *
+ * @var array
+ */
+ private $pageMap = array();
+ private $resultArr;
+
+ private $redirTitles = array();
+ private $continueStr = null;
// output element name, database column field prefix, database table
private $backlinksSettings = array(
);
public function __construct( $query, $moduleName ) {
- extract( $this->backlinksSettings[$moduleName] );
+ $settings = $this->backlinksSettings[$moduleName];
+ $prefix = $settings['prefix'];
+ $code = $settings['code'];
$this->resultArr = array();
parent::__construct( $query, $moduleName, $code );
$this->bl_ns = $prefix . '_namespace';
$this->bl_from = $prefix . '_from';
- $this->bl_table = $linktbl;
+ $this->bl_table = $settings['linktbl'];
$this->bl_code = $code;
$this->hasNS = $moduleName !== 'imageusage';
$this->run( $resultPageSet );
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
private function prepareFirstQuery( $resultPageSet = null ) {
/* SELECT page_id, page_title, page_namespace, page_is_redirect
* FROM pagelinks, page WHERE pl_from=page_id
$this->addOption( 'STRAIGHT_JOIN' );
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
private function prepareSecondQuery( $resultPageSet = null ) {
/* SELECT page_id, page_title, page_namespace, page_is_redirect, pl_title, pl_namespace
FROM pagelinks, page WHERE pl_from=page_id
$this->addOption( 'USE INDEX', array( 'page' => 'PRIMARY' ) );
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
private function run( $resultPageSet = null ) {
$this->params = $this->extractRequestParams( false );
$this->redirect = isset( $this->params['redirect'] ) && $this->params['redirect'];
$res = $this->select( __METHOD__ . '::firstQuery' );
$count = 0;
- $this->pageMap = array(); // Maps ns and title to pageid
- $this->continueStr = null;
- $this->redirTitles = array();
+
foreach ( $res as $row ) {
if ( ++ $count > $this->params['limit'] ) {
// We've reached the one extra which shows that there are additional pages to be had. Stop here...