]> git.mxchange.org Git - shipsimu.git/blobdiff - inc/config/class_FrameworkConfiguration.php
Login and auth classes added. WARNING: All class config entries must end with _class!
[shipsimu.git] / inc / config / class_FrameworkConfiguration.php
index a1ca42a3aead470ecf98d016c3d3044abc316759..50a4ac18a35d588fe162e4b75c0f17f140c1019e 100644 (file)
@@ -6,12 +6,12 @@
  * in the class loader. See inc/loader/class_ClassLoader.php for instance
  *
  * @see                        ClassLoader
- * @author             Roland Haeder <webmaster@mxchange.org>
- * @version            0.3.0
+ * @author             Roland Haeder <webmaster@ship-simu.org>
+ * @version            0.0.0
  * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
  * @license            GNU GPL 3.0 or any newer version
- * @link               http://www.mxchange.org
- * 
+ * @link               http://www.ship-simu.org
+ *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation, either version 3 of the License, or
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-class FrameworkConfiguration {
-       /**
-        * Include files which shall be included before the main loader.
-        */
-       private $moreIncPre = null;
-
-       /**
-        * Include files which shall be included after the main loader.
-        */
-       private $moreIncPost = null;
-
+class FrameworkConfiguration implements Registerable {
        /**
         * The framework's main configuration array which will be initialized with
         * hard-coded configuration data and might be overwritten/extended by
@@ -49,16 +39,14 @@ class FrameworkConfiguration {
        private static $cfgInstance = null;
 
        // Some constants for the configuration system
-       const EXCEPTION_CONFIG_ENTRY_IS_EMPTY      = 0xc00;
-       const EXCEPTION_CONFIG_ENTRY_WAS_NOT_FOUND = 0xc01;
+       const EXCEPTION_CONFIG_ENTRY_IS_EMPTY      = 0x040;
+       const EXCEPTION_CONFIG_ENTRY_WAS_NOT_FOUND = 0x041;
 
        /**
-        * Private constructor
+        * Protected constructor
         */
-       private function __construct () {
-               // Initialize both include lists
-               $this->moreIncPre  = new ArrayObject();
-               $this->moreIncPost = new ArrayObject();
+       protected function __construct () {
+               // Empty for now
        }
 
        /**
@@ -128,7 +116,7 @@ class FrameworkConfiguration {
        /**
         * A private include loader
         *
-        * @param               $arrayObject            The array object with all include files
+        * @param       $arrayObject    The array object with all include files
         * @return      void
         */
        private function loadIncludes (ArrayObject $arrayObject) {
@@ -156,26 +144,6 @@ class FrameworkConfiguration {
                }
        }
 
-       /**
-        * Load all includes before main loader and clears the array after usage
-        *
-        * @return      void
-        */
-       public function loadPreIncludes () {
-               $this->loadIncludes($this->moreIncPre);
-               unset($this->moreIncPre);
-       }
-
-       /**
-        * Load all includes after main loader and clears the array after usage
-        *
-        * @return      void
-        */
-       public function loadPostIncludes () {
-               $this->loadIncludes($this->moreIncPost);
-               unset($this->moreIncPost);
-       }
-
        /**
         * Define the database type which must be valid and will not be verified.
         *
@@ -201,7 +169,7 @@ class FrameworkConfiguration {
        /**
         * Define the local file path
         *
-        * @param               $path   The database type. See path inc/database/.
+        * @param               $path   Local file path for include files.
         * @return      void
         */
        public function definePath ($path) {
@@ -244,7 +212,7 @@ class FrameworkConfiguration {
                // Is a valid configuration entry provided?
                if (empty($cfgEntry)) {
                        // Entry is empty
-                       throw new ConfigEntryIsEmptyException(__CLASS__, self::EXCEPTION_CONFIG_ENTRY_IS_EMPTY);
+                       throw new ConfigEntryIsEmptyException($this, self::EXCEPTION_CONFIG_ENTRY_IS_EMPTY);
                } elseif (!isset($this->config[$cfgEntry])) {
                        // Entry was not found!
                        throw new ConfigEntryNotFoundException(array(__CLASS__, $cfgEntry), self::EXCEPTION_CONFIG_ENTRY_WAS_NOT_FOUND);
@@ -275,7 +243,7 @@ class FrameworkConfiguration {
                // Is a valid configuration entry provided?
                if (empty($cfgEntry)) {
                        // Entry is empty
-                       throw new ConfigEntryIsEmptyException(__CLASS__, self::EXCEPTION_CONFIG_ENTRY_IS_EMPTY);
+                       throw new ConfigEntryIsEmptyException($this, self::EXCEPTION_CONFIG_ENTRY_IS_EMPTY);
                }
 
                // Set the configuration value
@@ -293,6 +261,41 @@ class FrameworkConfiguration {
        public function __toString () {
                return get_class($this);
        }
+
+       /**
+        * Dectect and return the base URL for all URLs and forms
+        *
+        * @return      $baseUrl        Detected base URL
+        */
+       public function detectBaseUrl() {
+               // Initialize the URL
+               $baseUrl = "http";
+
+               // Do we have HTTPS?
+               if (isset($_SERVER['HTTPS'])) {
+                       // Add the >s< for HTTPS
+                       $baseUrl .= "s";
+               } // END - if
+
+               // Construct the full URL now and secure it against CSRF attacks
+               $baseUrl = $baseUrl . "://" . $this->detectDomain() . dirname($_SERVER['SCRIPT_NAME']);
+
+               // Return the URL
+               return $baseUrl;
+       }
+
+       /**
+        * Detect safely and return the full domain where this script is installed
+        *
+        * @return      $fullDomain             The detected full domain
+        */
+       public function detectDomain () {
+               // Detect the full domain
+               $fullDomain = htmlentities(strip_tags($_SERVER['SERVER_NAME']), ENT_QUOTES);
+
+               // Return it
+               return $fullDomain;
+       }
 } // END - class
 
 // [EOF]