application/ship-simu/starter.php -text
application/ship-simu/templates/.htaccess -text
application/ship-simu/templates/de/.htaccess -text
+application/ship-simu/templates/de/code/shipsimu_main.ctp -text
application/ship-simu/templates/de/html/.htaccess -text
application/ship-simu/templates/de/html/selector_ship-simu.tpl -text
db/.htaccess -text
inc/classes/exceptions/language/class_LanguagePathIsEmptyException.php -text
inc/classes/exceptions/language/class_LanguagePathIsNoDirectoryException.php -text
inc/classes/exceptions/language/class_LanguagePathReadProtectedException.php -text
+inc/classes/exceptions/language/class_MissingFileIoHandlerException.php -text
+inc/classes/exceptions/language/class_MissingLanguageHandlerException.php -text
inc/classes/exceptions/main/.htaccess -text
inc/classes/exceptions/main/class_ClassMismatchException.php -text
inc/classes/exceptions/main/class_ClassNotFoundException.php -text
".htaccess"
);
- /**
- * The language instance for the template loader
- */
- private $langInstance = null;
-
- /**
- * The file I/O instance for the template loader
- */
- private $fileIOInstance = null;
-
/**
* The private constructor. No direct instances can be created from this.
*
$this->loadedTemplates = new FrameworkArrayObject();
}
- /**
- * Private getter for language instance
- *
- * @return $langInstance An instance to the language sub-system
- */
- private function getLanguageInstance () {
- return $this->langInstance;
- }
-
- /**
- * Private getter for file IO instance
- *
- * @return $fileIOInstance An instance to the file I/O sub-system
- */
- private function getFileIOInstance () {
- return $this->fileIOInstance;
- }
-
- /**
- * Prepare the template engine (TemplateEngine by default) for a give
- * application helper instance (ApplicationHelper by default).
- *
- * @param $appInstance An application helper instance
- * @return $tplEngine The template engine instance
- * @throws NullPointerException If the template engine could not
- * be initialized
- * @throws UnsupportedTemplateEngineException If $tplEngine is an
- * unsupported template engine
- */
- private function prepareTemplateEngine (BaseFrameworkSystem $appInstance) {
- // Generate FQFN for all application templates
- $fqfn = sprintf("%s%s/%s/%s",
- PATH,
- $this->getConfigInstance()->readConfig("application_path"),
- strtolower($appInstance->getAppShortName()),
- $this->getConfigInstance()->readConfig("tpl_base_path")
- );
-
- // Initialize the template engine
- $tplEngine = null;
- $eval = sprintf("\$tplEngine = %s::create%s(
- \"%s\",
- \$this->getLanguageInstance(),
- \$this->getFileIOInstance()
-);",
- $this->getConfigInstance()->readConfig("tpl_engine"),
- $this->getConfigInstance()->readConfig("tpl_engine"),
- $fqfn
- );
-
- // Debug message
- if ((!is_null($this->getDebugInstance())) && (defined('DEBUG_EVAL'))) {
- $this->getDebugInstance()->output(sprintf("[%s:] Konstruierte PHP-Anweisung: <pre><em>%s</em></pre><br />\n",
- $this->__toString(),
- htmlentities($eval)
- ));
- }
-
- // Run the command
- @eval($eval);
-
- // Is it a valid instance?
- if (is_null($tplEngine)) {
- // No class returned
- throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER);
- } elseif (!$tplEngine instanceof CompileableTemplate) {
- // Not an object! ;-(
- throw new UnsupportedTemplateEngineException($tplEngine, self::EXCEPTION_TEMPLATE_ENGINE_UNSUPPORTED);
- }
-
- // Return the prepared instance
- return $tplEngine;
- }
-
/**
* Load the init.php script of an application and append the application
* instance to $foundApps
*
* @return $shortName This selector's short name
*/
- private function getAppShortName() {
+ public function getAppShortName() {
$shortName = $this->getConfigInstance()->readConfig("selector_path");
return $shortName;
}
$this->dirIgnoreList[] = $ignoreItem;
}
- /**
- * Setter for language instance
- *
- * @param $langInstance An instance to the language sub-system
- * @return void
- * @see LanguageSystem
- */
- public final function setLanguageInstance (ManageableLanguage $langInstance) {
- $this->langInstance = $langInstance;
- }
-
- /**
- * Setter for file I/O instance
- *
- * @param $fileIOInstance An instance to the file I/O sub-system
- * @return void
- */
- public final function setFileIOInstance (FileIOHandler $fileIOInstance) {
- $this->fileIOInstance = $fileIOInstance;
- }
-
/**
* Read the base path for all applications (application/) and create a
* list of all found applications
* @return void
*/
public final function entryPoint () {
- // Must still be implemented!
- trigger_error(__METHOD__.": Not implemented yet!");
+ // Handle the request
+
+ // Prepare the template engine
+ $tplEngine = $this->prepareTemplateEngine($this);
+
+ // Load the main template
+ $tplEngine->loadCodeTemplate("shipsimu_main");
+
+ // Raise an error here
+ trigger_error(__METHOD__.": Unfinished work!");
}
}
// Initialize file i/o system
require(PATH . "inc/file_io.php");
+$app->setFileIOInstance($io);
// Include the language sub-system
require(PATH . "inc/language.php");
+$app->setLanguageInstance($lang);
// This application needs a database connection then we have to simply include
// the inc/database.php script
// Element holen
$employee = $iterator->current();
} else {
- // Should�normally not happen... :(
+ // Should normally not happen... :(
throw new StructuresOutOfBoundsException($idx, self::EXCEPTION_INDEX_OUT_OF_BOUNDS);
}
}
--- /dev/null
+<!-- The compileable main template for the ship simulator //-->
+
+{?header:title={--WELCOME_SHIP_SIMU--}?}
+
+{?navigation:nav_row=home;imprint;contact?}
+
+<div class="selector_header">
+ {--HEADER_SHIP_SIMU--}
+</div>
+
+{?footer_msg:footer_msg={--FOOTER_SHIP_SIMU--}?}
--- /dev/null
+<?php
+/**
+ * An exception thrown when the language handler is missing
+ *
+ * @author Roland Haeder <webmaster@mxchange.org>
+ * @version 0.3.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
+ *
+ * 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
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * 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/>.
+ */
+class MissingFileIoHandlerException extends FrameworkException {
+ /**
+ * The constructor
+ *
+ * @param $message Message from the exception
+ * @param $code Code number for the exception
+ * @return void
+ */
+ public function __construct (BaseFrameworkSystem $class, $code) {
+ // Add a message around the missing class
+ $message = sprintf("[%s:%d] File i/o sub-system not initialized!",
+ $class->__toString(),
+ $this->getLine()
+ );
+
+ // Call parent constructor
+ parent::__construct($message, $code);
+ }
+}
+
+// [EOF]
+?>
--- /dev/null
+<?php
+/**
+ * An exception thrown when the language handler is missing
+ *
+ * @author Roland Haeder <webmaster@mxchange.org>
+ * @version 0.3.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
+ *
+ * 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
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * 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/>.
+ */
+class MissingLanguageHandlerException extends FrameworkException {
+ /**
+ * The constructor
+ *
+ * @param $message Message from the exception
+ * @param $code Code number for the exception
+ * @return void
+ */
+ public function __construct (BaseFrameworkSystem $class, $code) {
+ // Add a message around the missing class
+ $message = sprintf("[%s:%d] Language sub-system not initialized!",
+ $class->__toString(),
+ $this->getLine()
+ );
+
+ // Call parent constructor
+ parent::__construct($message, $code);
+ }
+}
+
+// [EOF]
+?>
*/
private $decimals = ","; // German
+ /**
+ * The language instance for the template loader
+ */
+ private $langInstance = null;
+
+ /**
+ * The file I/O instance for the template loader
+ */
+ private $fileIOInstance = null;
+
/***********************
* Exception codes.... *
***********************/
const EXCEPTION_ATTRIBUTES_ARE_MISSING = 0x02b;
const EXCEPTION_ARRAY_ELEMENTS_MISSING = 0x02c;
const EXCEPTION_TEMPLATE_ENGINE_UNSUPPORTED = 0x02d;
+ const EXCEPTION_MISSING_LANGUAGE_HANDLER = 0x02e;
+ const EXCEPTION_MISSING_FILE_IO_HANDLER = 0x02f;
/**
* In the super constructor these system classes shall be ignored or else
/**
* Appends a trailing slash to a string
*
- * @param $str A string (maybe) without trailing slash
+ * @param $str A string (maybe) without trailing slash
* @return $str A string with an auto-appended trailing slash
*/
public final function addMissingTrailingSlash ($str) {
if (substr($str, -1, 1) != "/") $str .= "/";
return $str;
}
+
+ /**
+ * Private getter for language instance
+ *
+ * @return $langInstance An instance to the language sub-system
+ */
+ protected final function getLanguageInstance () {
+ return $this->langInstance;
+ }
+
+ /**
+ * Setter for language instance
+ *
+ * @param $langInstance An instance to the language sub-system
+ * @return void
+ * @see LanguageSystem
+ */
+ public final function setLanguageInstance (ManageableLanguage $langInstance) {
+ $this->langInstance = $langInstance;
+ }
+
+ /**
+ * Private getter for file IO instance
+ *
+ * @return $fileIOInstance An instance to the file I/O sub-system
+ */
+ protected final function getFileIOInstance () {
+ return $this->fileIOInstance;
+ }
+
+ /**
+ * Setter for file I/O instance
+ *
+ * @param $fileIOInstance An instance to the file I/O sub-system
+ * @return void
+ */
+ public final function setFileIOInstance (FileIOHandler $fileIOInstance) {
+ $this->fileIOInstance = $fileIOInstance;
+ }
+
+ /**
+ * Prepare the template engine (TemplateEngine by default) for a given
+ * application helper instance (ApplicationHelper by default).
+ *
+ * @param $appInstance An application helper instance
+ * @return $tplEngine The template engine instance
+ * @throws NullPointerException If the template engine could not
+ * be initialized
+ * @throws UnsupportedTemplateEngineException If $tplEngine is an
+ * unsupported template engine
+ * @throws MissingLanguageHandlerException If the language sub-system
+ * is not yet initialized
+ */
+ protected function prepareTemplateEngine (BaseFrameworkSystem $appInstance) {
+ // Generate FQFN for all application templates
+ $fqfn = sprintf("%s%s/%s/%s",
+ PATH,
+ $this->getConfigInstance()->readConfig("application_path"),
+ strtolower($appInstance->getAppShortName()),
+ $this->getConfigInstance()->readConfig("tpl_base_path")
+ );
+
+ // Are both instances set?
+ if ($appInstance->getLanguageInstance() === null) {
+ // Invalid language instance
+ throw new MissingLanguageHandlerException($appInstance, self::EXCEPTION_MISSING_LANGUAGE_HANDLER);
+ } elseif ($appInstance->getFileIOInstance() === null) {
+ // Invalid language instance
+ throw new MissingFileIoHandlerException($appInstance, self::EXCEPTION_MISSING_FILE_IO_HANDLER);
+ }
+
+ // Initialize the template engine
+ $tplEngine = null;
+ $eval = sprintf("\$tplEngine = %s::create%s(
+ \"%s\",
+ \$appInstance->getLanguageInstance(),
+ \$appInstance->getFileIOInstance()
+);",
+ $this->getConfigInstance()->readConfig("tpl_engine"),
+ $this->getConfigInstance()->readConfig("tpl_engine"),
+ $fqfn
+ );
+
+ // Debug message
+ if ((!is_null($this->getDebugInstance())) && (defined('DEBUG_EVAL'))) {
+ $this->getDebugInstance()->output(sprintf("[%s:] Konstruierte PHP-Anweisung: <pre><em>%s</em></pre><br />\n",
+ $this->__toString(),
+ htmlentities($eval)
+ ));
+ }
+
+ // Run the command
+ eval($eval);
+
+ // Is it a valid instance?
+ if (is_null($tplEngine)) {
+ // No class returned
+ throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER);
+ } elseif (!$tplEngine instanceof CompileableTemplate) {
+ // Not an object! ;-(
+ throw new UnsupportedTemplateEngineException($tplEngine, self::EXCEPTION_TEMPLATE_ENGINE_UNSUPPORTED);
+ }
+
+ // Return the prepared instance
+ return $tplEngine;
+ }
}
// [EOF]
*/
private $fileExtension = "serialized";
- /**
- * The IO handler for file handling which should be FileIOHandler.
- */
- private $ioInstance = null;
-
/**
* The last read file's name
*/
// Set save path and IO instance
$dbInstance->setSavePath($savePath);
- $dbInstance->setIOInstance($ioInstance);
+ $dbInstance->setFileIOInstance($ioInstance);
// Return database instance
return $dbInstance;
return $this->savePath;
}
- /**
- * Getter for file extension
- *
- * @return $fileExtension The file extension for all file names
- */
- public final function getFileExtension () {
- return $this->fileExtension;
- }
-
/**
* Saves a given object to the local file system by serializing and
* transparently compressing it
// Save the file to disc we don't care here if the path is there,
// this must be done in later methods.
- $this->getIOInstance()->saveFile($fqfn, array($this->getCompressorChannel()->getCompressorExtension(), $serialized));
+ $this->getFileIOInstance()->saveFile($fqfn, array($this->getCompressorChannel()->getCompressorExtension(), $serialized));
}
/**
$this->setLastFile($fqfn);
// Get instance for file handler
- $inputHandler = $this->getIOInstance();
+ $inputHandler = $this->getFileIOInstance();
// Try to read from it. This makes it sure that the file is
// readable and a valid database file
return $isUsed;
}
- /**
- * Getter for the file IO instance
- *
- *�@return $ioInstance An instance for IO operations
- * @see FileIOHandler The concrete handler for IO operations
- */
- public final function getIOInstance () {
- return $this->ioInstance;
- }
-
- /**
- * Setter for the file IO instance
- *
- * @param $ioInstance An instance for IO operations (should be
- * FileIOHandler)
- * @return void
- */
- public final function setIOInstance (FileIOHandler $ioInstance) {
- $this->ioInstance = $ioInstance;
- }
-
/**
* Setter for the last read file
*
*/
public final function getObjectFromCachedData ($uniqueID) {
// Get instance for file handler
- $inputHandler = $this->getIOInstance();
+ $inputHandler = $this->getFileIOInstance();
// Get last file's name and contents
$fqfn = $this->repairFQFN($this->getLastFile(), $uniqueID);
*/
private $configVariables = array();
- /**
- * The language instance which should link to an object of LanguageSystem
- */
- private $langInstance = null;
-
/**
* Loaded templates for recursive protection and detection
*/
* @throws BasePathReadProtectedException If $basePath is
* read-protected
*/
- public final static function createTemplateEngine ($basePath, $langInstance, $ioInstance) {
+ public final static function createTemplateEngine ($basePath, ManageableLanguage $langInstance, FileIOHandler $ioInstance) {
// Get a new instance
$tplInstance = new TemplateEngine();
// Set the language and IO instances
$tplInstance->setLanguageInstance($langInstance);
- $tplInstance->setIOInstance($ioInstance);
+ $tplInstance->setFileIOInstance($ioInstance);
// Set template extensions
$tplInstance->setRawTemplateExtension($cfgInstance->readConfig("raw_template_extension"));
$this->varStack = new FrameworkArrayObject();
}
- /**
- * Setter for language instance which should be LanguageSystem
- *
- * @param $langInstance The language instance
- * @return void
- */
- public final function setLanguageInstance (ManageableLanguage $langInstance) {
- $this->langInstance = $langInstance;
- }
-
- /**
- * Setter for file I/O instance which should be FileIOHandler
- *
- * @param $ioInstance The file I/O instance
- * @return void
- */
- public final function setIOInstance (FileIOHandler $ioInstance) {
- $this->ioInstance = $ioInstance;
- }
-
- /**
- * Getter for file I/O instance which should be FileIOHandler
- *
- * @return $ioInstance The file I/O instance
- */
- public final function getIOInstance () {
- return $this->ioInstance;
- }
-
/**
* Setter for base path
*
// Construct the FQFN for the template by honoring the current language
$fqfn = sprintf("%s%s/%s/%s%s",
$this->getBasePath(),
- $this->langInstance->getLanguageCode(),
+ $this->getLanguageInstance()->getLanguageCode(),
$this->getTemplateType(),
$template,
$ext
));
// Get a input/output instance from the middleware
- $ioInstance = $this->getIOInstance();
+ $ioInstance = $this->getFileIOInstance();
// Validate the instance
if (is_null($ioInstance)) {