Esempio n. 1
0
	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;
	}
Esempio n. 2
0
/**
 * 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;
}
Esempio n. 3
0
/**
 * 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;
}