From 00fcfb8b9d95b22a000332cbe6c774bbbb15ed7a Mon Sep 17 00:00:00 2001
From: =?utf8?q?Roland=20H=C3=A4der?= <roland@mxchange.org>
Date: Wed, 11 Jun 2008 23:11:39 +0000
Subject: [PATCH] New starter/init style applied

---
 application/hub/init.php   | 42 ++++++++++++++++++++----------------
 application/hub/loader.php |  9 +++-----
 index.php                  | 44 +++++++++++++++++++-------------------
 3 files changed, 48 insertions(+), 47 deletions(-)

diff --git a/application/hub/init.php b/application/hub/init.php
index 4ac89d331..67d489cbc 100644
--- a/application/hub/init.php
+++ b/application/hub/init.php
@@ -32,20 +32,6 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-// Get an instance of the helper
-$eval = sprintf("\$app = %s::getInstance();",
-	FrameworkConfiguration::getInstance()->readConfig("app_helper_class")
-);
-eval($eval);
-
-// Set application name and version
-$app->setAppName("MXChange Hub");
-$app->setAppVersion("0.0.0");
-$app->setAppShortName("mxhub");
-
-// Get's our IP address
-$_SERVER['SERVER_ADDR'] = ConsoleTools::aquireSelfIPAddress();
-
 // Initialize output system
 require(PATH . "inc/output.php");
 
@@ -57,10 +43,28 @@ require(PATH . "inc/language.php");
 
 // This application needs a database connection then we have to simply include
 // the inc/database.php script
-require(sprintf("%sinc/database%s",
-	PATH,
-	FrameworkConfiguration::getInstance()->readConfig("php_extension")
-));
+require(PATH . "inc/database.php");
+
+// Generate call-back function
+$callback = sprintf("%s::getInstance",
+	FrameworkConfiguration::getInstance()->readConfig('app_helper_class')
+);
+
+// Get an instance of the helper
+$app = call_user_func_array($callback, array());
+
+// Set application name and version
+$app->setAppName("MXChange Hub");
+$app->setAppVersion("0.0.0");
+$app->setAppShortName("mxhub");
+
+// Get's our IP address
+$_SERVER['SERVER_ADDR'] = ConsoleTools::aquireSelfIPAddress();
+
+// Set instances
+$app->setFileIoInstance($io);
+$app->setLanguageInstance($lang);
+$app->setDatabaseInstance($db);
 
 // [EOF]
-?>
+?>
\ No newline at end of file
diff --git a/application/hub/loader.php b/application/hub/loader.php
index 08c2de014..1c153b69c 100644
--- a/application/hub/loader.php
+++ b/application/hub/loader.php
@@ -21,17 +21,14 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-// Is the instance variable set?
-if (!isset($application)) {
-	// We need this!
-	ApplicationEntryPoint::app_die("[Main:] Interne Variable <strong>application</strong> nicht gefunden!");
-}
+// Get config instance
+$cfg = FrameworkConfiguration::getInstance();
 
 // Load all classes for the application
 foreach ($lowerClasses as $class) {
 	// Try to load the application classes
 	try {
-		ClassLoader::getInstance()->loadClasses(sprintf("%s/%s/%s", FrameworkConfiguration::getInstance()->readConfig("application_path"), $application, $class));
+		ClassLoader::getInstance()->loadClasses(sprintf("%s/%s/%s", $cfg->readConfig("application_path"), $cfg->readConfig("app_name"), $class));
 	} catch (PathIsNoDirectoryException $e) {
 		ApplicationEntryPoint::app_die(sprintf("[Main:] Kann Applikationsklassen im Pfad <strong>%s</strong> nicht laden. Reason: <strong>%s</strong>",
 			$class,
diff --git a/index.php b/index.php
index 9cabcb0a8..947baf3c9 100644
--- a/index.php
+++ b/index.php
@@ -1,4 +1,8 @@
 <?php
+// Developer mode active? Comment out if no dev!
+define('DEVELOPER', true);
+
+//xdebug_start_trace();
 /**
  * The main class with the entry point to the whole application. This class
  * "emulates" Java(tm)'s entry point call. Additionally it covers local
@@ -33,8 +37,8 @@ class ApplicationEntryPoint {
 	 * @return	void
 	 */
 	private static $instances = array (
-		'cfg',	// The configuration system
-		'loader',	// The class loader system
+		'cfg',    // The configuration system
+		'loader', // The class loader system
 		'debug',  // Debug output
 		'db',     // Database layer
 		'io',     // Base I/O system (local file [or network])
@@ -66,35 +70,30 @@ class ApplicationEntryPoint {
 		}
 
 		// Get some instances
-		$tpl = FrameworkConfiguration::getInstance()->readConfig("tpl_engine");
+		$tpl = FrameworkConfiguration::getInstance()->readConfig('tpl_engine');
 		$lang = LanguageSystem::getInstance();
-		$io = FileIOHandler::getInstance();
+		$io = FileIoHandler::getInstance();
 
 		// Is the template engine loaded?
 		if ((class_exists($tpl)) && (is_object($lang)) && (is_object($io))) {
 			// Use the template engine for putting out (nicer look) the message
 			try {
-				$eval = sprintf("\$tplEngine = %s::create%s(\"%s%s\", \$lang, \$io);",
-					FrameworkConfiguration::getInstance()->readConfig("tpl_engine"),
-					FrameworkConfiguration::getInstance()->readConfig("tpl_engine"),
-					PATH,
-					FrameworkConfiguration::getInstance()->readConfig("tpl_base_path")
-				);
-				eval($eval);
+				// Get the template instance from our object factory
+				$tplEngine = ObjectFactory::createObjectByConfiguredName('tpl_engine', array(FrameworkConfiguration::getInstance()->readConfig('tpl_base_path'), $lang, $io));
 			} catch (BasePathIsEmptyException $e) {
-				die(sprintf("[Main:] Die Template-Engine konnte nicht initialisieren. Grund: <strong>%s</strong>",
+				die(sprintf("[Main:] Could not initialize template engine for this reason: <strong>%s</strong>",
 					$e->getMessage()
 				));
 			} catch (InvalidBasePathStringException $e) {
-				die(sprintf("[Main:] Die Template-Engine konnte nicht initialisieren. Grund: <strong>%s</strong>",
+				die(sprintf("[Main:] Could not initialize template engine for this reason: <strong>%s</strong>",
 					$e->getMessage()
 				));
 			} catch (BasePathIsNoDirectoryException $e) {
-				die(sprintf("[Main:] Die Template-Engine konnte nicht initialisieren. Grund: <strong>%s</strong>",
+				die(sprintf("[Main:] Could not initialize template engine for this reason: <strong>%s</strong>",
 					$e->getMessage()
 				));
 			} catch (BasePathReadProtectedException $e) {
-				die(sprintf("[Main:] Die Template-Engine konnte nicht initialisieren. Grund: <strong>%s</strong>",
+				die(sprintf("[Main:] Could not initialize template engine for this reason: <strong>%s</strong>",
 					$e->getMessage()
 				));
 			}
@@ -110,11 +109,12 @@ class ApplicationEntryPoint {
 			}
 
 			// Assign variables
-			$tplEngine->assignVariable("message", $message);
-			$tplEngine->assignVariable("backtrace", $backtrace);
+			$tplEngine->assignVariable('message', $message);
+			$tplEngine->assignVariable('backtrace', $backtrace);
+			$tplEngine->assignVariable('total_objects', ObjectFactory::getTotal());
 
 			// Load the template
-			$tplEngine->loadCodeTemplate("emergency_exit");
+			$tplEngine->loadCodeTemplate('emergency_exit');
 
 			// Compile the template
 			$tplEngine->compileTemplate();
@@ -148,16 +148,16 @@ class ApplicationEntryPoint {
 		global $_SERVER;
 
 		// Load config file
-		require(dirname(__FILE__) . "/inc/config.php");
+		require(dirname(__FILE__) . '/inc/config.php');
 
 		// Load all include files
-		require(PATH . "inc/includes.php");
+		require(PATH . 'inc/includes.php');
 
 		// Load all framework classes
-		require(PATH . "inc/classes.php");
+		require(PATH . 'inc/classes.php');
 
 		// Include the application selector
-		require(PATH . "inc/selector.php");
+		require(PATH . 'inc/selector.php');
 
 	} // END - main()
 
-- 
2.39.5