fileSystemRoot/lib/Log.inc"); $oKTConfig =& KTConfig::getSingleton(); $default->log = new KTLegacyLog($oKTConfig->get('urls/logDirectory'), $default->logLevel); $res = $default->log->initialiseLogFile(); if (PEAR::isError($res)) { $this->handleInitError($res); // returns only in checkup return $res; } $default->queryLog = new KTLegacyLog($oKTConfig->get('urls/logDirectory'), $default->logLevel, "query"); $res = $default->queryLog->initialiseLogFile(); if (PEAR::isError($res)) { $this->handleInitError($res); // returns only in checkup return $res; } $default->timerLog = new KTLegacyLog($oKTConfig->get('urls/logDirectory'), $default->logLevel, "timer"); $res = $default->timerLog->initialiseLogFile(); if (PEAR::isError($res)) { $this->handleInitError($res); // returns only in checkup return $res; } require_once("Log.php"); $default->phpErrorLog =& Log::factory('composite'); if ($default->phpErrorLogFile) { $fileLog =& Log::factory('file', $oKTConfig->get('urls/logDirectory') . '/php_error_log', 'KT'); $default->phpErrorLog->addChild($fileLog); } if ($default->developmentWindowLog) { $windowLog =& Log::factory('win', 'LogWindow', 'BLAH'); $default->phpErrorLog->addChild($windowLog); } } // }}} // {{{ setupI18n() /** * setupI * */ function setupI18n () { global $default; if (in_array("gettext", get_loaded_extensions()) && function_exists('gettext') && function_exists('_')) { require_once("$default->fileSystemRoot/lib/i18n/languageFunctions.inc"); require_once("$default->fileSystemRoot/lib/i18n/accept-to-gettext.inc"); if ($default->useAcceptLanguageHeader) { $aInstalledLocales = getInstalledLocales(); $sLocale=al2gt($aInstalledLocales, 'text/html'); $default->defaultLanguage = $sLocale; } putenv('LANG=' . $default->defaultLanguage); setlocale(LC_ALL, $default->defaultLanguage); // Set the text domain $sDomain = 'knowledgeTree'; bindtextdomain($sDomain, $default->fileSystemRoot . "/i18n"); textdomain($sDomain); return true; } else { return false; $default->log->info("Gettext not installed, i18n disabled."); } } // }}} // {{{ setupDB() function setupDB () { global $default; require_once("DB.php"); // DBCompat allows phplib API compatibility require_once(KT_LIB_DIR . '/database/dbcompat.inc'); $default->db = new DBCompat; // DBUtil is the preferred database abstraction require_once(KT_LIB_DIR . '/database/dbutil.inc'); // KTEntity is the database-backed base class require_once(KT_LIB_DIR . '/ktentity.inc'); $dsn = array( 'phptype' => $default->dbType, 'username' => $default->dbUser, 'password' => $default->dbPass, 'hostspec' => $default->dbHost, 'database' => $default->dbName, ); $options = array( 'debug' => 2, 'portability' => DB_PORTABILITY_ERRORS, 'seqname_format' => 'zseq_%s', ); $default->_db = &DB::connect($dsn, $options); if (PEAR::isError($default->_db)) { $this->handleInitError($default->_db); // returns only in checkup return $default->_db; } $default->_db->setFetchMode(DB_FETCHMODE_ASSOC); } /// }}} // {{{ cleanGlobals() function cleanGlobals () { /* * Borrowed from TikiWiki * * Copyright (c) 2002-2004, Luis Argerich, Garland Foster, * Eduardo Polidor, et. al. */ if (ini_get('register_globals')) { foreach (array($_ENV, $_GET, $_POST, $_COOKIE, $_SERVER) as $superglob) { foreach ($superglob as $key => $val) { if (isset($GLOBALS[$key]) && $GLOBALS[$key] == $val) { unset($GLOBALS[$key]); } } } } } // }}} // {{{ cleanMagicQuotesItem() function cleanMagicQuotesItem (&$var) { if (is_array($var)) { foreach ($var as $key => $val) { $this->cleanMagicQuotesItem($var[$key]); } } else { // XXX: Make it look pretty $var = stripslashes($var); } } // }}} // {{{ cleanMagicQuotes() function cleanMagicQuotes () { if (get_magic_quotes_gpc()) { $this->cleanMagicQuotesItem($_GET); $this->cleanMagicQuotesItem($_POST); $this->cleanMagicQuotesItem($_REQUEST); $this->cleanMagicQuotesItem($_COOKIE); } } // }}} // {{{ setupRandomSeed() function setupRandomSeed () { mt_srand(hexdec(substr(md5(microtime()), -8)) & 0x7fffffff); } // }}} // {{{ handleInitError() function handleInitError($oError) { global $checkup; if ($checkup === true) { return; } // XXX: Make it look pretty die($oError->toString()); } // }}} // {{{ handlePHPError() function handlePHPError($code, $message, $file, $line) { global $default; /* Map the PHP error to a Log priority. */ switch ($code) { case E_WARNING: case E_USER_WARNING: $priority = PEAR_LOG_WARNING; break; case E_NOTICE: case E_USER_NOTICE: $priority = PEAR_LOG_NOTICE; break; case E_ERROR: case E_USER_ERROR: $priority = PEAR_LOG_ERR; break; default: $priotity = PEAR_LOG_INFO; } $default->phpErrorLog->log($message . ' in ' . $file . ' at line ' . $line, $priority); return false; } // }}} // {{{ guessRootUrl() function guessRootUrl() { $urlpath = $_SERVER['PHP_SELF']; $bFound = false; $rootUrl = ""; while ($urlpath) { if (file_exists(KT_DIR . '/' . $urlpath)) { $bFound = true; break; } $i = strpos($urlpath, '/'); if ($i === false) { break; } $rootUrl .= substr($urlpath, 0, $i); $urlpath = substr($urlpath, $i + 1); } if ($bFound) { if ($rootUrl) { $rootUrl = '/' . $rootUrl; } return $rootUrl; } return ""; } // }}} // {{{ readConfig function readConfig () { global $default; $oKTConfig =& KTConfig::getSingleton(); $oKTConfig->loadFile(KT_DIR . "/config/config.ini"); foreach (array_keys($oKTConfig->flat) as $k) { $v = $oKTConfig->get($k); if ($v === "default") { continue; } if ($v === "false") { $v = false; } if ($v === "true") { $v = true; } $default->$k = $v; } } // }}} } // }}} $KTInit = new KTInit(); $KTInit->prependPath(KT_DIR . '/thirdparty/pear'); $KTInit->prependPath(KT_DIR . '/thirdparty/Smarty'); require_once('PEAR.php'); // Give everyone access to legacy PHP functions require_once(KT_LIB_DIR . '/util/legacy.inc'); // Give everyone access to KTUtil utility functions require_once(KT_LIB_DIR . '/util/ktutil.inc'); require_once(KT_LIB_DIR . "/config/config.inc.php"); $oKTConfig =& KTConfig::getSingleton(); $oKTConfig->setdefaultns("KnowledgeTree", "fileSystemRoot", KT_DIR); $oKTConfig->setdefaultns("KnowledgeTree", "serverName", $_SERVER['HTTP_HOST']); $oKTConfig->setdefaultns("KnowledgeTree", "sslEnabled", false); if (array_key_exists('HTTPS', $_SERVER)) { if (strtolower($_SERVER['HTTPS']) === 'on') { $oKTConfig->setdefaultns("KnowledgeTree", "sslEnabled", true); } } $oKTConfig->setdefaultns("KnowledgeTree", "rootUrl", $KTInit->guessRootUrl()); $oKTConfig->setdefaultns("config", "useDatabaseConfiguration", false); $oKTConfig->setdefaultns("tweaks", "browseToRoot", false); $oKTConfig->setdefaultns("tweaks", "genericMetaDataRequired", true); $oKTConfig->setdefaultns("tweaks", "phpErrorLogFile", false); $oKTConfig->setdefaultns("tweaks", "developmentWindowLog", false); $oKTConfig->setdefaultns(null, "logLevel", 'INFO'); $oKTConfig->setdefaultns(null, "unzipCommand", 'unzip'); $oKTConfig->setdefaultns(null, "execSearchPath", $_SERVER['PATH']); $KTInit->readConfig(); // instantiate log $loggingSupport = $KTInit->setupLogging(); // Send all PHP errors to a file (and maybe a window) set_error_handler(array('KTInit', 'handlePHPError')); $dbSupport = $KTInit->setupDB(); $KTInit->setupRandomSeed(); require_once("$default->fileSystemRoot/lib/authentication/$default->authenticationClass.inc"); // instantiate system settings class require_once("$default->fileSystemRoot/lib/database/lookup.inc"); require_once("$default->fileSystemRoot/lib/System.inc"); $default->system = new System(); if ($default->useDatabaseConfiguration && $default->system->initialised()) { $aSettings = $default->system->aSettings; for ($i=0; $i$aSettings[$i] = $default->system->get($aSettings[$i]); } } // table mapping entries include("tableMappings.inc"); $i18nLoaded = $KTInit->setupI18n(); if ($i18nLoaded === false) { // define a dummy _ function so gettext is not -required- function _($sString) { return $sString; } } $default->systemVersion = trim(file_get_contents(KT_DIR . '/docs/VERSION.txt')); $default->lastDatebaseVersion = '2.0.2'; $KTInit->cleanGlobals(); $KTInit->cleanMagicQuotes(); // site map definition include("siteMap.inc"); require_once(KT_DIR . '/phpmailer/class.phpmailer.php'); require_once(KT_LIB_DIR . '/session/Session.inc'); require_once(KT_LIB_DIR . '/session/control.inc'); require_once(KT_DIR . '/presentation/Html.inc'); require_once(KT_LIB_DIR . '/plugins/pluginutil.inc.php'); KTPluginUtil::loadPlugins(); ?>