public static function getCityLink($cityId) { global $wgCityId, $wgSitename; $domains = WikiFactory::getDomains($cityId); if ($wgCityId == $cityId) { // Hack based on the fact we should only ask for current wiki's sitename $text = $wgSitename; } else { // The fallback to return anything $text = "[" . WikiFactory::IDtoDB($cityId) . ":{$cityId}]"; } if (!empty($domains)) { $text = Xml::tags('a', array("href" => "http://" . $domains[0]), $text); } return $text; }
/** * Do the actual work. All child classes will need to implement this */ public function execute() { if (!isset($_ENV['SERVER_ID'])) { die(1); } $this->wikiId = $_ENV['SERVER_ID']; $this->domain = WikiFactory::getDomains($this->wikiId)[0]; if (empty($this->domain)) { die; } $ids = $this->getIds(); $this->domain = isset($this->solrDomain) ? $this->solrDomain : $this->domain; $batches = array_chunk($ids, self::ARRAY_SIZE); $b = count($batches); foreach ($batches as $key => $batch) { echo "\nPrepare data for batch: {$key} out of {$b}\n"; $data = $this->prepareData($batch, $key + 1, $b); echo "\nData prepared!\n"; $this->setInSolr($data); echo "Data stored!"; } }
/** * This function makes all of the outbound links in the page re-written to go through Special:Outbound. */ function efOutboundScreen($url, $text, &$link, $attribs, $linktype) { global $wgCityId, $wgUser, $wgOutboundScreenConfig, $wgTitle; static $whiteList; // skip logic when in FCK global $wgRTEParserEnabled; if (!empty($wgRTEParserEnabled)) { return true; } if (strpos($url, 'http://') !== 0) { return true; } // setup functions can call MakeExternalLink before wgTitle is set RT#144229 if (empty($wgTitle)) { return true; } // if there are no other ads on this page, do not show exitstitial $response = F::app()->sendRequest('Ad', 'config'); $adSlots = $response->getVal('conf'); if (empty($adSlots) || !sizeof($adSlots)) { return true; } $loggedIn = $wgUser->isLoggedIn(); if ($wgOutboundScreenConfig['anonsOnly'] == false || $wgOutboundScreenConfig['anonsOnly'] == true && !$loggedIn) { if (!is_array($whiteList)) { $whiteList = array(); $whiteListContent = wfMsgExt('outbound-screen-whitelist', array('language' => 'en')); if (!empty($whiteListContent)) { $lines = explode("\n", $whiteListContent); foreach ($lines as $line) { if (strpos($line, '* ') === 0) { $whiteList[] = trim($line, '* '); } } } $wikiDomains = WikiFactory::getDomains($wgCityId); if ($wikiDomains !== false) { $whiteList = array_merge($wikiDomains, $whiteList); } } // Devboxes run on different domains than just what is in WikiFactory. global $wgDevelEnvironment; if ($wgDevelEnvironment) { array_unshift($whiteList, empty($_SERVER['SERVER_NAME']) ? "" : $_SERVER['SERVER_NAME']); } $isWhitelisted = false; foreach ($whiteList as $whiteListedUrl) { $matches = null; preg_match('/' . $whiteListedUrl . '/i', $url, $matches); if (isset($matches[0])) { $isWhitelisted = true; break; } } if (!$isWhitelisted) { $link = '<a href="' . $url . '" rel="nofollow" class="external exitstitial">' . $text . '</a>'; return false; } } return true; }
function axWFactoryDomainCRUD($type = "add") { global $wgRequest, $wgUser, $wgExternalSharedDB, $wgOut; $sDomain = $wgRequest->getVal("domain"); $city_id = $wgRequest->getVal("cityid"); if (!$wgUser->isAllowed('wikifactory')) { $wgOut->readOnlyPage(); #--- later change to something reasonable return; } if (empty($city_id)) { $wgOut->readOnlyPage(); #--- later change to something reasonable return; } $dbw = wfGetDB(DB_MASTER, array(), $wgExternalSharedDB); $aDomains = array(); $aResponse = array(); $sInfo = ""; switch ($type) { case "add": if (!preg_match("/^[\\w\\.\\-]+\$/", $sDomain)) { /** * check if domain is valid (a im sure that there is function * somewhere for such purpose */ $sInfo .= "Error: Domain <em>{$sDomain}</em> is invalid (or empty) so it's not added."; } else { $added = WikiFactory::addDomain($city_id, $sDomain); if ($added) { $sInfo .= "Success: Domain <em>{$sDomain}</em> added."; } else { $sInfo .= "Error: Domain <em>{$sDomain}</em> is already used so it's not added."; } } break; case "change": $sNewDomain = $wgRequest->getVal("newdomain"); #--- first, check if domain is not used $oRes = $dbw->select("city_domains", "count(*) as count", array("city_domain" => $sNewDomain), __METHOD__); $oRow = $dbw->fetchObject($oRes); $dbw->freeResult($oRes); if ($oRow->count > 0) { #--- domain is used already $sInfo .= "<strong>Error: Domain <em>{$sNewDomain}</em> is already used so no change was done.</strong>"; } elseif (!preg_match("/^[\\w\\.\\-]+\$/", $sNewDomain)) { #--- check if domain is valid (a im sure that there is function #--- somewhere for such purpose $sInfo .= "<strong>Error: Domain <em>{$sNewDomain}</em> is invalid so no change was done..</strong>"; } else { #--- reall change domain $dbw->update("city_domains", array("city_domain" => strtolower($sNewDomain)), array("city_id" => $city_id, "city_domain" => strtolower($sDomain))); $dbw->commit(); $sInfo .= "Success: Domain <em>{$sDomain}</em> changed to <em>{$sNewDomain}</em>."; } break; case "remove": $removed = WikiFactory::removeDomain($city_id, $sDomain); if ($removed) { $sInfo .= "Success: Domain <em>{$sDomain}</em> removed."; } else { $sInfo .= "Failed: Domain <em>{$sDomain}</em> was not removed."; } break; case "status": $iNewStatus = $wgRequest->getVal("status"); if (in_array($iNewStatus, array(0, 1, 2))) { #--- updatec city_list table $dbw->update("city_list", array("city_public" => $iNewStatus), array("city_id" => $city_id)); $dbw->commit(); switch ($iNewStatus) { case 0: $aResponse["div-body"] = "<strong>changed to disabled</strong>"; break; case 1: $aResponse["div-body"] = "<strong>changed to enabled</strong>"; break; case 2: $aResponse["div-body"] = "<strong>changed to redirected</strong>"; break; } } else { $aResponse["div-body"] = "wrong status number"; } $aResponse["div-name"] = "wf-domain-span"; break; case "cancel": $sInfo .= "<em>Action cancelled</em>"; break; case "setmain": $setmain = WikiFactory::setmainDomain($city_id, $sDomain); if ($setmain) { $sInfo .= "Success: Domain <em>{$sDomain}</em> set as main."; } else { $sInfo .= "Failed: Domain <em>{$sDomain}</em> was not set as main."; } break; } #--- get actuall domain list $aDomains = WikiFactory::getDomains($city_id, true); #--- send response, return domain array $aResponse["domains"] = $aDomains; $aResponse["info"] = $sInfo; return json_encode($aResponse); }
function formatRow($result) { global $wgLang; $linker = $this->getSkin(); $time = $wgLang->timeanddate(wfTimestamp(TS_MW, $result->slog_timestamp), true); /* switch for different type of log message */ switch ($result->slog_type) { case 'block': $domains = WikiFactory::getDomains($result->slog_city); $siteurl = $result->slog_site; if (!empty($domains)) { $siteurl = Xml::tags('a', array("href" => "http://" . $domains[0]), $siteurl); } $out = wfMsg('stafflog-blockmsg', array($time, $linker->userLink($result->slog_user, $result->slog_user_name), $linker->userLink($result->slog_userdst, $result->slog_user_namedst), $siteurl, strlen($result->slog_comment) > 0 ? $result->slog_comment : "-")); break; case 'piggyback': $msg = $result->slog_action == "login" ? "stafflog-piggybackloginmsg" : "stafflog-piggybacklogoutmsg"; $out = wfMsg($msg, array($time, $linker->userLink($result->slog_user, $result->slog_user_name), $linker->userLink($result->slog_userdst, $result->slog_user_namedst))); break; case 'wikifactor': $out = $time . ' ' . $result->slog_comment; break; default: $out = ""; wfRunHooks('StaffLog::formatRow', array($result->slog_type, $result, $time, $linker, &$out)); break; } /* $title = Title::makeTitle( NS_CATEGORY, $result->cat_title ); $titleText = $this->getSkin()->makeLinkObj( $title, htmlspecialchars( $title->getText() ) ); $count = wfMsgExt( 'nmembers', array( 'parsemag', 'escape' ), $wgLang->formatNum( $result->cat_pages ) ); */ //; return Xml::tags('li', null, $out) . "\n"; }
private function getData() { /** * build query */ wfProfileIn(__METHOD__); $offset = $this->mOffset ? array("OFFSET" => $this->mOffset) : array(); $dbr = WikiFactory::db(DB_SLAVE); $sth = $dbr->select(array("city_domains"), array("distinct city_id"), array("city_domain " . $dbr->buildLike($dbr->anyString(), $this->mPart, $dbr->anyString())), __METHOD__, array("ORDER BY" => "city_id", "LIMIT" => $this->mLimit + 1) + $offset); $data = array(); $counter = 0; while ($row = $dbr->fetchObject($sth)) { $obj = new stdClass(); $obj->wiki = WikiFactory::getWikiByID($row->city_id); $obj->domains = WikiFactory::getDomains($row->city_id); if ($counter <= $this->mLimit) { $data[] = $obj; } else { /** * there's next page */ } } wfProfileOut(__METHOD__); return $data; }
private static function getExitstitialUrlsWhiteList() { global $wgDevelEnvironment, $wgCityId; static $whiteList = null; if (is_array($whiteList)) { return $whiteList; } $whiteList = []; $whiteListContent = wfMsgExt('outbound-screen-whitelist', array('language' => 'en')); if (!empty($whiteListContent)) { $lines = explode("\n", $whiteListContent); foreach ($lines as $line) { if (strpos($line, '* ') === 0) { $whiteList[] = trim($line, '* '); } } } $wikiDomains = WikiFactory::getDomains($wgCityId); if ($wikiDomains !== false) { $whiteList = array_merge($wikiDomains, $whiteList); } // Devboxes run on different domains than just what is in WikiFactory. if ($wgDevelEnvironment && !empty($_SERVER['SERVER_NAME'])) { array_unshift($whiteList, $_SERVER['SERVER_NAME']); } return $whiteList; }
/** * getLocalEnvURL * * return URL specific to current env * (production, preview, verify, devbox, sandbox) * * @access public * @author pbablok@wikia * @static * * @param string $url general URL pointing to any server * * @return string url pointing to local env */ public static function getLocalEnvURL($url) { // first - normalize URL $regexp = '/^http:\\/\\/([^\\/]+)\\/(.*)$/'; if (preg_match($regexp, $url, $groups) === 0) { // on fail at least return original url return $url; } $server = $groups[1]; $address = $groups[2]; $devbox = ''; // what do we use? // en.wikiname.wikia.com // wikiname.wikia.com // (preview/verify/sandbox).en.wikiname.wikia.com // (preview/verify/sandbox).wikiname.wikia.com // en.wikiname.developer.wikia-dev.com // wikiname.developer.wikia-dev.com $servers = array('preview.', 'sandboxs1.', 'verify.'); foreach ($servers as $serv) { if (strpos($server, $serv) === 0) { $server = substr($server, strlen($serv)); } } $regexp = '/\\.([^\\.]+)\\.wikia-dev\\.com$/'; if (preg_match($regexp, $server, $groups) === 1) { // devbox $devbox = $groups[1]; $server = str_replace('.' . $devbox . '.wikia-dev.com', '', $server); } else { $server = str_replace('.wikia.com', '', $server); } /* * commenting out code to reduce number of changes * that needs to be reviewed for error related to * preview.video db connections */ // put the address back into shape and return if (empty($_SERVER['SERVER_NAME'])) { // maintenance script global $wgDevelEnvironment, $wgCityId; $domains = WikiFactory::getDomains($wgCityId); $domains[] = "localhost"; if (empty($wgDevelEnvironment)) { return 'http://' . $domains[0] . '/' . $address; } else { $hostname = str_replace('dev-', '', gethostname()) . '.wikia-dev.com'; $domain = str_replace('wikia.com', $hostname, $domains[0]); return 'http://' . $domain . '/' . $address; } } $servername = $_SERVER['SERVER_NAME']; if (strpos($servername, 'preview.') !== false) { return 'http://preview. ' . $server . '.wikia.com/' . $address; } if (strpos($servername, 'verify.') !== false) { return 'http://verify. ' . $server . '.wikia.com/' . $address; } if (strpos($servername, 'sandboxs1.') !== false) { return 'http://sandbox. ' . $server . '.wikia.com/' . $address; } if (preg_match($regexp, $servername, $groups) === 1) { return 'http://' . $server . '.' . $groups[1] . '.wikia-dev.com/' . $address; } // by default return original address return $url; }
/** * @access private */ private function moveOldDomains($wikiaId, $newWikiaId = null, $remove = 0) { global $wgExternalArchiveDB; $aDomainsToMove = WikiFactory::getDomains($wikiaId); if (!empty($aDomainsToMove)) { #-- connect to dataware; $dbs = wfGetDB(DB_MASTER, array(), $wgExternalArchiveDB); if (!is_null($dbs)) { #-- save domains in archive DB $dbs->begin(); foreach ($aDomainsToMove as $domain) { $dbs->insert("city_domains", array("city_id" => $wikiaId, "city_domain" => $domain, "city_timestamp" => wfTimestampNow(), "city_new_id" => $newWikiaId), __METHOD__); } $dbs->commit(); } } }