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());
         }
     }
 }