public function upload($targetWikiId, $wikiList) { $isError = false; $targetWikiLang = \WikiFactory::getVarValueByName('wgLanguageCode', $targetWikiId); foreach ($wikiList as $sourceWikiId => $images) { $sourceWikiLang = \WikiFactory::getVarValueByName('wgLanguageCode', $sourceWikiId); $uploadedImages = array(); foreach ($images as $image) { $result = $this->uploadSingleImage($image['id'], $image['name'], $targetWikiId, $sourceWikiId); if ($result['status'] === 0) { $uploadedImages[] = ['id' => $result['id'], 'name' => $result['name']]; $this->finalizeImageUploadStatus($image['id'], $sourceWikiId, \ImageReviewStatuses::STATE_APPROVED); } else { // on error move image back to review, so that upload could be retried $this->finalizeImageUploadStatus($image['id'], $sourceWikiId, \ImageReviewStatuses::STATE_UNREVIEWED); $isError = true; } } if (!empty($uploadedImages) && !in_array($sourceWikiId, $this->corporatePageIds)) { // if images uploaded but not from import script $updateData = $this->getImagesToUpdateInDb($sourceWikiId, $sourceWikiLang, $uploadedImages); if (!empty($updateData)) { // updating city_visualization table $this->model->saveVisualizationData($sourceWikiId, $updateData, $sourceWikiLang); // purging interstitial cache $memcKey = $this->helper->getMemcKey($sourceWikiId, $sourceWikiLang); \F::app()->wg->Memc->set($memcKey, null); } } } if (!empty($uploadedImages) && in_array($sourceWikiId, $this->corporatePageIds)) { // if images uploaded but not from import script // saving changes in city_visualization_images table and purging cache $this->addImagesToPromoteDb($targetWikiId, $targetWikiLang, $uploadedImages); $this->model->purgeWikiPromoteDataCache($targetWikiId, $targetWikiLang); } if (!empty($uploadedImages)) { // if wikis have been added by import script or regularly by Special:Promote $this->model->purgeVisualizationWikisListCache($targetWikiId, $targetWikiLang); } return !$isError; }
/** * @desc Sets the variables values in WikiFactory and returns true if all ends good; otherwise returns false and add information to logs * * @param Array $slotsCfgArr an array where elements are new values of WikiFactory variables and keys of those elements are names of those variables * @return bool * * @author Andrzej 'nAndy' Łukaszewski */ private function saveSlotsConfigInWikiFactory($corpWikiId, $corpWikiLang, $slotsCfgArr) { wfProfileIn(__METHOD__); $statusArr = array(); $result = false; if (is_array($slotsCfgArr)) { foreach ($slotsCfgArr as $wfVar => $wfVarValue) { $status = $this->helper->setWikiFactoryVar($corpWikiId, $wfVar, $wfVarValue); $statusArr[$wfVar] = $status; } } if (in_array(false, $statusArr)) { Wikia::log(__METHOD__, false, "A problem with saving WikiFactory variable(s) occured. Status array: " . print_r($statusArr, true)); $this->errorMsg = wfMessage('manage-wikia-home-error-wikifactory-failure')->text(); } else { $visualization = new CityVisualization(); //todo: put purging those caches to CityVisualization class and fire here only one its method here //purge verticals cache foreach ($visualization->getVerticalsIds() as $verticalId) { $memcKey = $visualization->getVisualizationVerticalWikisListDataCacheKey($verticalId, $corpWikiId, $corpWikiLang); $this->wg->Memc->set($memcKey, null); } //purge visualization list cache $visualization->purgeVisualizationWikisListCache($corpWikiId, $corpWikiLang); $this->infoMsg = wfMessage('manage-wikia-home-wikis-in-slots-success')->text(); $result = true; } wfProfileOut(__METHOD__); return $result; }
public function removeFlag($wikiId, $flag, $corpWikiId, $langCode) { wfProfileIn(__METHOD__); /* @var $visualization CityVisualization */ $visualization = new CityVisualization(); $result = $visualization->removeFlag($wikiId, $langCode, $flag); if ($result === true) { //purge cache //wiki cache $visualization->getList($corpWikiId, $langCode, true); $memcKey = $visualization->getWikiDataCacheKey($visualization->getTargetWikiId($langCode), $wikiId, $langCode); $this->wg->Memc->set($memcKey, null); //visualization list cache $visualization->purgeVisualizationWikisListCache($corpWikiId, $langCode); wfProfileOut(__METHOD__); return true; } wfProfileOut(__METHOD__); return false; }