X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fconfig%2Fclass_FrameworkConfiguration.php;h=e3202603aba1317a735a0bfbf02dcc37b2206f3a;hb=5bf79580029c4f6ee71e6c9e7890169e4b344def;hp=117836175e37a674285e571e74cbe88c861a1a6a;hpb=db61178ebaf96aa11cc16f18af4fedaaf32fe2de;p=shipsimu.git diff --git a/inc/config/class_FrameworkConfiguration.php b/inc/config/class_FrameworkConfiguration.php index 1178361..e320260 100644 --- a/inc/config/class_FrameworkConfiguration.php +++ b/inc/config/class_FrameworkConfiguration.php @@ -2,8 +2,8 @@ /** * A class for the configuration stuff implemented in a singleton design paddern * - * NOTE: We cannot put this in inc/classes/ because it would be loaded (again) - * in the class loader. See inc/loader/class_ClassLoader.php for instance + * NOTE: We cannot put this in inc/classes/ because it would be loaded (again) in + * class loader. See inc/loader/class_ClassLoader.php for instance * * @see ClassLoader * @author Roland Haeder @@ -51,46 +51,18 @@ class FrameworkConfiguration implements Registerable { // Empty for now } - /** - * "Create" a configuration instance - * - * @param $enableDebug Wether enable debug mode (default: off) - * @return $cfgInstance An instance of this configuration class - */ - public final static function createFrameworkConfiguration ($enableDebug = false) { - /** - * For singleton design pattern because we only need a one-time-run - * through the initial configuration. - */ - if (is_null(self::$cfgInstance)) { - // CFG: ERROR-REPORTING - @error_reporting(E_ALL | E_STRICT); - - /** - * Shall we enable the debug mode? - */ - if ($enableDebug) { - define('DEBUG_MODE', true); - } - - /** - * Crate a config instance - */ - self::$cfgInstance = new FrameworkConfiguration(); - } - - /** - * Return the instance - */ - return self::$cfgInstance; - } - /** * Getter for an instance of this class * * @return $cfgInstance An instance of this class */ public final static function getInstance () { + // is the instance there? + if (is_null(self::$cfgInstance)) { + // Create a config instance + self::$cfgInstance = new FrameworkConfiguration(); + } // END - if + return self::$cfgInstance; } @@ -139,7 +111,7 @@ class FrameworkConfiguration implements Registerable { // Base path added? (Uni* / Windows) if ((substr($inc, 0, 1) != "/") && (substr($inc, 1, 1) != ":")) { // Generate FQFN - $fqfn = sprintf("%s/inc/extra/%s", PATH, $inc); + $fqfn = sprintf("%s/inc/extra/%s", $this->readConfig('base_path'), $inc); } // END - if } // END - if @@ -149,63 +121,14 @@ class FrameworkConfiguration implements Registerable { } // END - if } - /** - * Define the database type which must be valid and will not be verified. - * - * @param $type The database type. See path inc/database/. - * @return void - */ - public function defineDatabaseType ($type) { - // Is it defined or not? - if (defined('_DB_TYPE')) { - // Already defined! But we cannot throw an exception here... :( - ApplicationEntryPoint::app_die(sprintf("[%s:] Please define the database type only once in your application!", - __CLASS__ - )); - } - - // Set the constant - define('_DB_TYPE', (string) $type); - } - - /** - * Define the local file path - * - * @param $path Local file path for include files. - * @return void - */ - public function definePath ($path) { - // Cast to string - $path = (string) $path; - - // Replace backslashes with slashes - $path = str_replace("\\", "/", $path); - - // Is it defined or not? - if ((!is_dir($path)) || (!is_readable($path))) { - // Is not a valid path - ApplicationEntryPoint::app_die(sprintf("[%s:] Invalid path (not found) specified. Please make sure it is created.", - __CLASS__ - )); - } elseif (defined('PATH')) { - // Already defined! But we cannot throw an exception here... :( - ApplicationEntryPoint::app_die(sprintf("[%s:] Please define the local file path only once in your application.", - __CLASS__ - )); - } - - // Define path here - define('PATH', $path); - } - /** * Read a configuration element. * - * @param $cfgEntry The configuration element + * @param $cfgEntry The configuration element * @return $cfgValue The fetched configuration value - * @throws ConfigEntryIsEmptyException If $cfgEntry is empty + * @throws ConfigEntryIsEmptyException If $cfgEntry is empty * @throws ConfigEntryNotFoundException If a configuration element - * was not found + * was not found */ public function readConfig ($cfgEntry) { // Cast to string @@ -232,8 +155,8 @@ class FrameworkConfiguration implements Registerable { /** * Set a configuration entry. * - * @param $cfgEntry The configuration entry we want to add/change - * @param $cfgValue The configuration value we want to set + * @param $cfgEntry The configuration entry we want to add/change + * @param $cfgValue The configuration value we want to set * @return void * @throws ConfigEntryIsEmptyException If $cfgEntry is empty */ @@ -280,7 +203,7 @@ class FrameworkConfiguration implements Registerable { } // END - if // Construct the full URL now and secure it against CSRF attacks - $baseUrl = $baseUrl . "://" . $this->detectDomain() . dirname($_SERVER['SCRIPT_NAME']); + $baseUrl = $baseUrl . "://" . $this->detectDomain() . $this->detectScriptPath(); // Return the URL return $baseUrl; @@ -292,13 +215,37 @@ class FrameworkConfiguration implements Registerable { * @return $fullDomain The detected full domain */ public function detectDomain () { - // Detect the full domain - $fullDomain = htmlentities(strip_tags($_SERVER['SERVER_NAME']), ENT_QUOTES); + // Full domain is localnet.invalid by default + $fullDomain = "localnet.invalid"; + + // Is the server name there? + if (isset($_SERVER['SERVER_NAME'])) { + // Detect the full domain + $fullDomain = htmlentities(strip_tags($_SERVER['SERVER_NAME']), ENT_QUOTES); + } // END - if // Return it return $fullDomain; } + /** + * Detect safely the script path without trailing slash which is the part + * between "http://your-domain.invalid/" and "script-name.php" + */ + public function detectScriptPath () { + // Default is empty + $scriptPath = ""; + + // Is the scriptname set? + if (isset($_SERVER['SCRIPT_NAME'])) { + // Get dirname of it + $scriptPath = dirname($_SERVER['SCRIPT_NAME']); + } // END - if + + // Return it + return $scriptPath; + } + /** * Getter for field name *