/** * Override handling of action=purge * @return bool */ public function doPurge() { $this->loadFile(); if ($this->mFile->exists()) { wfDebug('ImagePage::doPurge purging ' . $this->mFile->getName() . "\n"); DeferredUpdates::addUpdate(new HTMLCacheUpdate($this->mTitle, 'imagelinks')); $this->mFile->purgeCache(['forThumbRefresh' => true]); } else { wfDebug('ImagePage::doPurge no image for ' . $this->mFile->getName() . "; limiting purge to cache only\n"); // even if the file supposedly doesn't exist, force any cached information // to be updated (in case the cached information is wrong) $this->mFile->purgeCache(['forThumbRefresh' => true]); } if ($this->mRepo) { // Purge redirect cache $this->mRepo->invalidateImageRedirect($this->mTitle); } return parent::doPurge(); }
public function execute() { global $IP; require_once "{$IP}/extensions/wikihow/common/S3.php"; define('WH_USE_BACKUP_DB', true); $pageIds = array(); // allow for the input files to be specified on the command line if ($this->getOption('stream')) { $data = stream_get_contents(STDIN); $data = array_map('trim', explode("\n", $data)); foreach ($data as $inputTitle) { $title = Title::newFromText($inputTitle, 6); if (!$title) { continue; } $id = $title->getArticleID(); $pageIds[] = $id; } } // if provided title, add that to the array $titleText = $this->getOption('title'); if ($titleText) { $title = Title::newFromText($titleText, 6); $id = $title->getArticleID(); $pageIds[] = $id; } // if there is a start, add articles to the array $start = $this->getOption('start'); if ($start) { $dbr = wfGetDB(DB_SLAVE); $options = array("page_id > {$start}", "page_namespace = 6"); $stop = $this->getOption('stop'); if ($stop) { $options[] = "page_id < {$stop}"; } $res = $dbr->select("page", "page_id", $options, __FILE__); // put them all into an array first foreach ($res as $row) { $pageIds[] = $row->page_id; } } $purgeTitles = array(); $filesToPurgeFromCDN = array(); foreach ($pageIds as $pageId) { $title = Title::newFromID($pageId); $file = wfLocalFile($title); if (!$file) { continue; } $userName = $file->getUser("text"); if (WatermarkSupport::isWikihowCreator($userName)) { decho("file", $title->getText(), false); if ($this->getOption('s3')) { decho("will purge from s3", false, false); self::purgeThumbnailsFromS3($file); } if ($this->getOption('regenerate')) { decho("will regenerate thumbnails", $file->getThumbnails(), false); WatermarkSupport::recreateThumbnails($file); decho("regeneration of thumbnails complete", false, false); } if ($this->getOption('purgelocal')) { decho("will purge local cache thumbnails", $file->getThumbnails(), false); $file->purgeCache(); // get titles that point here so we can purge them and // regenerate those pages so the thumbnails come back $purgeTitles = array_unique(array_merge($purgeTitles, ImageHelper::getLinkedArticles($title))); decho("purging of thumbnails complete", false, false); } if ($this->getOption('cdn')) { $filesToPurgeFromCDN[] = $file; } } } //purge the titles that have linked to these images foreach ($purgeTitles as $linkedTitle) { decho('will purge', $linkedTitle, false); // will now get the parser output to refresh the thumbnail // or else cdn may get reset before the thumbnails are regenerated $wp = new WikiPage($linkedTitle); $wp->doPurge(); $po = ParserOptions::newFromUser($wgUser); $wp->getParserOutput($po); } if ($this->getOption('cdn')) { decho("will purge from cdn", false, false); $this->purgeThumbnailsFromCDNetworks($filesToPurgeFromCDN); } }
/** * Override handling of action=purge */ public function doPurge() { $this->loadFile(); if ($this->mFile->exists()) { wfDebug('ImagePage::doPurge purging ' . $this->mFile->getName() . "\n"); $update = new HTMLCacheUpdate($this->mTitle, 'imagelinks'); $update->doUpdate(); $this->mFile->upgradeRow(); $this->mFile->purgeCache(array('forThumbRefresh' => true)); } else { wfDebug('ImagePage::doPurge no image for ' . $this->mFile->getName() . "; limiting purge to cache only\n"); // even if the file supposedly doesn't exist, force any cached information // to be updated (in case the cached information is wrong) $this->mFile->purgeCache(array('forThumbRefresh' => true)); } return parent::doPurge(); }
/** * Override handling of action=purge */ public function doPurge() { global $wgCityId; $this->loadFile(); if ($this->mFile->exists()) { wfDebug('ImagePage::doPurge purging ' . $this->mFile->getName() . "\n"); // Wikia Change Start @author Scott Rabin (srabin@wikia-inc.com) $task = (new \Wikia\Tasks\Tasks\HTMLCacheUpdateTask())->wikiId($wgCityId)->title($this->mTitle); $task->call('purge', 'imagelinks'); $task->queue(); // Wikia Change End $this->mFile->upgradeRow(); $this->mFile->purgeCache(array('forThumbRefresh' => true)); } else { wfDebug('ImagePage::doPurge no image for ' . $this->mFile->getName() . "; limiting purge to cache only\n"); // even if the file supposedly doesn't exist, force any cached information // to be updated (in case the cached information is wrong) $this->mFile->purgeCache(array('forThumbRefresh' => true)); } return parent::doPurge(); }