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