aboutsummaryrefslogtreecommitdiff
path: root/src/SemanticScuttle/header.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/SemanticScuttle/header.php')
-rw-r--r--src/SemanticScuttle/header.php174
1 files changed, 174 insertions, 0 deletions
diff --git a/src/SemanticScuttle/header.php b/src/SemanticScuttle/header.php
new file mode 100644
index 0000000..1f2f12c
--- /dev/null
+++ b/src/SemanticScuttle/header.php
@@ -0,0 +1,174 @@
+<?php
+/**
+ * Base file that is used by shell scripts and www/www-header.php.
+ *
+ * SemanticScuttle - your social bookmark manager.
+ *
+ * PHP version 5.
+ *
+ * @category Bookmarking
+ * @package SemanticScuttle
+ * @author Benjamin Huynh-Kim-Bang <mensonge@users.sourceforge.net>
+ * @author Christian Weiske <cweiske@cweiske.de>
+ * @author Eric Dane <ericdane@users.sourceforge.net>
+ * @license GPL http://www.gnu.org/licenses/gpl.html
+ * @link http://sourceforge.net/projects/semanticscuttle
+ */
+
+if ('@data_dir@' == '@' . 'data_dir@') {
+ //non pear-install
+ $datadir = dirname(__FILE__) . '/../../data/';
+ $wwwdir = dirname(__FILE__) . '/../../www/';
+} else {
+ //pear installation; files are in include path
+ $datadir = '@data_dir@/SemanticScuttle/';
+ //FIXME: when you have multiple installations, the www_dir will be wrong
+ $wwwdir = '@www_dir@/SemanticScuttle/';
+}
+require_once dirname(__FILE__) . '/Environment.php';
+require_once dirname(__FILE__) . '/Config.php';
+
+$cfg = new SemanticScuttle_Config();
+list($configfile, $defaultfile) = $cfg->findFiles();
+if ($defaultfile === null) {
+ header('HTTP/1.0 500 Internal Server Error');
+ echo 'No default configuration file config.default.php found.'
+ . ' This is really, really strange'
+ . "\n";
+ exit(1);
+}
+if ($configfile === null) {
+ header('HTTP/1.0 500 Internal Server Error');
+ echo 'Please copy "config.php.dist" to "config.php" in data/ folder.' . "\n";
+ exit(1);
+}
+set_include_path(
+ get_include_path() . PATH_SEPARATOR
+ . dirname(__FILE__) . '/../'
+);
+
+// 1 // First requirements part (before debug management)
+require_once $defaultfile;
+require_once $configfile;
+
+if (isset($_GET['unittestMode']) && $_GET['unittestMode'] == 1
+) {
+ if ($allowUnittestMode !== true) {
+ header('HTTP/1.0 400 Bad Request');
+ echo "Unittestmode is not allowed\n";
+ exit(2);
+ }
+
+ define('HTTP_UNIT_TEST_MODE', true);
+ define('UNIT_TEST_MODE', true);
+}
+if (defined('UNIT_TEST_MODE')) {
+ //load configuration for unit tests
+ $testingConfigFile = $datadir . '/config.testing.php';
+ if (file_exists($testingConfigFile)) {
+ require_once $testingConfigFile;
+ }
+ //test-specific configuration file
+ $unittestConfigFile = $datadir . '/config.testing-tmp.php';
+ if (file_exists($unittestConfigFile)) {
+ require_once $unittestConfigFile;
+ }
+
+ //make local config vars global - needed for unit tests
+ //run with phpunit
+ foreach (get_defined_vars() as $var => $value) {
+ $GLOBALS[$var] = $value;
+ }
+}
+
+// some constants are based on variables from config file
+require_once 'SemanticScuttle/constants.php';
+
+
+// Debug Management using constants
+if (DEBUG_MODE) {
+ ini_set('display_errors', '1');
+ ini_set('mysql.trace_mode', '1');
+ error_reporting(E_ALL);
+} else {
+ ini_set('display_errors', '0');
+ ini_set('mysql.trace_mode', '0');
+ error_reporting(0);
+}
+
+// 2 // Second requirements part which could display bugs
+// (must come after debug management)
+require_once 'SemanticScuttle/Service.php';
+require_once 'SemanticScuttle/DbService.php';
+require_once 'SemanticScuttle/Service/Factory.php';
+require_once 'SemanticScuttle/functions.php';
+require_once 'SemanticScuttle/Model/Bookmark.php';
+require_once 'SemanticScuttle/Model/UserArray.php';
+require_once 'SemanticScuttle/Model/User/SslClientCert.php';
+
+if (count($GLOBALS['serviceoverrides']) > 0
+ && !defined('UNIT_TEST_MODE')
+) {
+ SemanticScuttle_Service_Factory::$serviceoverrides
+ = $GLOBALS['serviceoverrides'];
+}
+
+// 3 // Third requirements part which import functions from includes/ directory
+
+// UTF-8 functions
+require_once 'SemanticScuttle/utf8.php';
+
+// Translation
+require_once 'php-gettext/gettext.inc';
+$domain = 'messages';
+T_setlocale(LC_MESSAGES, $locale);
+T_bindtextdomain($domain, realpath($datadir . 'locales/'));
+T_bind_textdomain_codeset($domain, 'UTF-8');
+T_textdomain($domain);
+
+// 4 // Session
+if (isset($_SERVER['REMOTE_ADDR'])) {
+ session_start();
+ if ($GLOBALS['enableVoting']) {
+ if (isset($_SESSION['lastUrl'])) {
+ $GLOBALS['lastUrl'] = $_SESSION['lastUrl'];
+ }
+ //this here is hacky, but currently the only way to
+ // differentiate between css/js php files and normal
+ // http files
+ if (!isset($GLOBALS['saveInLastUrl'])
+ || $GLOBALS['saveInLastUrl']
+ ) {
+ $_SESSION['lastUrl'] = $_SERVER['REQUEST_URI'];
+ }
+ }
+}
+
+// 5 // Create mandatory services and objects
+$userservice = SemanticScuttle_Service_Factory::get('User');
+$currentUser = $userservice->getCurrentObjectUser();
+
+$templateservice = SemanticScuttle_Service_Factory::get('Template');
+$tplVars = array();
+$tplVars['currentUser'] = $currentUser;
+$tplVars['userservice'] = $userservice;
+
+// 6 // Force UTF-8 behaviour for server (cannot be moved into top.inc.php which is not included into every file)
+if (!defined('UNIT_TEST_MODE') || defined('HTTP_UNIT_TEST_MODE')) {
+ //API files define that, so we need a way to support both of them
+ if (!isset($httpContentType)) {
+ if (DEBUG_MODE) {
+ //using that mime type makes all javascript nice in Chromium
+ // it also serves as test base if the pages really validate
+ $httpContentType = 'application/xhtml+xml';
+ } else {
+ //until we are sure that all pages validate, we
+ // keep the non-strict mode on for normal installations
+ $httpContentType = 'text/html';
+ }
+ }
+ if ($httpContentType !== false) {
+ header('Content-Type: ' . $httpContentType . '; charset=utf-8');
+ }
+}
+?>