/**
  * Get an executed query for use on image pages
  *
  * @param Title $title File to query for
  * @return GlobalUsageQuery Query object, already executed
  */
 private static function getImagePageQuery($title)
 {
     $name = $title->getDBkey();
     if (!isset(self::$queryCache[$name])) {
         $query = new GlobalUsageQuery($title);
         $query->filterLocal();
         $query->execute();
         self::$queryCache[$name] = $query;
         // Limit cache size to 100
         if (count(self::$queryCache) > 100) {
             array_shift(self::$queryCache);
         }
     }
     return self::$queryCache[$name];
 }
 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());
         }
     }
 }
 /**
  * Creates as queryer and executes it based on $wgRequest
  */
 private function showResult()
 {
     global $wgRequest;
     $query = new GlobalUsageQuery($this->target);
     // Extract params from $wgRequest
     if ($wgRequest->getText('from')) {
         $query->setOffset($wgRequest->getText('from'));
     } elseif ($wgRequest->getText('to')) {
         $query->setOffset($wgRequest->getText('to'), true);
     }
     $query->setLimit($wgRequest->getInt('limit', 50));
     $query->filterLocal($this->filterLocal);
     // Perform query
     $query->execute();
     // Show result
     global $wgOut;
     // Don't show form element if there is no data
     if ($query->count() == 0) {
         $wgOut->addWikiMsg('globalusage-no-results', $this->target->getPrefixedText());
         return;
     }
     $navbar = $this->getNavBar($query);
     $targetName = $this->target->getText();
     // Top navbar
     $wgOut->addHtml($navbar);
     $wgOut->addHtml('<div id="mw-globalusage-result">');
     foreach ($query->getSingleImageResult() as $wiki => $result) {
         $wgOut->addHtml('<h2>' . wfMsgExt('globalusage-on-wiki', 'parseinline', $targetName, WikiMap::getWikiName($wiki)) . "</h2><ul>\n");
         foreach ($result as $item) {
             $wgOut->addHtml("\t<li>" . self::formatItem($item) . "</li>\n");
         }
         $wgOut->addHtml("</ul>\n");
     }
     $wgOut->addHtml('</div>');
     // Bottom navbar
     $wgOut->addHtml($navbar);
 }
$lastTitle = '';
$db = wfGetDB(DB_SLAVE);
$conds = array('img_media_type' => 'VIDEO', 'img_minor_mime' => $provider);
if (!empty($keyword)) {
    $conds[] = 'lower(img_name) ' . $db->buildLike($keyword, $db->anyString());
}
do {
    $conds[] = 'img_name > ' . $db->addQuotes($lastTitle);
    $result = $db->select(array('image'), array('*'), $conds, __METHOD__, array('LIMIT' => $limit));
    $cnt = 1;
    $subTotal = $result->numRows();
    while ($row = $db->fetchRow($result)) {
        $videoTitle = $row['img_name'];
        echo "\n[Total: {$total} ({$cnt} of {$subTotal})] Video: {$videoTitle}\n";
        // add URLs of pages where they are embedded for each video title
        $query = new GlobalUsageQuery($videoTitle);
        $query->execute();
        $globalUsages = $query->getSingleImageResult();
        if (empty($globalUsages)) {
            $video = array($videoTitle, '');
            writeToFile($video);
        } else {
            foreach ($globalUsages as $wiki => $articles) {
                echo "\tGlobalUsages: Wiki: {$wiki}\n";
                foreach ($articles as $article) {
                    echo "\t\tArticle: Namespace:{$article['namespace']}, Name:{$article['title']}\n";
                    $url = rtrim(WikiFactory::DBtoURL($article['wiki']), '/');
                    $title = Title::newFromText($article['title'], $article['namespace_id']);
                    if ($title instanceof Title) {
                        $url .= $title->getLocalURL();
                        echo "\t\t\tURL: {$url}\n";