+ private $table, $tablePrefix, $indexTag;
+ private $fieldTitle = 'title';
+ private $dfltNamespace = NS_MAIN;
+ private $hasNamespace = true;
+ private $useIndex = null;
+ private $props = [];
+
+ public function __construct( ApiQuery $query, $moduleName ) {
+ switch ( $moduleName ) {
+ case 'alllinks':
+ $prefix = 'al';
+ $this->table = 'pagelinks';
+ $this->tablePrefix = 'pl_';
+ $this->useIndex = 'pl_namespace';
+ $this->indexTag = 'l';
+ break;
+ case 'alltransclusions':
+ $prefix = 'at';
+ $this->table = 'templatelinks';
+ $this->tablePrefix = 'tl_';
+ $this->dfltNamespace = NS_TEMPLATE;
+ $this->useIndex = 'tl_namespace';
+ $this->indexTag = 't';
+ break;
+ case 'allfileusages':
+ $prefix = 'af';
+ $this->table = 'imagelinks';
+ $this->tablePrefix = 'il_';
+ $this->fieldTitle = 'to';
+ $this->dfltNamespace = NS_FILE;
+ $this->hasNamespace = false;
+ $this->indexTag = 'f';
+ break;
+ case 'allredirects':
+ $prefix = 'ar';
+ $this->table = 'redirect';
+ $this->tablePrefix = 'rd_';
+ $this->indexTag = 'r';
+ $this->props = [
+ 'fragment' => 'rd_fragment',
+ 'interwiki' => 'rd_interwiki',
+ ];
+ break;
+ default:
+ ApiBase::dieDebug( __METHOD__, 'Unknown module name' );
+ }
+
+ parent::__construct( $query, $moduleName, $prefix );