public function getWikisList($limit = null, $batch = 1) { wfProfileIn(__METHOD__); $cacheKey = $this->generateCacheKey(__METHOD__); $games = $this->loadFromCache($cacheKey); if (empty($games)) { $games = array(); $wikiFactoryRecommendVar = WikiFactory::getVarByName(self::WF_WIKI_RECOMMEND_VAR, null); if (!empty($wikiFactoryRecommendVar)) { $recommendedIds = WikiFactory::getCityIDsFromVarValue($wikiFactoryRecommendVar->cv_variable_id, true, '='); foreach ($recommendedIds as $wikiId) { $wikiName = WikiFactory::getVarValueByName('wgSitename', $wikiId); $wikiGames = WikiFactory::getVarValueByName('wgWikiTopics', $wikiId); $wikiDomain = str_replace('http://', '', WikiFactory::getVarValueByName('wgServer', $wikiId)); $wikiThemeSettings = WikiFactory::getVarValueByName('wgOasisThemeSettings', $wikiId); $wordmarkUrl = $wikiThemeSettings['wordmark-image-url']; $wordmarkType = $wikiThemeSettings['wordmark-type']; //$wikiLogo = WikiFactory::getVarValueByName( "wgLogo", $wikiId ); $games[] = array('name' => !empty($wikiThemeSettings['wordmark-text']) ? $wikiThemeSettings['wordmark-text'] : $wikiName, 'games' => !empty($wikiGames) ? $wikiGames : '', 'color' => !empty($wikiThemeSettings['wordmark-color']) ? $wikiThemeSettings['wordmark-color'] : '#0049C6', 'backgroundColor' => !empty($wikiThemeSettings['color-page']) ? $wikiThemeSettings['color-page'] : '#FFFFFF', 'domain' => $wikiDomain, 'wordmarkUrl' => $wordmarkType == 'graphic' && !empty($wordmarkUrl) ? $wordmarkUrl : ''); } } else { wfProfileOut(__METHOD__); throw new WikiaException('WikiFactory variable \'' . self::WF_WIKI_RECOMMEND_VAR . '\' not found'); } $this->storeInCache($cacheKey, $games); } $ret = wfPaginateArray($games, $limit, $batch); wfProfileOut(__METHOD__); return $ret; }
public function getWikisList() { $this->wf->profileIn(__METHOD__); $cacheKey = $this->getGlobalCacheKey(self::MEMCACHE_GLOBAL_KEY_TOKEN); $ret = $this->loadFromCache($cacheKey); if (empty($ret)) { $ret = array(); $wikiFactoryRecommendVar = WikiFactory::getVarByName(self::WF_SWITCH_NAME, null); if (!empty($wikiFactoryRecommendVar)) { $gamesIds = WikiFactory::getCityIDsFromVarValue($wikiFactoryRecommendVar->cv_variable_id, true, '='); foreach ($gamesIds as $wikiId) { $game = $this->getSettings($wikiId); if (!empty($game)) { $wikiName = WikiFactory::getVarValueByName('wgSitename', $wikiId); $wikiThemeSettings = WikiFactory::getVarValueByName('wgOasisThemeSettings', $wikiId); $game->name = !empty($wikiThemeSettings['wordmark-text']) ? $wikiThemeSettings['wordmark-text'] : $wikiName; $game->id = WikiFactory::IDtoDB($wikiId); $game->domain = str_replace('http://', '', WikiFactory::getVarValueByName('wgServer', $wikiId)); $ret[$game->id] = $game; } } } else { $this->wf->profileOut(__METHOD__); throw new WikiaException('WikiFactory variable \'' . self::WF_SWITCH_NAME . '\' not found'); } $this->storeInCache($cacheKey, $ret); } $this->app->wf->profileOut(__METHOD__); return $ret; }
/** * Check if the given upload directory name is available for use. * * @access public * @author Michał Roszka <*****@*****.**> * * @param $sDirectoryName the path to check */ public static function wgUploadDirectoryExists($sDirectoryName) { wfProfileIn(__METHOD__); $iVarId = WikiFactory::getVarIdByName('wgUploadDirectory'); // Crash immediately if $iVarId is not a positive integer! \Wikia\Util\Assert::true($iVarId); $aCityIds = WikiFactory::getCityIDsFromVarValue($iVarId, $sDirectoryName, '='); wfProfileOut(__METHOD__); return !empty($aCityIds); }
/** * axWFactorySaveVariable * * ajax method, save variable from form * * @author Krzysztof Krzyżaniak (eloy) <*****@*****.**> * @access public * * @return string encoded in JSON format */ function axWFactorySaveVariable() { global $wgUser, $wgRequest; $error = 0; $return = ""; if (!$wgUser->isAllowed('wikifactory')) { $error++; $return = Wikia::errormsg("You are not allowed to change variable value"); } else { $cv_id = $wgRequest->getVal('varId'); $city_id = $wgRequest->getVal('cityid'); $cv_name = $wgRequest->getVal('varName'); $cv_value = $wgRequest->getVal('varValue'); $cv_variable_type = $wgRequest->getVal('varType'); $reason = $wgRequest->getVal('reason', null); $tag_name = $wgRequest->getVal('tagName'); $tag_wiki_count = 0; $form_id = $wgRequest->getVal("formId", null); #--- check if variable is valid switch ($cv_variable_type) { case "boolean": if ((bool) $cv_value != $cv_value) { $error++; $return = Wikia::errormsg("Syntax error: value is not boolean. Variable not saved."); } else { $return = Wikia::successmsg("Parse OK, variable saved"); $cv_value = (bool) $cv_value; } break; case "integer": if ((int) $cv_value != $cv_value) { $error++; $return = Wikia::errormsg("Syntax error: value is not integer. Variable not saved."); } else { $return = Wikia::successmsg("Parse OK, variable saved."); $cv_value = (int) $cv_value; } break; case "string": $return = Wikia::successmsg("Parse OK, variable saved."); break; default: $tEval = "\$__var_value = {$cv_value};"; /** * catch parse errors */ ob_start(); if (eval($tEval) === FALSE) { $error++; $return = Wikia::errormsg("Syntax error, value is not valid PHP structure. Variable not saved."); } else { $cv_value = $__var_value; /** * now check if it's actually array when we want array) */ if (in_array($cv_variable_type, array("array", "struct", "hash"))) { if (is_array($cv_value)) { $return = Wikia::successmsg("Syntax OK (array), variable saved."); } else { $error++; $return = Wikia::errormsg("Syntax error: value is not array. Variable not saved."); } } else { $return = Wikia::successmsg("Parse OK, variable saved."); } } ob_end_clean(); #--- puts parse error to /dev/null } if (empty($error)) { $varInfo = WikiFactory::getVarById($cv_id, $city_id); if ($varInfo->cv_is_unique) { $wikis = WikiFactory::getCityIDsFromVarValue($cv_id, $cv_value, '='); $count = count($wikis); if ($count == 1 && $wikis[0] != $city_id || $count > 1) { $return = Wikia::errormsg("Value of this variable need to be unique."); $error++; } } } wfRunHooks('WikiFactoryVarSave::AfterErrorDetection', array($cv_id, $city_id, $cv_name, $cv_value, &$return, &$error)); # Save to DB, but only if no errors occurred if (empty($error)) { if (!WikiFactory::setVarByID($cv_id, $city_id, $cv_value, $reason)) { $error++; $return = Wikia::errormsg("Variable not saved because of problems with database. Try again."); } else { /* the one "set" that used this is now disabled, so disabling the call until needed again $tied = WikiFactory::getTiedVariables( $cv_name ); if( $tied ) { $return .= Wikia::successmsg( " This variable is tied with others. Check: ". implode(", ", $tied ) ); } */ if (!empty($tag_name)) { // apply changes to all wikis with given tag $tagsQuery = new WikiFactoryTagsQuery($tag_name); foreach ($tagsQuery->doQuery() as $tagged_wiki_id) { if (WikiFactory::setVarByID($cv_id, $tagged_wiki_id, $cv_value, $reason)) { $tag_wiki_count++; } } $return .= Wikia::successmsg(" ({$tag_wiki_count} wikis affected)"); } } } } if (empty($form_id)) { $div_name = "wf-variable-parse"; } else { $div_name = "wf-variable-parse-{$form_id}"; } return json_encode(array("div-body" => $return, "is-error" => $error, "tag-name" => $tag_name, "tag-wikis" => $tag_wiki_count, "div-name" => $div_name)); }