protected function getCorpDestImageName($wikiUrl, $origImageName, $index = false) { wfProfileIn(__METHOD__); if( $this->options->supressFileNames ) { $wikiDomain = trim( str_replace('http://', '', $wikiUrl), '/'); $wikiDb = WikiFactory::DomainToDB($wikiDomain); } if( $this->options->supressFileNames && !empty($wikiDb) ) { if( $index === false ) { $resultName = UploadVisualizationImageFromFile::VISUALIZATION_MAIN_IMAGE_NAME; $resultNameArr = explode('.', $resultName); $resultName = $resultNameArr[0].','.$wikiDb.UploadVisualizationImageFromFile::VISUALIZATION_ADDITIONAL_IMAGES_EXT; } else { $resultName = UploadVisualizationImageFromFile::VISUALIZATION_ADDITIONAL_IMAGES_BASE_NAME.'-'.$index.','.$wikiDb.UploadVisualizationImageFromFile::VISUALIZATION_ADDITIONAL_IMAGES_EXT; } } else { $resultName = $origImageName; } wfProfileOut(__METHOD__); return $resultName; }
/** * Hooks into WikiFactory to force use of the wiki which the developer * has explicitly set using this panel (if applicable). * * @return boolean true to allow the WikiFactoryLoader to do its other necessary initalization. */ function wfDevBoxForceWiki(WikiFactoryLoader $wikiFactoryLoader) { global $wgDevelEnvironment, $wgExternalSharedDB, $wgCommandLineMode, $wgDevboxDefaultWikiDomain; if ($wgDevelEnvironment) { $forcedWikiDomain = getForcedWikiValue(); $cityId = WikiFactory::DomainToID($forcedWikiDomain); if (!$cityId) { // If the overridden name doesn't exist AT ALL, use a default just to let the panel run. $forcedWikiDomain = $wgDevboxDefaultWikiDomain; $cityId = WikiFactory::DomainToID($forcedWikiDomain); wfDebug(__METHOD__ . ": domain forced to {$forcedWikiDomain}\n"); } if ($wgCommandLineMode) { $cityId = getenv("SERVER_ID"); if (is_numeric($cityId)) { $wikiFactoryLoader->mCityID = $cityId; $wikiFactoryLoader->mWikiID = $cityId; } else { $dbName = getenv("SERVER_DBNAME"); /** * find city_id by database name */ $dbr = WikiFactory::db(DB_SLAVE); $cityId = $dbr->selectField("city_list", array("city_id"), array("city_dbname" => $dbName), __METHOD__); if (is_numeric($cityId)) { $wikiFactoryLoader->mCityID = $cityId; $wikiFactoryLoader->mWikiID = $cityId; } } } if ($cityId) { $wikiFactoryLoader->mServerName = $forcedWikiDomain; // Need to set both in order to get our desired effects. $wikiFactoryLoader->mCityID = $cityId; $wikiFactoryLoader->mWikiID = $cityId; } // This section allows us to use c1 or c2 as a source for wiki databases // Be aware that this means the database has to be loaded in the right cluster according to wikicities! $db = WikiFactory::db(DB_SLAVE); $cluster = $db->selectField('city_list', 'city_cluster', ['city_id' => $cityId], __METHOD__); $wikiFactoryLoader->mVariables["wgDBcluster"] = $cluster; // Final sanity check to make sure our database exists if ($forcedWikiDomain != $wgDevboxDefaultWikiDomain) { // check if the wiki exist on a cluster wfDebug(__METHOD__ . ": checking if wiki #{$cityId} exists on {$cluster} cluster...\n"); $dbname = WikiFactory::DomainToDB($forcedWikiDomain); $db = wfGetDB(DB_MASTER, [], $wgExternalSharedDB . '_' . $cluster); // force master - @see PLATFORM-528 $res = $db->query('SHOW DATABASES ' . $db->buildLike($dbname), __METHOD__); // SHOW DATABASES LIKE 'muppet' if ($res->numRows() === 0) { header('HTTP/1.1 503'); header('X-Error: missing database'); header('Content-Type: text/plain'); die("No local copy of database [{$dbname}] was found on {$cluster} cluster [using {$db->getServer()} DB]."); } } } return true; }
/** * Hooks into WikiFactory to force use of the wiki which the developer * has explicitly set using this panel (if applicable). * * @return true to allow the WikiFactoryLoader to do its other necessary initalization. */ function wfDevBoxForceWiki(&$wikiFactoryLoader) { global $wgDevelEnvironment, $wgWikiFactoryDB, $wgCommandLineMode; if ($wgDevelEnvironment) { $forcedWikiDomain = getForcedWikiValue(); $cityId = WikiFactory::DomainToID($forcedWikiDomain); if (!$cityId) { // If the overridden name doesn't exist AT ALL, use a default just to let the panel run. $forcedWikiDomain = DEVBOX_DEFAULT_WIKI_DOMAIN; $cityId = WikiFactory::DomainToID($forcedWikiDomain); } if ($wgCommandLineMode) { $cityId = getenv("SERVER_ID"); $wikiFactoryLoader->mCityID = $cityId; $wikiFactoryLoader->mWikiID = $cityId; } if ($cityId) { $wikiFactoryLoader->mServerName = $forcedWikiDomain; // Need to set both in order to get our desired effects. $wikiFactoryLoader->mCityID = $cityId; $wikiFactoryLoader->mWikiID = $cityId; } // This section allows us to use c1 or c2 as a source for wiki databases // Be aware that this means the database has to be loaded in the right cluster according to wikicities! $db = wfGetDB(DB_SLAVE, "dump", $wgWikiFactoryDB); $sql = 'SELECT city_cluster from city_list where city_id = ' . $cityId; $result = $db->query($sql, __METHOD__); $row = $result->fetchRow(); $wikiFactoryLoader->mVariables["wgDBcluster"] = $row['city_cluster']; // Final sanity check to make sure our database exists if ($forcedWikiDomain != DEVBOX_DEFAULT_WIKI_DOMAIN) { $dbname = WikiFactory::DomainToDB($forcedWikiDomain); $db1 = wfGetDB(DB_SLAVE, "dump", $wgWikiFactoryDB . '_c1'); $db2 = wfGetDB(DB_SLAVE, "dump", $wgWikiFactoryDB . '_c2'); // lame $devbox_dbs = array_merge(getDevBoxOverrideDatabases($db1), getDevBoxOverrideDatabases($db2)); if (array_search($dbname, $devbox_dbs) === false) { echo "<pre>Fatal Error: No local copy of database [{$dbname}] was found.</pre>"; exit; // fatal error } } // TODO: move this into the config file global $wgReadOnly; $wgReadOnly = false; } return true; }