Payment introduced, minor rewrites
[shipsimu.git] / inc / includes.php
index 28a56100fa3892ec99391fda6f94e445d55236f0..7e3f5c9ffc6bf37b059d87261772ff30b4e29bc6 100644 (file)
@@ -3,9 +3,10 @@
  * Loads more include files by using the generic class loader
  *
  * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
+ * @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.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
  * 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/>.
  */
 
-// Load the class loader first
-require(sprintf("%sinc/loader/class_ClassLoader%s",
-       PATH,
-       FrameworkConfiguration::getInstance()->readConfig("php_extension"))
-);
+// Get config instance
+$cfg = FrameworkConfiguration::getInstance();
 
-/**
- * Is the devel package included?
- */
-if (is_dir(sprintf("%sdevel", PATH))) {
-       /**
-        * Load all development includes
-        */
-       ClassLoader::getInstance()->loadClasses("devel");
+// Include the class loader function
+require(sprintf("%sinc/loader/class_ClassLoader.php", $cfg->readConfig('base_path')));
+
+// Does the user has an application specified?
+if (!empty($_GET['app'])) {
+       // Set the application from string
+       $application = (string) $_GET['app'];
+} elseif (!empty($_SERVER['argv'][1])) {
+       // Set the application from string
+       $application = (string) $_SERVER['argv'][1];
+       $app = explode('=', trim($application));
+       if ($app[0] == 'app') {
+               // Application is valid!
+               $application = trim($app[1]);
+       } else {
+               // Invalid entry found, first must be "app"!
+               $application = $cfg->readConfig('default_application');
+       }
+} else {
+       // Set the "application selector" application
+       $application = $cfg->readConfig('default_application');
 }
 
-/**
- * Load additional include files before main load
- */
-FrameworkConfiguration::getInstance()->loadPreIncludes();
+// Secure it, by keeping out tags
+$application = htmlentities(strip_tags($application), ENT_QUOTES);
+
+// Secure it a little more with a reg.exp.
+$application = preg_replace('/([^a-z0-9_-])+/i', "", $application);
+
+// Set the application name for later usage
+$cfg->setConfigEntry('app_name', $application);
 
 /**
- * Load all main include files
- *
- * +++ MAIN LOADER! +++
+ * Autoload-function
  *
+ * @param      $className      Name of the class to load
+ * @return     void
  */
-
-///////////////////////////////////////////////////
-// Maybe we need this place for future releases? //
-///////////////////////////////////////////////////
+function __autoload ($className) {
+       // Try to include this class
+       ClassLoader::getInstance()->includeClass($className);
+}
 
 /**
- * Load additional include files after main load
+ * Is the devel package included?
  */
-FrameworkConfiguration::getInstance()->loadPostIncludes();
+if (is_dir(sprintf("%sdevel", $cfg->readConfig('base_path')))) {
+       /**
+        * Load all development includes
+        */
+       ClassLoader::getInstance()->loadClasses('devel');
+}
+
+// Shall we include additional configs where you can configure some things? Then
+// Load matching config
+ClassLoader::getInstance()->loadExtraConfigs();
 
 // [EOF]
 ?>