public function execute() { $params = $this->extractRequestParams(); $prop = array_flip($params['prop']); $pageIds = $this->getPageSet()->getAllTitlesByNamespace(); if (!empty($pageIds[NS_FILE])) { # Create a query and set parameters $pageIds = $pageIds[NS_FILE]; $query = new GlobalUsageQuery(array_keys($pageIds)); if (!is_null($params['continue'])) { if (!$query->setOffset($params['continue'])) { $this->dieUsage('Invalid continue parameter', 'badcontinue'); } } $query->setLimit($params['limit']); $query->filterLocal($params['filterlocal']); # Execute the query $query->execute(); # Create the result $apiResult = $this->getResult(); foreach ($query->getResult() as $image => $wikis) { $pageId = intval($pageIds[$image]); foreach ($wikis as $wiki => $result) { foreach ($result as $item) { if ($item['namespace']) { $title = "{$item['namespace']}:{$item['title']}"; } else { $title = $item['title']; } $result = array('title' => $title, 'wiki' => WikiMap::getWikiName($wiki)); if (isset($prop['url'])) { $result['url'] = WikiMap::getForeignUrl($item['wiki'], $title); } if (isset($prop['pageid'])) { $result['pageid'] = $item['id']; } if (isset($prop['namespace'])) { $result['ns'] = $item['namespace_id']; } $fit = $apiResult->addValue(array('query', 'pages', $pageId, 'globalusage'), null, $result); if (!$fit) { $continue = "{$item['image']}|{$item['wiki']}|{$item['id']}"; $this->setIndexedTagName(); $this->setContinueEnumParameter('continue', $continue); return; } } } } $this->setIndexedTagName(); if ($query->hasMore()) { $this->setContinueEnumParameter('continue', $query->getContinueString()); } } }