From 3f7247b52f1b837bb70e6d8584e3f762ba17cb05 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Sun, 11 May 2008 19:05:14 +0000 Subject: [PATCH] Files merged from ship-simu project --- .gitattributes | 41 ++++ inc/classes.php | 10 +- inc/classes/exceptions/controller/.htaccess | 1 + .../class_DefaultControllerException.php | 45 ++++ .../main/class_EmptyVariableException.php | 46 ++++ .../main/class_InvalidCommandException.php | 46 ++++ .../class_InvalidCommandInstanceException.php | 46 ++++ .../main/class_InvalidControllerException.php | 46 ++++ ...ss_ResponseHeadersAlreadySentException.php | 45 ++++ .../class_UnexpectedTemplateTypeException.php | 16 +- inc/classes/interfaces/class_ | 28 +++ inc/classes/interfaces/commands/.htaccess | 1 + .../interfaces/commands/class_Commandable.php | 36 +++ inc/classes/interfaces/controller/.htaccess | 1 + .../controller/class_Controller.php | 36 +++ inc/classes/interfaces/request/.htaccess | 1 + .../interfaces/request/class_Requestable.php | 68 ++++++ inc/classes/interfaces/resolver/.htaccess | 1 + .../resolver/class_CommandResolver.php | 44 ++++ .../resolver/class_ControllerResolver.php | 34 +++ inc/classes/interfaces/response/.htaccess | 1 + .../response/class_Responseable.php | 63 +++++ .../main/class_BaseFrameworkSystem.php | 186 +++++++-------- inc/classes/main/commands/.htaccess | 1 + .../main/commands/class_BaseCommand.php | 85 +++++++ inc/classes/main/commands/web/.htaccess | 1 + .../commands/web/class_WebHomeCommand.php | 117 +++++++++ .../main/compressor/class_Bzip2Compressor.php | 30 +-- .../main/compressor/class_GzipCompressor.php | 30 +-- .../main/compressor/class_NullCompressor.php | 20 +- inc/classes/main/controller/.htaccess | 1 + inc/classes/main/controller/class_ | 46 ++++ .../main/controller/class_BaseController.php | 40 ++++ inc/classes/main/controller/default/.htaccess | 1 + .../default/class_WebDefaultController.php | 96 ++++++++ .../class_WebDefaultNewsController.php | 111 +++++++++ .../main/controller/registration/.htaccess | 1 + .../class_DefaultRegistrationController.php | 71 ++++++ .../database/class_BaseDatabaseFrontend.php | 44 +--- .../classes/class_LocalFileDatabase.php | 34 +-- .../extended/class_SerializationContainer.php | 15 +- inc/classes/main/request/.htaccess | 1 + .../main/request/class_HttpRequest.php | 151 ++++++++++++ inc/classes/main/resolver/.htaccess | 1 + .../main/resolver/class_BaseResolver.php | 115 +++++++++ inc/classes/main/resolver/web/.htaccess | 1 + .../resolver/web/class_WebCommandResolver.php | 184 ++++++++++++++ .../web/class_WebControllerResolver.php | 189 +++++++++++++++ inc/classes/main/response/.htaccess | 1 + .../main/response/class_HttpResponse.php | 161 +++++++++++++ .../main/template/class_TemplateEngine.php | 224 +++++++++++++----- inc/config/config-hubmaster.php | 88 +++++++ inc/database.php | 20 +- inc/language.php | 12 +- inc/output.php | 10 +- 55 files changed, 2414 insertions(+), 330 deletions(-) create mode 100644 inc/classes/exceptions/controller/.htaccess create mode 100644 inc/classes/exceptions/controller/class_DefaultControllerException.php create mode 100644 inc/classes/exceptions/main/class_EmptyVariableException.php create mode 100644 inc/classes/exceptions/main/class_InvalidCommandException.php create mode 100644 inc/classes/exceptions/main/class_InvalidCommandInstanceException.php create mode 100644 inc/classes/exceptions/main/class_InvalidControllerException.php create mode 100644 inc/classes/exceptions/main/class_ResponseHeadersAlreadySentException.php create mode 100644 inc/classes/interfaces/class_ create mode 100644 inc/classes/interfaces/commands/.htaccess create mode 100644 inc/classes/interfaces/commands/class_Commandable.php create mode 100644 inc/classes/interfaces/controller/.htaccess create mode 100644 inc/classes/interfaces/controller/class_Controller.php create mode 100644 inc/classes/interfaces/request/.htaccess create mode 100644 inc/classes/interfaces/request/class_Requestable.php create mode 100644 inc/classes/interfaces/resolver/.htaccess create mode 100644 inc/classes/interfaces/resolver/class_CommandResolver.php create mode 100644 inc/classes/interfaces/resolver/class_ControllerResolver.php create mode 100644 inc/classes/interfaces/response/.htaccess create mode 100644 inc/classes/interfaces/response/class_Responseable.php create mode 100644 inc/classes/main/commands/.htaccess create mode 100644 inc/classes/main/commands/class_BaseCommand.php create mode 100644 inc/classes/main/commands/web/.htaccess create mode 100644 inc/classes/main/commands/web/class_WebHomeCommand.php create mode 100644 inc/classes/main/controller/.htaccess create mode 100644 inc/classes/main/controller/class_ create mode 100644 inc/classes/main/controller/class_BaseController.php create mode 100644 inc/classes/main/controller/default/.htaccess create mode 100644 inc/classes/main/controller/default/class_WebDefaultController.php create mode 100644 inc/classes/main/controller/default/class_WebDefaultNewsController.php create mode 100644 inc/classes/main/controller/registration/.htaccess create mode 100644 inc/classes/main/controller/registration/class_DefaultRegistrationController.php create mode 100644 inc/classes/main/request/.htaccess create mode 100644 inc/classes/main/request/class_HttpRequest.php create mode 100644 inc/classes/main/resolver/.htaccess create mode 100644 inc/classes/main/resolver/class_BaseResolver.php create mode 100644 inc/classes/main/resolver/web/.htaccess create mode 100644 inc/classes/main/resolver/web/class_WebCommandResolver.php create mode 100644 inc/classes/main/resolver/web/class_WebControllerResolver.php create mode 100644 inc/classes/main/response/.htaccess create mode 100644 inc/classes/main/response/class_HttpResponse.php create mode 100644 inc/config/config-hubmaster.php diff --git a/.gitattributes b/.gitattributes index 9391f4216e..eb8eefd814 100644 --- a/.gitattributes +++ b/.gitattributes @@ -27,6 +27,8 @@ inc/classes/exceptions/container/.htaccess -text inc/classes/exceptions/container/class_ContainerItemIsNoArrayException.php -text inc/classes/exceptions/container/class_ContainerItemIsNullException.php -text inc/classes/exceptions/container/class_ContainerMaybeDamagedException.php -text +inc/classes/exceptions/controller/.htaccess -text +inc/classes/exceptions/controller/class_DefaultControllerException.php -text inc/classes/exceptions/database/.htaccess -text inc/classes/exceptions/database/local_file/.htaccess -text inc/classes/exceptions/database/local_file/class_SavePathIsEmptyException.php -text @@ -55,10 +57,14 @@ inc/classes/exceptions/main/class_ClassNotFoundException.php -text inc/classes/exceptions/main/class_ConfigEntryIsEmptyException.php -text inc/classes/exceptions/main/class_ConfigEntryNotFoundException.php -text inc/classes/exceptions/main/class_DimNotFoundInArrayException.php -text +inc/classes/exceptions/main/class_EmptyVariableException.php -text inc/classes/exceptions/main/class_ExceptionNotChangedException.php -text inc/classes/exceptions/main/class_ExceptionNotFoundException.php -text inc/classes/exceptions/main/class_GetterNotFoundException.php -text inc/classes/exceptions/main/class_InvalidArrayCountException.php -text +inc/classes/exceptions/main/class_InvalidCommandException.php -text +inc/classes/exceptions/main/class_InvalidCommandInstanceException.php -text +inc/classes/exceptions/main/class_InvalidControllerException.php -text inc/classes/exceptions/main/class_InvalidObjectException.php -text inc/classes/exceptions/main/class_MissingArrayElementsException.php -text inc/classes/exceptions/main/class_MissingDecimalsThousandsSeperatorException.php -text @@ -67,6 +73,7 @@ inc/classes/exceptions/main/class_NoArrayCreatedException.php -text inc/classes/exceptions/main/class_NoArrayException.php -text inc/classes/exceptions/main/class_NoObjectException.php -text inc/classes/exceptions/main/class_NullPointerException.php -text +inc/classes/exceptions/main/class_ResponseHeadersAlreadySentException.php -text inc/classes/exceptions/main/class_VariableIsNotSetException.php -text inc/classes/exceptions/template/.htaccess -text inc/classes/exceptions/template/class_BasePathIsEmptyException.php -text @@ -80,9 +87,14 @@ inc/classes/exceptions/template/class_ViewHelperNotFoundException.php -text inc/classes/interfaces/.htaccess -text inc/classes/interfaces/application/.htaccess -text inc/classes/interfaces/application/class_ManageableApplication.php -text +inc/classes/interfaces/class_ -text inc/classes/interfaces/class_FrameworkInterface.php -text +inc/classes/interfaces/commands/.htaccess -text +inc/classes/interfaces/commands/class_Commandable.php -text inc/classes/interfaces/compressor/.htaccess -text inc/classes/interfaces/compressor/class_Compressor.php -text +inc/classes/interfaces/controller/.htaccess -text +inc/classes/interfaces/controller/class_Controller.php -text inc/classes/interfaces/database/.htaccess -text inc/classes/interfaces/database/class_FrameworkDatabaseInterface.php -text inc/classes/interfaces/database/frontend/.htaccess -text @@ -102,6 +114,13 @@ inc/classes/interfaces/io/output/.htaccess -text inc/classes/interfaces/io/output/class_OutputStreamer.php -text inc/classes/interfaces/language/.htaccess -text inc/classes/interfaces/language/class_ManageableLanguage.php -text +inc/classes/interfaces/request/.htaccess -text +inc/classes/interfaces/request/class_Requestable.php -text +inc/classes/interfaces/resolver/.htaccess -text +inc/classes/interfaces/resolver/class_CommandResolver.php -text +inc/classes/interfaces/resolver/class_ControllerResolver.php -text +inc/classes/interfaces/response/.htaccess -text +inc/classes/interfaces/response/class_Responseable.php -text inc/classes/interfaces/template/.htaccess -text inc/classes/interfaces/template/class_CompileableTemplate.php -text inc/classes/interfaces/template/view/class_ViewHelper.php -text @@ -109,12 +128,24 @@ inc/classes/main/.htaccess -text inc/classes/main/class_ -text inc/classes/main/class_BaseFrameworkSystem.php -text inc/classes/main/class_FrameworkArrayObject.php -text +inc/classes/main/commands/.htaccess -text +inc/classes/main/commands/class_BaseCommand.php -text +inc/classes/main/commands/web/.htaccess -text +inc/classes/main/commands/web/class_WebHomeCommand.php -text inc/classes/main/compressor/.htaccess -text inc/classes/main/compressor/class_Bzip2Compressor.php -text inc/classes/main/compressor/class_GzipCompressor.php -text inc/classes/main/compressor/class_NullCompressor.php -text inc/classes/main/console/.htaccess -text inc/classes/main/console/class_ConsoleTools.php -text +inc/classes/main/controller/.htaccess -text +inc/classes/main/controller/class_ -text +inc/classes/main/controller/class_BaseController.php -text +inc/classes/main/controller/default/.htaccess -text +inc/classes/main/controller/default/class_WebDefaultController.php -text +inc/classes/main/controller/default/class_WebDefaultNewsController.php -text +inc/classes/main/controller/registration/.htaccess -text +inc/classes/main/controller/registration/class_DefaultRegistrationController.php -text inc/classes/main/database/.htaccess -text inc/classes/main/database/class_BaseDatabaseFrontend.php -text inc/classes/main/database/classes/.htaccess -text @@ -136,6 +167,15 @@ inc/classes/main/language/class_LanguageSystem.php -text inc/classes/main/output/.htaccess -text inc/classes/main/output/class_ConsoleOutput.php -text inc/classes/main/output/class_WebOutput.php -text +inc/classes/main/request/.htaccess -text +inc/classes/main/request/class_HttpRequest.php -text +inc/classes/main/resolver/.htaccess -text +inc/classes/main/resolver/class_BaseResolver.php -text +inc/classes/main/resolver/web/.htaccess -text +inc/classes/main/resolver/web/class_WebCommandResolver.php -text +inc/classes/main/resolver/web/class_WebControllerResolver.php -text +inc/classes/main/response/.htaccess -text +inc/classes/main/response/class_HttpResponse.php -text inc/classes/main/template/.htaccess -text inc/classes/main/template/class_TemplateEngine.php -text inc/classes/middleware/.htaccess -text @@ -151,6 +191,7 @@ inc/classes/middleware/io/class_FileIOHandler.php -text inc/config.php -text inc/config/.htaccess -text inc/config/class_FrameworkConfiguration.php -text +inc/config/config-hubmaster.php -text inc/config/config-override.php -text inc/database.php -text inc/database/.htaccess -text diff --git a/inc/classes.php b/inc/classes.php index 64e2bedc58..27034212b2 100644 --- a/inc/classes.php +++ b/inc/classes.php @@ -18,7 +18,7 @@ * 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 . + * along with this program. If not, see . */ // Lower framework classes @@ -35,19 +35,19 @@ foreach ($lowerClasses as $class) { try { ClassLoader::getInstance()->loadClasses(sprintf("inc/classes/%s/", $class)); } catch (PathIsNoDirectoryException $e) { - ApplicationEntryPoint::app_die(sprintf("[Main:] Kann Framework-Klassen im Pfad %s nicht laden. Reason: %s", + ApplicationEntryPoint::app_die(sprintf("[Main:] Could not load framework classes from path %s for the follwing reason: %s", $class )); } catch (PathIsEmptyException $e) { - ApplicationEntryPoint::app_die(sprintf("[Main:] Kann Framework-Klassen im Pfad %s nicht laden. Reason: %s", + ApplicationEntryPoint::app_die(sprintf("[Main:] Could not load framework classes from path %s for the follwing reason: %s", $class )); } catch (PathReadProtectedException $e) { - ApplicationEntryPoint::app_die(sprintf("[Main:] Kann Framework-Klassen im Pfad %s nicht laden. Reason: %s", + ApplicationEntryPoint::app_die(sprintf("[Main:] Could not load framework classes from path %s for the follwing reason: %s", $class )); } catch (DirPointerNotOpenedException $e) { - ApplicationEntryPoint::app_die(sprintf("[Main:] Kann Framework-Klassen im Pfad %s nicht laden. Reason: %s", + ApplicationEntryPoint::app_die(sprintf("[Main:] Could not load framework classes from path %s for the follwing reason: %s", $class )); } diff --git a/inc/classes/exceptions/controller/.htaccess b/inc/classes/exceptions/controller/.htaccess new file mode 100644 index 0000000000..3a42882788 --- /dev/null +++ b/inc/classes/exceptions/controller/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/exceptions/controller/class_DefaultControllerException.php b/inc/classes/exceptions/controller/class_DefaultControllerException.php new file mode 100644 index 0000000000..aead2d439d --- /dev/null +++ b/inc/classes/exceptions/controller/class_DefaultControllerException.php @@ -0,0 +1,45 @@ + + * @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 + * 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 . + */ +class DefaultControllerException extends FrameworkException { + /** + * The super constructor for all exceptions + * + * @param $resolverInstance An instance of a resolver class + * @param $code An optional code for better debugging + * @return void + */ + public function __construct(ControllerResolver $resolverInstance, $code) { + // Prepare the message + $message = sprintf("[%s:%d] Cannot resolv default controller. Maybe missing?", + $resolverInstance->__toString(), + $this->getLine() + ); + + // Call parent contructor with message + parent::__construct($message, $code); + } +} + +// [EOF] +?> diff --git a/inc/classes/exceptions/main/class_EmptyVariableException.php b/inc/classes/exceptions/main/class_EmptyVariableException.php new file mode 100644 index 0000000000..a415276487 --- /dev/null +++ b/inc/classes/exceptions/main/class_EmptyVariableException.php @@ -0,0 +1,46 @@ + + * @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 + * 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 . + */ +class EmptyVariableException extends FrameworkException { + /** + * The constructor + * + * @param $msgArray Message array holding all needed data + * @param $code Code number for the exception + * @return void + */ + public function __construct (array $msgArray, $code) { + // Add a message around the missing class + $message = sprintf("[%s:%d] Variable %s is not set.", + $msgArray[0]->__toString(), + $this->getLine(), + $msgArray[1] + ); + + // Call parent constructor + parent::__construct($message, $code); + } +} + +// [EOF] +?> diff --git a/inc/classes/exceptions/main/class_InvalidCommandException.php b/inc/classes/exceptions/main/class_InvalidCommandException.php new file mode 100644 index 0000000000..b0bc623caa --- /dev/null +++ b/inc/classes/exceptions/main/class_InvalidCommandException.php @@ -0,0 +1,46 @@ + + * @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 + * 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 . + */ +class InvalidCommandException extends FrameworkException { + /** + * The constructor + * + * @param $message Message from the exception + * @param $code Code number for the exception + * @return void + */ + public function __construct (array $msgArray, $code) { + // Add a message around the missing class + $message = sprintf("[%s:%d] Invalid command %s detected.", + $msgArray[0]->__toString(), + $this->getLine(), + htmlentities(strip_tags($msgArray[1]), ENT_QUOTES) + ); + + // Call parent constructor + parent::__construct($message, $code); + } +} + +// [EOF] +?> diff --git a/inc/classes/exceptions/main/class_InvalidCommandInstanceException.php b/inc/classes/exceptions/main/class_InvalidCommandInstanceException.php new file mode 100644 index 0000000000..e802e9e241 --- /dev/null +++ b/inc/classes/exceptions/main/class_InvalidCommandInstanceException.php @@ -0,0 +1,46 @@ + + * @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 + * 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 . + */ +class InvalidCommandInstanceException extends FrameworkException { + /** + * The constructor + * + * @param $message Message from the exception + * @param $code Code number for the exception + * @return void + */ + public function __construct (array $msgArray, $code) { + // Add a message around the missing class + $message = sprintf("[%s:%d] Invalid command %s detected.", + $msgArray[0]->__toString(), + $this->getLine(), + $msgArray[1] + ); + + // Call parent constructor + parent::__construct($message, $code); + } +} + +// [EOF] +?> diff --git a/inc/classes/exceptions/main/class_InvalidControllerException.php b/inc/classes/exceptions/main/class_InvalidControllerException.php new file mode 100644 index 0000000000..3caf2a513d --- /dev/null +++ b/inc/classes/exceptions/main/class_InvalidControllerException.php @@ -0,0 +1,46 @@ + + * @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 + * 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 . + */ +class InvalidControllerInstanceException extends FrameworkException { + /** + * The constructor + * + * @param $msgArray Array with data from the exception point + * @param $code Code number for the exception + * @return void + */ + public function __construct (array $msgArray, $code) { + // Add a message around the missing class + $message = sprintf("[%s:%d] Invalid controller %s detected.", + $msgArray[0]->__toString(), + $this->getLine(), + $msgArray[1] + ); + + // Call parent constructor + parent::__construct($message, $code); + } +} + +// [EOF] +?> diff --git a/inc/classes/exceptions/main/class_ResponseHeadersAlreadySentException.php b/inc/classes/exceptions/main/class_ResponseHeadersAlreadySentException.php new file mode 100644 index 0000000000..72751d91f6 --- /dev/null +++ b/inc/classes/exceptions/main/class_ResponseHeadersAlreadySentException.php @@ -0,0 +1,45 @@ + + * @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 + * 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 . + */ +class ResponseHeadersAlreadySentException 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] Headers are already sent!", + $class->__toString(), + $this->getLine() + ); + + // Call parent constructor + parent::__construct($message, $code); + } +} + +// [EOF] +?> diff --git a/inc/classes/exceptions/template/class_UnexpectedTemplateTypeException.php b/inc/classes/exceptions/template/class_UnexpectedTemplateTypeException.php index b1d0d14b81..bfb096e971 100644 --- a/inc/classes/exceptions/template/class_UnexpectedTemplateTypeException.php +++ b/inc/classes/exceptions/template/class_UnexpectedTemplateTypeException.php @@ -3,10 +3,10 @@ * An exception thrown when the template type is not supported * * @author Roland Haeder - * @version 0.3.0 + * @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 @@ -19,23 +19,23 @@ * 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 . + * along with this program. If not, see . */ class UnexpectedTemplateTypeException extends FrameworkException { /** * The constructor * - * @param $class An array holding our informations + * @param $msgArray An array holding our informations * @param $code Code number for the exception * @return void */ - public function __construct (BaseFrameworkSystem $class, $code) { + public function __construct (array $msgArray, $code) { // Add a message around the missing class $message = sprintf("[%s:%d] Der Template-Typ %s entspricht nicht dem erwartetem Template-Typ %s.", - $class[0]->__toString(), + $msgArray[0]->__toString(), $this->getLine(), - $class[1], - $class[2] + $msgArray[1], + $msgArray[2] ); // Call parent constructor diff --git a/inc/classes/interfaces/class_ b/inc/classes/interfaces/class_ new file mode 100644 index 0000000000..055ad90d6a --- /dev/null +++ b/inc/classes/interfaces/class_ @@ -0,0 +1,28 @@ + + * @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 + * 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 . + */ +interface extends FrameworkInterface { +} + +// +?> diff --git a/inc/classes/interfaces/commands/.htaccess b/inc/classes/interfaces/commands/.htaccess new file mode 100644 index 0000000000..3a42882788 --- /dev/null +++ b/inc/classes/interfaces/commands/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/interfaces/commands/class_Commandable.php b/inc/classes/interfaces/commands/class_Commandable.php new file mode 100644 index 0000000000..4b3eaba9f8 --- /dev/null +++ b/inc/classes/interfaces/commands/class_Commandable.php @@ -0,0 +1,36 @@ + + * @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 + * 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 . + */ +interface Commandable extends FrameworkInterface { + /** + * Executes the given command with given request and response objects + * + * @param $requestInstance An instance of a class with an Requestable interface + * @param $responseInstance An instance of a class with an Responseable interface + * @return void + */ + function execute (Requestable $requestInstance, Responseable $responseInstance); +} + +// +?> diff --git a/inc/classes/interfaces/controller/.htaccess b/inc/classes/interfaces/controller/.htaccess new file mode 100644 index 0000000000..3a42882788 --- /dev/null +++ b/inc/classes/interfaces/controller/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/interfaces/controller/class_Controller.php b/inc/classes/interfaces/controller/class_Controller.php new file mode 100644 index 0000000000..f06f583df7 --- /dev/null +++ b/inc/classes/interfaces/controller/class_Controller.php @@ -0,0 +1,36 @@ + + * @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 + * 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 . + */ +interface Controller extends FrameworkInterface { + /** + * Handles the given request and response + * + * @param $requestInstance An instance of a request class + * @param $responseInstance An instance of a response class + * @return void + */ + function handleRequest (Requestable $requestInstance, Responseable $responseInstance); +} + +// +?> diff --git a/inc/classes/interfaces/request/.htaccess b/inc/classes/interfaces/request/.htaccess new file mode 100644 index 0000000000..3a42882788 --- /dev/null +++ b/inc/classes/interfaces/request/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/interfaces/request/class_Requestable.php b/inc/classes/interfaces/request/class_Requestable.php new file mode 100644 index 0000000000..7ef0f9a399 --- /dev/null +++ b/inc/classes/interfaces/request/class_Requestable.php @@ -0,0 +1,68 @@ + + * @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 . + */ +interface Requestable extends FrameworkInterface { + /** + * Prepares the HTTP request data for usage by currently copying + * $_REQUEST into a private attribute. Later on we can add more + * things for initialization here. + * + * @return void + */ + function prepareRequestData (); + + /** + * Checks wether a request element is set + * @param $element Name of the request element we want to check + * @return $isSet Wether the request element is set + * @throws MissingArrayElementsException Thrown if a request element is not set + */ + function isRequestElementSet ($element); + + /** + * Getter for request element or 'null' if the element was not found + * + * @param $element Name of the request element we want to check + * @return $value Value of the found request element or 'null' if the + * element was not found + */ + function getRequestElement ($element); + + /** + * Wrapper method for array_key() function for the request data array + * + * @return $array An array containing all array keys to return + */ + function getParameterNames (); + + /** + * Getter for a header element or 'null' if the header was not found + * + * @param $headerName Name of the header + * @return $headerValue Value of the header or 'null' if not found + */ + function getHeader ($headerName); +} + +// +?> diff --git a/inc/classes/interfaces/resolver/.htaccess b/inc/classes/interfaces/resolver/.htaccess new file mode 100644 index 0000000000..3a42882788 --- /dev/null +++ b/inc/classes/interfaces/resolver/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/interfaces/resolver/class_CommandResolver.php b/inc/classes/interfaces/resolver/class_CommandResolver.php new file mode 100644 index 0000000000..2793eb5cce --- /dev/null +++ b/inc/classes/interfaces/resolver/class_CommandResolver.php @@ -0,0 +1,44 @@ + + * @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 + * 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 . + */ +interface CommandResolver extends FrameworkInterface { + /** + * Returns an command instance for a given request class + * + * @param $requestInstance An instance of a request class + * @return $commandInstance An instance of the resolved command + */ + function resolvCommandByRequest (Requestable $requestInstance); + + /** + * Checks wether the given command is valid + * + * @param $commandName The default command we shall execute + * @return $isValid Wether the given command is valid + * @throws EmptyVariableException Thrown if the given command is not set + */ + function isCommandValid ($commandName); +} + +// +?> diff --git a/inc/classes/interfaces/resolver/class_ControllerResolver.php b/inc/classes/interfaces/resolver/class_ControllerResolver.php new file mode 100644 index 0000000000..e953ceee2e --- /dev/null +++ b/inc/classes/interfaces/resolver/class_ControllerResolver.php @@ -0,0 +1,34 @@ + + * @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 + * 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 . + */ +interface ControllerResolver extends FrameworkInterface { + /** + * Resolves the default controller of the given command + * + * @return $controllerInstance A controller instance for the default command + */ + function resolveDefaultController (); +} + +// +?> diff --git a/inc/classes/interfaces/response/.htaccess b/inc/classes/interfaces/response/.htaccess new file mode 100644 index 0000000000..3a42882788 --- /dev/null +++ b/inc/classes/interfaces/response/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/interfaces/response/class_Responseable.php b/inc/classes/interfaces/response/class_Responseable.php new file mode 100644 index 0000000000..7416b948ca --- /dev/null +++ b/inc/classes/interfaces/response/class_Responseable.php @@ -0,0 +1,63 @@ + + * @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 + * 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 . + */ +interface Responseable extends FrameworkInterface { + /** + * Setter for status + * + * @param $status New response status + * @return void + */ + function setResponseStatus ($status); + + /** + * Add header element + * + * @param $name Name of header element + * @param $value Value of header element + * @return void + */ + function addHeader ($name, $value); + + /** + * "Writes" data to the response body + * + * @param $output Output we shall sent in the HTTP response + * @return void + */ + function writeToBody ($output); + + /** + * Flushs the cached HTTP response to the outer world + * + * @param $foce Wether we shall force the output or abort if headers are + * already sent with an exception + * @return void + * @throws ResponseHeadersAlreadySentException Thrown if headers are + * already sent + */ + function flushBuffer($force=false); +} + +// +?> diff --git a/inc/classes/main/class_BaseFrameworkSystem.php b/inc/classes/main/class_BaseFrameworkSystem.php index dbf69b14f3..4abdf29958 100644 --- a/inc/classes/main/class_BaseFrameworkSystem.php +++ b/inc/classes/main/class_BaseFrameworkSystem.php @@ -4,10 +4,10 @@ * class handles saving of games etc. * * @author Roland Haeder - * @version 0.3.0 + * @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 @@ -20,7 +20,7 @@ * 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 . + * along with this program. If not, see . */ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { /** @@ -53,6 +53,11 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { */ private $dbInstance = null; + /** + * Instance to an application helper class + */ + private $applicationInstance = null; + /** * The real class name */ @@ -140,6 +145,10 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { const EXCEPTION_MISSING_LANGUAGE_HANDLER = 0x02e; const EXCEPTION_MISSING_FILE_IO_HANDLER = 0x02f; const EXCEPTION_MISSING_ELEMENT = 0x030; + const EXCEPTION_INVALID_COMMAND = 0x031; + const EXCEPTION_INVALID_CONTROLLER = 0x032; + const EXCEPTION_HEADERS_ALREADY_SENT = 0x033; + const EXCEPTION_DEFAUL_CONTROLLER_GONE = 0x034; /** * In the super constructor these system classes shall be ignored or else @@ -150,16 +159,16 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { *--------------------------------------------------------------------* */ private $systemClasses = array( - "DebugMiddleware", // Debug middleware output sub-system - "DebugWebOutput", // Debug web output sub-system - "DebugConsoleOutput", // Debug console output sub-system - "DebugErrorLogOutput", // Debug error_log() output sub-system - "CompressorChannel", // Compressor sub-system + "DebugMiddleware", // Debug middleware output sub-system + "DebugWebOutput", // Debug web output sub-system + "DebugConsoleOutput", // Debug console output sub-system + "DebugErrorLogOutput", // Debug error_log() output sub-system + "CompressorChannel", // Compressor sub-system "FrameworkDirectoryPointer", // Directory handler sub-system - "NullCompressor", // Null compressor - "Bzip2Compressor", // BZIP2 compressor - "GzipCompressor", // GZIP compressor - "WebOutput", // Web output sub-system + "NullCompressor", // Null compressor + "Bzip2Compressor", // BZIP2 compressor + "GzipCompressor", // GZIP compressor + "WebOutput", // Web output sub-system ); /** @@ -167,9 +176,12 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { * * @return void */ - private function __construct ($class) { + protected function __construct ($class) { // Set real class $this->setRealClass($class); + + // Init this instance + $this->initInstance($class); } /** @@ -220,14 +232,11 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { } /** - * Public constructor (for initializing things, etc.) + * Initializes the instance * * @return void */ - public function constructor ($class) { - // Call constructor - $this->__construct($class); - + public function initInstance ($class) { // Get the current (singleton) configuration instance $this->setConfigInstance(FrameworkConfiguration::createFrameworkConfiguration()); @@ -249,7 +258,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { ); // Debug message - if ((defined('DEBUG_EVAL')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:] Konstruierte PHP-Anweisung:
%s

\n", + if (defined('DEBUG_EVAL')) $this->getDebugInstance()->output(sprintf("[%s:] Constructed PHP command:
%s

\n", $this->__toString(), htmlentities($eval) )); @@ -276,27 +285,18 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { $this->setDatabaseInstance($db); } } - - // Debug output - if ((defined('DEBUG_SYSTEM')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] Alle Sub-Systeme sind initialisiert.
\n", - $this->__toString() - )); } } /** * Setter for language instance * - * @param $configInstance The configuration instance which shall + * @param $configInstance The configuration instance which shall * be FrameworkConfiguration * @return void */ public final function setConfigInstance (FrameworkConfiguration $configInstance) { - $this->cfgInstance = $configInstance; - if ((defined('DEBUG_SYSTEM')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] Konfigurations-Handler auf %s gesetzt.
\n", - $this->__toString(), - $configInstance->__toString() - )); + self::$cfgInstance = $configInstance; } /** @@ -305,11 +305,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { * @return $cfhInstance - Configuration instance */ public final function getConfigInstance () { - if ((defined('DEBUG_SYSTEM')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] Konfigurations-Handler %s angefordert.
\n", - $this->__toString(), - $this->cfgInstance->__toString() - )); - return $this->cfgInstance; + return self::$cfgInstance; } /** @@ -320,10 +316,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { */ public final function setDebugInstance (DebugMiddleware $debugInstance) { self::$debug = $debugInstance; - if ((defined('DEBUG_SYSTEM')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] Debug-Handler auf %s gesetzt.
\n", - $this->__toString(), - $this->getDebugInstance()->__toString() - )); } /** @@ -343,10 +335,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { */ public final function setWebOutputInstance (OutputStreamer $webInstance) { self::$webOutput = $webInstance; - if ((defined('DEBUG_SYSTEM')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] Web-Handler auf %s gesetzt.
\n", - $this->__toString(), - $this->getWebOutputInstance()->__toString() - )); } /** @@ -366,9 +354,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { * @return void */ public final function setDatabaseInstance (DatabaseConnection $dbInstance) { - if ((defined('DEBUG_SYSTEM')) && (is_object($dbInstance->getDebugInstance()))) $dbInstance->getDebugInstance()->output(sprintf("[%s:] Datenbankschicht gesetzt.
\n", - $dbInstance->__toString() - )); $this->dbInstance = $dbInstance; } @@ -378,9 +363,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { * @return $realClass The name of the real class (not BaseFrameworkSystem) */ public final function __toString () { - if ((defined('DEBUG_SYSTEM')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] __toString() erreicht.
\n", - $this->realClass - )); return $this->realClass; } @@ -404,15 +386,8 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { * @return void */ public final function createUniqueID () { - if ((defined('DEBUG_SYSTEM')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] createUniqueID aufgerufen.
\n", - $this->__toString() - )); - // Existiert noch keine? if (empty($this->uniqueID)) { - if ((defined('DEBUG_SYSTEM')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] createUniqueID erzeugt neue Unique-ID.
\n", - $this->__toString() - )); // Correct missing class name $corrected = false; @@ -455,13 +430,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { // Abort the loop break; } - } - - // Debug message - if ((defined('DEBUG_SYSTEM')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] uniqueID ist auf %s gesetzt.
\n", - $this->__toString(), - $tempID - )); + } // END - while // Apply the new ID $this->setUniqueID($tempID); @@ -509,12 +478,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { // Cast to string $uniqueID = (string) $uniqueID; - // Debug message - if ((defined('DEBUG_SYSTEM')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] Unique-ID gesetzt auf %s.
\n", - $this->__toString(), - $uniqueID - )); - // Set the ID number $this->uniqueID = $uniqueID; } @@ -525,9 +488,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { * @return $uniqueID The unique ID of this class */ public final function getUniqueID () { - if ((defined('DEBUG_SYSTEM')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] Unique-ID angefordert.
\n", - $this->__toString() - )); return $this->uniqueID; } @@ -539,10 +499,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { public final function resetUniqueID() { // Sweet and simple... ;-) $newUniqueID = $this->generateIdNumber(); - if ((defined('DEBUG_SYSTEM')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] Unique-ID zurückgesetzt auf %s.
\n", - $this->__toString(), - $newUniqueID - )); $this->setUniqueID($newUniqueID); } @@ -552,9 +508,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { * @return $objectDescription The description of this simulation part */ public final function getObjectDescription () { - if ((defined('DEBUG_SYSTEM')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] getObjectDescription erreicht.
\n", - $this->__toString() - )); if (isset($this->objectDescription)) { return $this->objectDescription; } else { @@ -570,10 +523,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { */ public final function setObjectDescription ($objectDescription) { $this->objectDescription = (String) $objectDescription; - if ((defined('DEBUG_SYSTEM')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] Teilbeschreibung wird auf %s gesetzt.
\n", - $this->__toString(), - $this->objectDescription - )); } /** @@ -610,11 +559,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { * @return boolean The result of comparing both class names */ public final function isClass ($class) { - if ((defined('DEBUG_SYSTEM')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] %s=%s?
\n", - $this->__toString(), - $this->__toString(), - $class - )); return ($this->__toString() == $class); } @@ -658,10 +602,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { // Cast the number $value = (float) $value; - if (defined('DEBUG_CORE') && is_object($this->getDebugInstance())) $this->getDebugInstance()->output(sprintf("[%s:] %d wird umformatiert.
\n", - $this->__toString(), - $value - )); // Reformat the US number $price = sprintf("%s %s", @@ -679,9 +619,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { * @return void */ public final function removeNumberFormaters () { - if (defined('DEBUG_CORE') && is_object($this->getDebugInstance())) $this->getDebugInstance()->output(sprintf("[%s:] Zahlenumformatierungszeichen werden entfernt.
\n", - $this->__toString() - )); unset($this->thousands); unset($this->decimals); } @@ -692,10 +629,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { * @return $dbInstance The database layer instance */ public final function getDatabaseInstance () { - if (defined('DEBUG_CORE') && is_object($this->getDebugInstance())) $this->getDebugInstance()->output(sprintf("[%s:] Datenbank-Instanz %s angefordert.
\n", - $this->__toString(), - $this->dbInstance - )); return $this->dbInstance; } @@ -812,11 +745,31 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { $this->fileIOInstance = $fileIOInstance; } + /** + * Protected getter for a manageable application helper class + * + * @return $applicationInstance An instance of a manageable application helper class + */ + protected final function getApplicationInstance () { + return $this->applicationInstance; + } + + /** + * Setter for a manageable application helper class + * + * @param $applicationInstance An instance of a manageable application helper class + * @return void + */ + public final function setApplicationInstance (ManageableApplication $applicationInstance) { + $this->applicationInstance = $applicationInstance; + } + /** * Prepare the template engine (TemplateEngine by default) for a given * application helper instance (ApplicationHelper by default). * - * @param $appInstance An application helper instance + * @param $appInstance An application helper instance or + * null if we shall use the default * @return $tplEngine The template engine instance * @throws NullPointerException If the template engine could not * be initialized @@ -824,8 +777,22 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { * unsupported template engine * @throws MissingLanguageHandlerException If the language sub-system * is not yet initialized - */ - protected function prepareTemplateEngine (BaseFrameworkSystem $appInstance) { + * @throws NullPointerException If the discovered application + * instance is still null + */ + protected function prepareTemplateEngine (BaseFrameworkSystem $appInstance=null) { + // Is the application instance set? + if (is_null($appInstance)) { + // Get the current instance + $appInstance = $this->getApplicationInstance(); + + // Still null? + if (is_null($appInstance)) { + // Thrown an exception + throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER); + } + } + // Generate FQFN for all application templates $fqfn = sprintf("%s%s/%s/%s", PATH, @@ -857,7 +824,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { // Debug message if ((!is_null($this->getDebugInstance())) && (defined('DEBUG_EVAL'))) { - $this->getDebugInstance()->output(sprintf("[%s:] Konstruierte PHP-Anweisung:
%s

\n", + $this->getDebugInstance()->output(sprintf("[%s:] Constructed PHP command:
%s

\n", $this->__toString(), htmlentities($eval) )); @@ -878,6 +845,19 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { // Return the prepared instance return $tplEngine; } + + /** + * Debugs this instance by putting out it's full content + * + * @return void + */ + public final function debugInstance () { + // Generate the output + $content = "
".trim(print_r($this, true))."
"; + + // Output it + ApplicationEntryPoint::app_die("Debug output:".$content); + } } // [EOF] diff --git a/inc/classes/main/commands/.htaccess b/inc/classes/main/commands/.htaccess new file mode 100644 index 0000000000..3a42882788 --- /dev/null +++ b/inc/classes/main/commands/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/main/commands/class_BaseCommand.php b/inc/classes/main/commands/class_BaseCommand.php new file mode 100644 index 0000000000..825b2b052f --- /dev/null +++ b/inc/classes/main/commands/class_BaseCommand.php @@ -0,0 +1,85 @@ + + * @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 + * 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 . + */ +class BaseCommand extends BaseFrameworkSystem { + /** + * The controller we need for this command + */ + private $controllerName = ""; + + /** + * Resolver instance + */ + private $resolverInstance = null; + + /** + * Protected constructor + * + * @return void + */ + protected function __construct ($class) { + // Call parent constructor + parent::__construct($class); + } + + /** + * Setter for controller name + * + * @param $controllerName Name of the controller assigned with this command + * @return void + */ + public final function setControllerName ($controllerName) { + $this->controllerName = (string) $controllerName; + } + + /** + * Getter for controller name + * + * @return $controllerName Name of the controller assigned with this command + */ + public final function getControllerName () { + return $this->controllerName; + } + + /** + * Setter for resolver instance + * + * @param $resolverInstance Instance of a command resolver class + * @return void + */ + public final function setResolverInstance (CommandResolver $resolverInstance) { + $this->resolverInstance = $resolverInstance; + } + + /** + * Getter for resolver instance + * + * @return $resolverInstance Instance of a command resolver class + */ + public final function getResolverInstance () { + return $this->resolverInstance; + } +} + +// [EOF] +?> diff --git a/inc/classes/main/commands/web/.htaccess b/inc/classes/main/commands/web/.htaccess new file mode 100644 index 0000000000..3a42882788 --- /dev/null +++ b/inc/classes/main/commands/web/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/main/commands/web/class_WebHomeCommand.php b/inc/classes/main/commands/web/class_WebHomeCommand.php new file mode 100644 index 0000000000..f45b0d7960 --- /dev/null +++ b/inc/classes/main/commands/web/class_WebHomeCommand.php @@ -0,0 +1,117 @@ + + * @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 + * 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 . + */ +class WebHomeCommand extends BaseCommand implements Commandable { + /** + * Private constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + + // Set special description + $this->setObjectDescription("Home-Command"); + + // Create unique ID number + $this->createUniqueID(); + + // Clean up a little + $this->removeSystemArray(); + } + + /** + * Creates an instance of this class + * + * @param $resolverInstance An instance of a command resolver class + * @return $commandInstance An instance a prepared command class + */ + public final static function createWebHomeCommand (CommandResolver $resolverInstance) { + // Get new instance + $commandInstance = new WebHomeCommand(); + + // Set the application instance + $commandInstance->setResolverInstance($resolverInstance); + + // Return the prepared instance + return $commandInstance; + } + + /** + * Executes the given command with given request and response objects + * + * @param $requestInstance An instance of a class with an Requestable interface + * @param $responseInstance An instance of a class with an Responseable interface + * @return void + */ + public function execute (Requestable $requestInstance, Responseable $responseInstance) { + // Get the application instance + $appInstance = $this->getResolverInstance()->getApplicationInstance(); + + // Prepare a template instance + $templateInstance = $this->prepareTemplateEngine($appInstance); + + // Load the master template + $masterTemplate = $appInstance->getMasterTemplate(); + + // Load header template + $templateInstance->loadCodeTemplate("header"); + + // Compile and assign it with a variable + $templateInstance->compileTemplate(); + $templateInstance->assignTemplateWithVariable("header", "header"); + + // Load footer template + $templateInstance->loadCodeTemplate("footer"); + + // Compile and assign it with a variable + $templateInstance->compileTemplate(); + $templateInstance->assignTemplateWithVariable("footer", "footer"); + + // Load the home template + $templateInstance->loadWebTemplate("home"); + + // Assign the home template with the master template as a content ... ;) + $templateInstance->assignTemplateWithVariable("home", "content"); + + // Load the master template + $templateInstance->loadCodeTemplate($masterTemplate); + + // Set title + $title = ucfirst($requestInstance->getRequestElement($this->getConfigInstance()->readConfig("command_parameter"))); + if (empty($title)) $title = "Home"; + $templateInstance->assignVariable("title", $title); + + // ... and all variables. This should be merged together in a pattern + // to make things easier. A cache mechanism should be added between + // these two calls to cache compiled templates. + $templateInstance->compileVariables(); + + // Get the content back from the template engine and put it in the response class + $templateInstance->transferToResponse($responseInstance); + } +} + +// [EOF] +?> diff --git a/inc/classes/main/compressor/class_Bzip2Compressor.php b/inc/classes/main/compressor/class_Bzip2Compressor.php index 48eb84c6d1..88322b60c4 100644 --- a/inc/classes/main/compressor/class_Bzip2Compressor.php +++ b/inc/classes/main/compressor/class_Bzip2Compressor.php @@ -3,10 +3,10 @@ * BZIP2 compression and decompression class * * @author Roland Haeder - * @version 0.3.0 + * @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 @@ -19,22 +19,17 @@ * 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 . + * along with this program. If not, see . */ class Bzip2Compressor extends BaseFrameworkSystem implements Compressor { /** - * Private constructor + * Protected constructor * * @return void */ - private function __construct () { + protected function __construct () { // Call parent constructor! - parent::constructor(__CLASS__); - - // Debug message - if (((defined('DEBUG_COMPRESSOR')) || (defined('DEBUG_ALL'))) && (defined('DEBUG_CONSTRUCT'))) $this->getDebugInstance()->output(sprintf("[%s:] Konstruktor erreicht.
\n", - $this->__toString() - )); + parent::__construct(__CLASS__); // Set description $this->setObjectDescription("BZIP2-Kompressor"); @@ -53,19 +48,9 @@ class Bzip2Compressor extends BaseFrameworkSystem implements Compressor { if ((function_exists('bzcompress')) && (function_exists('bzdecompress'))) { // Compressor can maybe be used $cInstance = new Bzip2Compressor(); - - // Debug message - if ((defined('DEBUG_COMPRESSOR')) || (defined('DEBUG_ALL'))) $cInstance->getDebugInstance()->output(sprintf("[%s:] BZIP2-Kompression wird verwendet.
\n", - $cInstance->__toString() - )); } else { // Routines not found! $cInstance = null; - - // Debug message - if ((defined('DEBUG_COMPRESSOR')) || (defined('DEBUG_ALL'))) $cInstance->getDebugInstance()->output(sprintf("[%s:] BZIP2-Kompressionsroutinen nicht gefunden.
\n", - $cInstance->__toString() - )); } // Return the compressor instance @@ -112,9 +97,6 @@ class Bzip2Compressor extends BaseFrameworkSystem implements Compressor { * @return $string Returns always "bz2" */ public final function getCompressorExtension () { - if ((defined('DEBUG_COMPRESSOR')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:] Dateierweiterung angefordert.
\n", - $this->__toString() - )); return "bz2"; } } diff --git a/inc/classes/main/compressor/class_GzipCompressor.php b/inc/classes/main/compressor/class_GzipCompressor.php index 9d9fa034bb..4e95f801f9 100644 --- a/inc/classes/main/compressor/class_GzipCompressor.php +++ b/inc/classes/main/compressor/class_GzipCompressor.php @@ -3,10 +3,10 @@ * GZIP compression and decompression class * * @author Roland Haeder - * @version 0.3.0 + * @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 @@ -19,22 +19,17 @@ * 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 . + * along with this program. If not, see . */ class GzipCompressor extends BaseFrameworkSystem implements Compressor { /** - * Private constructor + * Protected constructor * * @return void */ - private function __construct () { + protected function __construct () { // Call parent constructor! - parent::constructor(__CLASS__); - - // Debug message - if (((defined('DEBUG_COMPRESSOR')) || (defined('DEBUG_ALL'))) && (defined('DEBUG_CONSTRUCT'))) $this->getDebugInstance()->output(sprintf("[%s:] Konstruktor erreicht.
\n", - $this->__toString() - )); + parent::__construct(__CLASS__); // Set description $this->setObjectDescription("GZIP-Kompressor"); @@ -53,19 +48,9 @@ class GzipCompressor extends BaseFrameworkSystem implements Compressor { if ((function_exists('gzcompress')) && (function_exists('gzuncompress'))) { // Compressor can maybe be used $cInstance = new GzipCompressor(); - - // Debug message - if ((defined('DEBUG_COMPRESSOR')) || (defined('DEBUG_ALL'))) $cInstance->getDebugInstance()->output(sprintf("[%s:] GZIP-Kompression wird verwendet.
\n", - $cInstance->__toString() - )); } else { // Routines not found! $cInstance = null; - - // Debug message - if ((defined('DEBUG_COMPRESSOR')) || (defined('DEBUG_ALL'))) $cInstance->getDebugInstance()->output(sprintf("[%s:] GZIP-Kompressionsroutinen nicht gefunden.
\n", - $cInstance->__toString() - )); } // Return the compressor instance @@ -112,9 +97,6 @@ class GzipCompressor extends BaseFrameworkSystem implements Compressor { * @return $string Returns always "gz" */ public final function getCompressorExtension () { - if ((defined('DEBUG_COMPRESSOR')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:] Dateierweiterung angefordert.
\n", - $this->__toString() - )); return "gz"; } } diff --git a/inc/classes/main/compressor/class_NullCompressor.php b/inc/classes/main/compressor/class_NullCompressor.php index c432efeb9e..a8a570c581 100644 --- a/inc/classes/main/compressor/class_NullCompressor.php +++ b/inc/classes/main/compressor/class_NullCompressor.php @@ -3,10 +3,10 @@ * Null compression and decompression class * * @author Roland Haeder - * @version 0.3.0 + * @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 @@ -19,22 +19,17 @@ * 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 . + * along with this program. If not, see . */ class NullCompressor extends BaseFrameworkSystem implements Compressor { /** - * Private constructor + * Protected constructor * * @return void */ - private function __construct () { + protected function __construct () { // Call parent constructor! - parent::constructor(__CLASS__); - - // Debug message - if (((defined('DEBUG_COMPRESSOR')) || (defined('DEBUG_ALL'))) && (defined('DEBUG_CONSTRUCT'))) $this->getDebugInstance()->output(sprintf("[%s:] Konstruktor erreicht.
\n", - $this->__toString() - )); + parent::__construct(__CLASS__); // Set description $this->setObjectDescription("Null-Kompressor"); @@ -96,9 +91,6 @@ class NullCompressor extends BaseFrameworkSystem implements Compressor { * @return $string Returns always "null" */ public final function getCompressorExtension () { - if ((defined('DEBUG_COMPRESSOR')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:] Dateierweiterung angefordert.
\n", - $this->__toString() - )); return "null"; } } diff --git a/inc/classes/main/controller/.htaccess b/inc/classes/main/controller/.htaccess new file mode 100644 index 0000000000..3a42882788 --- /dev/null +++ b/inc/classes/main/controller/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/main/controller/class_ b/inc/classes/main/controller/class_ new file mode 100644 index 0000000000..2c22f0647b --- /dev/null +++ b/inc/classes/main/controller/class_ @@ -0,0 +1,46 @@ + + * @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 + * 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 . + */ +class Controller extends BaseController implements Controller { + /** + * Private constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + + // Set part description + $this->setObjectDescription("Ein spezieller Controller"); + + // Create unique ID number + $this->createUniqueID(); + + // Clean up a little + $this->removeSystemArray(); + } +} + +// [EOF] +?> diff --git a/inc/classes/main/controller/class_BaseController.php b/inc/classes/main/controller/class_BaseController.php new file mode 100644 index 0000000000..f7aea5c307 --- /dev/null +++ b/inc/classes/main/controller/class_BaseController.php @@ -0,0 +1,40 @@ + + * @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 + * 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 . + */ +class BaseController extends BaseFrameworkSystem { + /** + * Protected constructor + * + * @return void + */ + protected function __construct ($class) { + // Call parent constructor + parent::__construct($class); + + // Clean up a little + $this->removeNumberFormaters(); + } +} + +// [EOF] +?> diff --git a/inc/classes/main/controller/default/.htaccess b/inc/classes/main/controller/default/.htaccess new file mode 100644 index 0000000000..3a42882788 --- /dev/null +++ b/inc/classes/main/controller/default/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/main/controller/default/class_WebDefaultController.php b/inc/classes/main/controller/default/class_WebDefaultController.php new file mode 100644 index 0000000000..38d92ce366 --- /dev/null +++ b/inc/classes/main/controller/default/class_WebDefaultController.php @@ -0,0 +1,96 @@ + + * @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 + * 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 . + */ +class WebWebDefaultController extends BaseController implements Controller { + /** + * Instance of a CommandResolver class + */ + private $resolverInstance = null; + + /** + * Private constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + + // Set part description + $this->setObjectDescription("Standart-Controller für alle übrigen Anfragen"); + + // Create unique ID number + $this->createUniqueID(); + + // Clean up a little + $this->removeSystemArray(); + } + + /** + * Creates an instance of this class + * + * @param $resolverInstance An instance of a command resolver class + * @return $controllerInstance A prepared instance of this class + */ + public final static function createWebDefaultController (CommandResolver $resolverInstance) { + // Create the instance + $controllerInstance = new WebDefaultController(); + + // Set the command resolver + $controllerInstance->setResolverInstance($resolverInstance); + + // Return the prepared instance + return $controllerInstance; + } + + /** + * Setter for a command resolver instance + * + * @param $resolverInstance An instance of a command resolver class + * @return void + */ + public final function setResolverInstance (CommandResolver $resolverInstance) { + $this->resolverInstance = $resolverInstance; + } + + /** + * Handles the given request and response + * + * @param $requestInstance An instance of a request class + * @param $responseInstance An instance of a response class + * @return void + */ + public function handleRequest (Requestable $requestInstance, Responseable $responseInstance) { + // Get the command instance + $commandInstance = $this->resolverInstance->resolvCommandByRequest($requestInstance); + + // Execute the command + $commandInstance->execute($requestInstance, $responseInstance); + + // Flush the response out + $responseInstance->flushBuffer(); + } +} + +// [EOF] +?> diff --git a/inc/classes/main/controller/default/class_WebDefaultNewsController.php b/inc/classes/main/controller/default/class_WebDefaultNewsController.php new file mode 100644 index 0000000000..ff86531c71 --- /dev/null +++ b/inc/classes/main/controller/default/class_WebDefaultNewsController.php @@ -0,0 +1,111 @@ + + * @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 + * 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 . + */ +class WebDefaultNewsController extends BaseController implements Controller { + /** + * Instance of a CommandResolver class + */ + private $resolverInstance = null; + + /** + * Private constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + + // Set part description + $this->setObjectDescription("Standart-Controller mit News-Auflistung"); + + // Create unique ID number + $this->createUniqueID(); + + // Clean up a little + $this->removeSystemArray(); + } + + /** + * Creates an instance of this class + * + * @param $resolverInstance An instance of a command resolver class + * @return $controllerInstance A prepared instance of this class + */ + public final static function createWebDefaultNewsController (CommandResolver $resolverInstance) { + // Create the instance + $controllerInstance = new WebDefaultNewsController(); + + // Set the command resolver + $controllerInstance->setResolverInstance($resolverInstance); + + // Return the prepared instance + return $controllerInstance; + } + + /** + * Setter for a command resolver instance + * + * @param $resolverInstance An instance of a command resolver class + * @return void + */ + public final function setResolverInstance (CommandResolver $resolverInstance) { + $this->resolverInstance = $resolverInstance; + } + + /** + * Handles the given request and response + * + * @param $requestInstance An instance of a request class + * @param $responseInstance An instance of a response class + * @return void + */ + public function handleRequest (Requestable $requestInstance, Responseable $responseInstance) { + // Get the command instance from the resolver by sending a request instance to the resolver + $commandInstance = $this->resolverInstance->resolvCommandByRequest($requestInstance); + + // Get the news page variable from the request instance + $newsPage = $requestInstance->getRequestElement("news_page"); + + // Load the news here + $this->loadNews($newsPage); + + // Execute the command + $commandInstance->execute($requestInstance, $responseInstance); + + // Flush the response out + $responseInstance->flushBuffer(); + } + + /** + * Loads news from the connected database for later usage + * + * @param $newsPage Page of listed news we want to read + * @return void + */ + private function loadNews ($newsPage) { + } +} + +// [EOF] +?> diff --git a/inc/classes/main/controller/registration/.htaccess b/inc/classes/main/controller/registration/.htaccess new file mode 100644 index 0000000000..3a42882788 --- /dev/null +++ b/inc/classes/main/controller/registration/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/main/controller/registration/class_DefaultRegistrationController.php b/inc/classes/main/controller/registration/class_DefaultRegistrationController.php new file mode 100644 index 0000000000..2f15e400db --- /dev/null +++ b/inc/classes/main/controller/registration/class_DefaultRegistrationController.php @@ -0,0 +1,71 @@ + + * @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 + * 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 . + */ +class DefaultRegistrationController extends BaseController implements Controller { + /** + * Private constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + + // Set part description + $this->setObjectDescription("Ein Standart-Anmelde-Controller"); + + // Create unique ID number + $this->createUniqueID(); + + // Clean up a little + $this->removeSystemArray(); + } + + /** + * Creates an instance of this class + * + * @return $controllerInstance A prepared instance of this class + */ + public final static function createDefaultRegistrationController () { + // Create the instance + $controllerInstance = new DefaultRegistrationController(); + + // Return the prepared instance + return $controllerInstance; + } + + /** + * Handles the given request and response + * + * @param $requestInstance An instance of a request class + * @param $responseInstance An instance of a response class + * @return void + */ + public function handleRequest (Requestable $requestInstance, Responseable $responseInstance) { + die(__METHOD__.": Stub!"); + } +} + +// [EOF] +?> diff --git a/inc/classes/main/database/class_BaseDatabaseFrontend.php b/inc/classes/main/database/class_BaseDatabaseFrontend.php index b8f0d43541..ac31d501f9 100644 --- a/inc/classes/main/database/class_BaseDatabaseFrontend.php +++ b/inc/classes/main/database/class_BaseDatabaseFrontend.php @@ -4,10 +4,10 @@ * * @see DatabaseFrontendInterface - An interface for database frontends (front-end to the application) * @author Roland Haeder - * @version 0.3.0 + * @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 @@ -20,7 +20,7 @@ * 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 . + * along with this program. If not, see . */ abstract class BaseDatabaseFrontend extends BaseFrameworkSystem implements DatabaseFrontendInterface, LimitableObject { /** @@ -29,43 +29,24 @@ abstract class BaseDatabaseFrontend extends BaseFrameworkSystem implements Datab private $limitInstance = null; /** - * Private constructor + * Protected constructor * * @return void */ - private function __construct($class) { + protected function __construct($class) { // Call parent constructor - parent::constructor($class); - - // Debug message - if (((defined('DEBUG_DATABASE')) || (defined('DEBUG_ALL'))) && (defined('DEBUG_CONSTRUCT'))) $this->getDebugInstance()->output(sprintf("[%s:] Konstruktor erreicht.
\n", - $this->__toString() - )); + parent::__construct($class); // Clean up a little $this->removeNumberFormaters(); } - /** - * The public constructor - * - * @return void - */ - public function constructor ($class) { - // Calls just the private one - $this->__construct($class); - } - /** * Getter for limitation instance * * @return $limitInstance The instance to the object ObjectLimits */ public final function getLimitInstance () { - if ((defined('DEBUG_DATABASE')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:] Limitierungsinstanz %s angefordert.
\n", - $this->__toString(), - $this->limitInstance->__toString() - )); return $this->limitInstance; } @@ -78,12 +59,6 @@ abstract class BaseDatabaseFrontend extends BaseFrameworkSystem implements Datab * @return void */ public final function limitObject (ObjectLimits $limitInstance) { - // Debug message - if ((defined('DEBUG_DATABASE')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:] Limitierungsinstanz %s soll verwendet werden.
\n", - $this->__toString(), - $limitInstance->__toString() - )); - // Get limitArray for validation $array = $limitInstance->getLimitArray(); @@ -91,13 +66,6 @@ abstract class BaseDatabaseFrontend extends BaseFrameworkSystem implements Datab if ($array->count() > 0) { // Okay, there is enougth $this->limitInstance = $limitInstance; - - // Debug message - if ((defined('DEBUG_DATABASE')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:] Limitierungsinstanz %s wird verwendet und beinhaltet %s Einträge.
\n", - $this->__toString(), - $limitInstance->__toString(), - $array->count() - )); } } } diff --git a/inc/classes/main/database/classes/class_LocalFileDatabase.php b/inc/classes/main/database/classes/class_LocalFileDatabase.php index 3f207c8499..84babfeafd 100644 --- a/inc/classes/main/database/classes/class_LocalFileDatabase.php +++ b/inc/classes/main/database/classes/class_LocalFileDatabase.php @@ -5,10 +5,10 @@ * This class serializes objects and saves them to local files. * * @author Roland Haeder - * @version 0.3.0 + * @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 @@ -21,7 +21,7 @@ * 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 . + * along with this program. If not, see . */ class LocalFileDatabase extends BaseDatabaseFrontend implements DatabaseFrontendInterface { /** @@ -50,9 +50,9 @@ class LocalFileDatabase extends BaseDatabaseFrontend implements DatabaseFrontend * * @return void */ - private function __construct() { + protected function __construct() { // Call parent constructor - parent::constructor(__CLASS__); + parent::__construct(__CLASS__); // Set description $this->setObjectDescription("Dateidatenbankschicht"); @@ -99,11 +99,6 @@ class LocalFileDatabase extends BaseDatabaseFrontend implements DatabaseFrontend throw new SavePathWriteProtectedException($savePath, self::EXCEPTION_WRITE_PROTECED_PATH); } - // Debug output - if (defined('DEBUG_DATABASE')) $dbInstance->getDebugInstance()->output(sprintf("[%s:] Es werden lokale Dateien zum Speichern von Objekten verwendet.
\n", - $dbInstance->__toString() - )); - // Set save path and IO instance $dbInstance->setSavePath($savePath); $dbInstance->setFileIOInstance($ioInstance); @@ -122,12 +117,6 @@ class LocalFileDatabase extends BaseDatabaseFrontend implements DatabaseFrontend // Secure string $savePath = (string) $savePath; - // Debug message - if ((defined('DEBUG_DATABASE')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:] Lokaler Speicherpfad %s wird verwendet.
\n", - $this->__toString(), - $savePath - )); - // Set save path $this->savePath = $savePath; } @@ -164,24 +153,11 @@ class LocalFileDatabase extends BaseDatabaseFrontend implements DatabaseFrontend throw new MissingMethodException(array($object, '__toString'), self::EXCEPTION_MISSING_METHOD); } - // Debug message - if ((defined('DEBUG_DATABASE')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:] Das Objekt %s soll in eine lokale Datei gespeichert werden.
\n", - $this->__toString(), - $object->__toString() - )); - // Get a string containing the serialized object. We cannot exchange // $this and $object here because $object does not need to worry // about it's limitations... ;-) $serialized = $this->serializeObject($object); - // Debug message - if ((defined('DEBUG_DATABASE')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:] Das Objekt %s ist nach der Serialisierung %s Byte gross.
\n", - $this->__toString(), - $object->__toString(), - strlen($serialized) - )); - // Get a path name plus file name and append the extension $fqfn = $this->getSavePath() . $object->getPathFileNameFromObject() . "." . $this->getFileExtension(); diff --git a/inc/classes/main/extended/class_SerializationContainer.php b/inc/classes/main/extended/class_SerializationContainer.php index d32551c848..a0980e3d61 100644 --- a/inc/classes/main/extended/class_SerializationContainer.php +++ b/inc/classes/main/extended/class_SerializationContainer.php @@ -4,10 +4,10 @@ * other classes * * @author Roland Haeder - * @version 0.3.0 + * @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 @@ -20,7 +20,7 @@ * 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 . + * along with this program. If not, see . */ class SerializationContainer extends FrameworkArrayObject { /** @@ -30,10 +30,7 @@ class SerializationContainer extends FrameworkArrayObject { */ public function __construct () { // Call parent constructor - parent::constructor(__CLASS__); - - // Debug message - if ((defined('DEBUG_CONTAINER')) && (defined('DEBUG_CONSTRUCT'))) $this->getDebugInstance()->output("[SerializationContainer:] Konstruktor erreicht.
\n"); + parent::__construct(__CLASS__); } /** @@ -64,13 +61,13 @@ class SerializationContainer extends FrameworkArrayObject { ); // Debug eval command - if ((defined('DEBUG_EVAL')) || (defined('DEBUG_ALL'))) $limitInstance->getDebugInstance()->output(sprintf("[%s:] Konstruierte PHP-Anweisung:
%s

\n", + if (defined('DEBUG_EVAL')) $limitInstance->getDebugInstance()->output(sprintf("[%s:] Constructed PHP command:
%s

\n", $this->__toString(), htmlentities($eval) )); // Run it - @eval($eval); + eval($eval); // Add this item to the container list $containerInstance->append(array( diff --git a/inc/classes/main/request/.htaccess b/inc/classes/main/request/.htaccess new file mode 100644 index 0000000000..3a42882788 --- /dev/null +++ b/inc/classes/main/request/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/main/request/class_HttpRequest.php b/inc/classes/main/request/class_HttpRequest.php new file mode 100644 index 0000000000..6826d76b71 --- /dev/null +++ b/inc/classes/main/request/class_HttpRequest.php @@ -0,0 +1,151 @@ + + * @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 + * 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 . + */ +class HttpRequest extends BaseFrameworkSystem implements Requestable { + /** + * Array for the request data + */ + private $requestData = array(); + + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + + // Set part description + $this->setObjectDescription("HTTP-Anfrage"); + + // Create unique ID number + $this->createUniqueID(); + + // Clean up a little + $this->removeNumberFormaters(); + $this->removeSystemArray(); + } + + /** + * Creates an instance of this class and prepares it a little + * + * @return $httpInstance An instance of this class + */ + public final static function createHttpRequest () { + // Create an instance + $httpInstance = new HttpRequest(); + + // Prepare the HTTP request data for usage + $httpInstance->prepareRequestData(); + + // Return the prepared instance + return $httpInstance; + } + + /** + * Prepares the HTTP request data for usage by currently copying + * $_REQUEST into a private attribute. Later on we can add more + * things for initialization here. + * + * @return void + */ + public function prepareRequestData () { + // Copy the $_REQUEST array + $this->requestData = $_REQUEST; + } + + /** + * Checks wether a request element is set + * @param $element Name of the request element we want to check + * @return $isSet Wether the request element is set + * @throws MissingArrayElementsException Thrown if a request element is not set + */ + public function isRequestElementSet ($element) { + // Is this element found? + if (!isset($this->requestData[$element])) { + // Then throw an exception + throw new MissingArrayElementsException(array($this, 'requestData', $element), self::EXCEPTION_MISSING_ELEMENT); + } + + // All clear + return true; + } + + /** + * Getter for request element or 'null' if the element was not found + * + * @param $element Name of the request element we want to check + * @return $value Value of the found request element or 'null' if the + * element was not found + */ + public function getRequestElement ($element) { + // Initialize value + $value = null; + + try { + if ($this->isRequestElementSet($element)) { + $value = $this->requestData[$element]; + } + } catch (MissingArrayElementsException $e) { + // Do nothing here + } + + // Return the element's value + return $value; + } + + /** + * Wrapper method for array_key() function for the request data array + * + * @return $array An array containing all array keys to return + */ + public function getParameterNames () { + return array_keys($this->requestData); + } + + /** + * Getter for a header element or 'null' if the header was not found + * + * @param $headerName Name of the header + * @return $headerValue Value of the header or 'null' if not found + */ + public function getHeader ($headerName) { + // Default return value on error + $headerValue = null; + + // Construct the name + $name = 'HTTP_' . strtolower(str_replace('-', '_', $headerName)); + + // Does this header exist? + if (isset($_SERVER[$name])) { + $headerValue = $_SERVER[$name]; + } + + // Return the value + return $headerValue; + } +} + +// [EOF] +?> diff --git a/inc/classes/main/resolver/.htaccess b/inc/classes/main/resolver/.htaccess new file mode 100644 index 0000000000..3a42882788 --- /dev/null +++ b/inc/classes/main/resolver/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/main/resolver/class_BaseResolver.php b/inc/classes/main/resolver/class_BaseResolver.php new file mode 100644 index 0000000000..d442ef38e4 --- /dev/null +++ b/inc/classes/main/resolver/class_BaseResolver.php @@ -0,0 +1,115 @@ + + * @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 + * 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 . + */ +class BaseResolver extends BaseFrameworkSystem { + /** + * Validated command name + */ + private $commandName = ""; + + /** + * Prefix for local, remote or other resolver + */ + private $commandPrefix = ""; + + /** + * Private constructor + * + * @return void + */ + protected function __construct ($class) { + // Call parent constructor + parent::__construct($class); + + // Clean up a little + $this->removeSystemArray(); + } + + /** + * Setter for command name + * + * @param $commandName Last validated command name + * @return void + */ + protected final function setCommandName ($commandName) { + $this->commandName = $commandName; + } + + /** + * Getter for command name + * + * @return $commandName Last validated command name + */ + protected final function getCommandName () { + return $this->commandName; + } + + /** + * Setter for command prefix + * + * @param $commandPrefix Last validated commandPrefix + * @return void + */ + protected final function setCommandPrefix ($commandPrefix) { + $this->commandPrefix = $commandPrefix; + } + + /** + * Checks wether the given command is valid + * + * @param $commandName The default command we shall execute + * @return $isValid Wether the given command is valid + * @throws EmptyVariableException Thrown if the given command is not set + */ + public function isCommandValid ($commandName) { + // By default nothing shall be valid + $isValid = false; + + // Is a command set? + if (empty($commandName)) { + // Then thrown an exception here + throw new EmptyVariableException(array($this, 'commandName'), self::EXCEPTION_UNEXPECTED_EMPTY_STRING); + } + + // Now, let us create the full name of the command class + $class = sprintf("%s%sCommand", + $this->commandPrefix, + ucfirst(strtolower($commandName)) + ); + + // Is this class already loaded? + if (class_exists($class)) { + // This class does exist. :-) + $isValid = true; + } + + // Set command name + $this->setCommandName($commandName); + + // Return the result + return $isValid; + } +} + +// [EOF] +?> diff --git a/inc/classes/main/resolver/web/.htaccess b/inc/classes/main/resolver/web/.htaccess new file mode 100644 index 0000000000..3a42882788 --- /dev/null +++ b/inc/classes/main/resolver/web/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/main/resolver/web/class_WebCommandResolver.php b/inc/classes/main/resolver/web/class_WebCommandResolver.php new file mode 100644 index 0000000000..30b31b5240 --- /dev/null +++ b/inc/classes/main/resolver/web/class_WebCommandResolver.php @@ -0,0 +1,184 @@ + + * @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 + * 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 . + */ +class WebCommandResolver extends BaseResolver implements CommandResolver { + /** + * Last successfull resolved command + */ + private $lastCommandInstance = ""; + + /** + * Private constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + + // Set part description + $this->setObjectDescription("Lokaler Kommandoauflöser"); + + // Create unique ID number + $this->createUniqueID(); + + // Clean up a little + $this->removeNumberFormaters(); + $this->removeSystemArray(); + + // Set prefix to "Web" + $this->setCommandPrefix("Web"); + } + + /** + * Creates an instance of a Web command resolver with a given default command + * + * @param $defaultCommand The default command we shall execute + * @param $appInstance An instance of a manageable application helper class + * @return $resolverInstance The prepared command resolver instance + * @throws EmptyVariableException Thrown if the default command is not set + * @throws InvalidCommandException Thrown if the default command is invalid + */ + public final static function createWebCommandResolver ($defaultCommand, ManageableApplication $appInstance) { + // Create the new instance + $resolverInstance = new WebCommandResolver(); + + // Is the variable $defaultCommand set and the command is valid? + if (empty($defaultCommand)) { + // Then thrown an exception here + throw new EmptyVariableException(array($resolverInstance, 'defaultCommand'), self::EXCEPTION_UNEXPECTED_EMPTY_STRING); + } elseif (!$resolverInstance->isCommandValid($defaultCommand)) { + // Invalid command found + throw new InvalidCommandException(array($resolverInstance, $defaultCommand), self::EXCEPTION_INVALID_COMMAND); + } + + // Set the application instance + $resolverInstance->setApplicationInstance($appInstance); + + // Return the prepared instance + return $resolverInstance; + } + + /** + * Returns an command instance for a given request class or null if + * MissingArrayElementsException was thrown + * + * @param $requestInstance An instance of a request class + * @return $commandInstance An instance of the resolved command + * @throws InvalidCommandException Thrown if $commandName is + * invalid + * @throws InvalidCommandInstanceException Thrown if $commandInstance + * is an invalid instance + */ + public function resolvCommandByRequest (Requestable $requestInstance) { + // Init variables + $commandName = ""; + $commandInstance = null; + + // Test if the required parameter is set + try { + // This goes fine so let's resolv the command + $commandName = $requestInstance->getRequestElement($this->getConfigInstance()->readConfig("command_parameter")); + + // Is the command empty? Then fall back to default command + if (empty($commandName)) $commandName = $this->getConfigInstance()->readConfig("default_command"); + + // Check if the command is valid + if (!$this->isCommandValid($commandName)) { + // This command is invalid! + throw new InvalidCommandException(array($this, $commandName), self::EXCEPTION_INVALID_COMMAND); + } + + // Get the command + $commandInstance = $this->loadCommand($commandName); + + // And validate it + if ((!is_object($commandInstance)) || (!$commandInstance instanceof Commandable)) { + // This command has an invalid instance! + throw new InvalidCommandInstanceException(array($this, $commandName), self::EXCEPTION_INVALID_COMMAND); + } + + // Set last command + $this->lastCommandInstance = $commandInstance; + } catch (MissingArrayElementsException $e) { + // Just catch it here... + } + + // Return the resolved command instance + return $commandInstance; + } + + /** + * "Loads" a given command and instances it if not yet cached + * + * @param $commandName A command name we shall look for + * @return $commandInstance A loaded command instance + * @throws InvalidCommandException Thrown if even the default + * command class is missing (bad!) + */ + private function loadCommand ($commandName) { + // Cache default command + $defaultCommand = $this->getConfigInstance()->readConfig("default_command"); + + // Init command instance + $commandInstance = null; + + // Create command class name + $class = sprintf("Web%sCommand", + ucfirst(strtolower($commandName)) + ); + + // Is this class loaded? + if (!class_exists($class)) { + // Class not found, so try the default one or throw exception + if ($commandName != $defaultCommand) { + // Try the default command + return $this->loadCommand($defaultCommand); + } else { + // Still not found? + throw new InvalidCommandException(array($this, $defaultCommand), self::EXCEPTION_INVALID_COMMAND); + } + } + + // Initiate the command + $eval = sprintf("\$commandInstance = %s::create%s(\$this);", + $class, + $class + ); + + // Run the command + eval($eval); + + // Is the instance valid? + if ((!is_object($commandInstance)) || (!$commandInstance instanceof Commandable)) { + // Something is wrong + $commandInstance = null; + } + + // Return the result + return $commandInstance; + } +} + +// [EOF] +?> diff --git a/inc/classes/main/resolver/web/class_WebControllerResolver.php b/inc/classes/main/resolver/web/class_WebControllerResolver.php new file mode 100644 index 0000000000..c3bebd50f4 --- /dev/null +++ b/inc/classes/main/resolver/web/class_WebControllerResolver.php @@ -0,0 +1,189 @@ + + * @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 + * 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 . + */ +class WebControllerResolver extends BaseResolver implements ControllerResolver { + /** + * Last successfull resolved controller + */ + private $lastControllerName = ""; + + /** + * Private constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + + // Set part description + $this->setObjectDescription(""); + + // Create unique ID number + $this->createUniqueID(); + + // Clean up a little + $this->removeNumberFormaters(); + $this->removeSystemArray(); + + // Set prefix to "Web" + $this->setCommandPrefix("Web"); + } + + /** + * Creates an instance of a resolver class with a given command + * + * @param $commandName The default command we shall execute + * @param $appInstance An instance of a manageable application helper class + * @return $resolverInstance The prepared command resolver instance + * @throws EmptyVariableException Thrown if the default command is not set + * @throws InvalidCommandException Thrown if the default command is invalid + */ + public final static function createWebControllerResolver ($commandName, ManageableApplication $appInstance) { + // Create the new instance + $resolverInstance = new WebControllerResolver(); + + // Is the variable $commandName set and the command is valid? + if (empty($commandName)) { + // Then thrown an exception here + throw new EmptyVariableException(array($resolverInstance, 'commandName'), self::EXCEPTION_UNEXPECTED_EMPTY_STRING); + } elseif (!$resolverInstance->isCommandValid($commandName)) { + // Invalid command found + throw new InvalidCommandException(array($resolverInstance, $commandName), self::EXCEPTION_INVALID_COMMAND); + } + + // Set the application instance + $resolverInstance->setApplicationInstance($appInstance); + + // Return the prepared instance + return $resolverInstance; + } + + /** + * Resolves the default controller of the given command + * + * @return $controllerInstance A controller instance for the default + * command + * @throws InvalidCommandException Thrown if $commandName is + * invalid + * @throws InvalidControllerInstanceException Thrown if $commandInstance + * is invalid + */ + public function resolveDefaultController () { + // Init variables + $commandName = ""; + $controllerInstance = null; + + // Try to resolv the command + try { + // Get the command name + $commandName = $this->getCommandName(); + + // Check if the command is valid + if (!$this->isCommandValid($commandName)) { + // This command is invalid! + throw new InvalidCommandException(array($this, $commandName), self::EXCEPTION_INVALID_COMMAND); + } + + // Get the command + $controllerInstance = $this->loadController($commandName); + + // And validate it + if ((!is_object($controllerInstance)) || (!$controllerInstance instanceof Controller)) { + // This command has an invalid instance! + throw new InvalidControllerInstanceException(array($this, $commandName), self::EXCEPTION_INVALID_CONTROLLER); + } + + // Set last command + $this->lastCommandInstance = $controllerInstance; + } catch (MissingArrayElementsException $e) { + // Just catch it here... + } + + // Return the maybe resolved instance + return $controllerInstance; + } + + /** + * "Loads" a given controller and instances it if not yet cached + * + * @param $commandName A controller name we shall look for + * @return $controllerInstance A loaded controller instance + * @throws DefaultControllerException Thrown if even the default + * controller class is missing (bad!) + */ + private function loadController ($commandName) { + // Cache default command + $defaultCommand = $this->getConfigInstance()->readConfig("default_command"); + + // Init controller instance + $controllerInstance = null; + + // Default controller + $class = "WebDefaultController"; + + // Generate the class name + if ($commandName != $defaultCommand) { + // Create controller class name + $class = sprintf("Web%sController", + ucfirst(strtolower($commandName)) + ); + } elseif ($this->getConfigInstance()->readConfig("home_with_news") == "Y") { + // Yes, display news in home then set default controller with news + $class = "WebDefaultNewsController"; + } + + // Is this class loaded? + if (!class_exists($class)) { + // Class not found, so try the default one or throw exception + if ($commandName != $defaultCommand) { + // Try the default controller + return $this->loadController($defaultCommand); + } else { + // Still not found? + throw new DefaultControllerException($this, self::EXCEPTION_DEFAUL_CONTROLLER_GONE); + } + } + + // Initiate the controller + $eval = sprintf("\$controllerInstance = %s::create%s(WebCommandResolver::createWebCommandResolver(\$commandName, \$this->getApplicationInstance()));", + $class, + $class + ); + + // Run the command + eval($eval); + + // Is the instance valid? + if ((!is_object($controllerInstance)) || (!$controllerInstance instanceof Controller)) { + // Something is wrong + $controllerInstance = null; + } + + // Return the result + return $controllerInstance; + } +} + +// [EOF] +?> diff --git a/inc/classes/main/response/.htaccess b/inc/classes/main/response/.htaccess new file mode 100644 index 0000000000..3a42882788 --- /dev/null +++ b/inc/classes/main/response/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/main/response/class_HttpResponse.php b/inc/classes/main/response/class_HttpResponse.php new file mode 100644 index 0000000000..05e6f987cf --- /dev/null +++ b/inc/classes/main/response/class_HttpResponse.php @@ -0,0 +1,161 @@ + + * @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 + * 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 . + */ +class HttpResponse extends BaseFrameworkSystem implements Responseable { + /** + * Response status + */ + private $responseStatus = "200 OK"; + + /** + * Array with all headers + */ + private $responseHeaders = array(); + + /** + * Body of the response + */ + private $responseBody = ""; + + /** + * Instance of the template engine + */ + private $templateEngine = null; + + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + + // Set part description + $this->setObjectDescription("HTTP-Antwort"); + + // Create unique ID number + $this->createUniqueID(); + + // Clean up a little + $this->removeNumberFormaters(); + $this->removeSystemArray(); + } + + /** + * Creates an object of this class + * + * @param $appInstance An instance of a manageable application + * @return $responseInstance A prepared instance of this class + */ + public final static function createHttpResponse (ManageableApplication $appInstance) { + // Get a new instance + $responseInstance = new HttpResponse(); + + // Initialize the template engine here + $responseInstance->initTemplateEngine($appInstance); + + // Return the prepared instance + return $responseInstance; + } + + /** + * Setter for status + * + * @param $status New response status + * @return void + */ + public final function setResponseStatus ($status) { + $this->responseStatus = (string) $status; + } + + /** + * Add header element + * + * @param $name Name of header element + * @param $value Value of header element + * @return void + */ + public final function addHeader ($name, $value) { + $this->responseHeaders[$name] = $value; + } + + /** + * "Writes" data to the response body + * + * @param $output Output we shall sent in the HTTP response + * @return void + */ + public function writeToBody ($output) { + $this->responseBody .= $output; + } + + /** + * Flushs the cached HTTP response to the outer world + * + * @param $foce Wether we shall force the output or abort if headers are + * already sent with an exception + * @return void + * @throws ResponseHeadersAlreadySentException Thrown if headers are + * already sent + */ + public function flushBuffer ($force=false) { + if ((headers_sent()) && (!$force)) { + // Headers are already sent! + throw new ResponseHeadersAlreadySentException($this, self::EXCEPTION_HEADERS_ALREADY_SENT); + } elseif (!headers_sent()) { + // Send headers out + header("HTTP/1.0 {$this->responseStatus}"); + foreach ($this->responseHeaders as $name=>$value) { + header("{$name}: {$value}"); + } + } + + // Flush the output to the world + $this->getWebOutputInstance()->output($this->responseBody); + $this->reponseBody = ""; + $this->responseHeaders = array(); + } + + /** + * Initializes the template engine instance + * + * @param $appInstance An instance of a manageable application + * @return void + */ + public final function initTemplateEngine (ManageableApplication $appInstance) { + $this->templateEngine = $this->prepareTemplateEngine($appInstance); + } + + /** + * Getter for the template engine instance + * + * @return $templateEngine An instance of the used template engine + */ + public final function getTemplateEngine () { + return $this->templateEngine; + } +} + +// [EOF] +?> diff --git a/inc/classes/main/template/class_TemplateEngine.php b/inc/classes/main/template/class_TemplateEngine.php index 44f374fc9e..e11b84d553 100644 --- a/inc/classes/main/template/class_TemplateEngine.php +++ b/inc/classes/main/template/class_TemplateEngine.php @@ -4,10 +4,10 @@ * and emails. * * @author Roland Haeder - * @version 0.3.0 + * @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 @@ -20,7 +20,7 @@ * 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 . + * along with this program. If not, see . */ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate { /** @@ -114,13 +114,13 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate const EXCEPTION_INVALID_VIEW_HELPER = 0xa02; /** - * Private constructor + * Protected constructor * * @return void */ - private final function __construct () { + protected function __construct () { // Call parent constructor - parent::constructor(__CLASS__); + parent::__construct(__CLASS__); // Set part description $this->setObjectDescription("Template-Engine"); @@ -194,7 +194,7 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate * Search for a variable in the stack * * @param $var The variable we are looking for - * @return $idx FALSE means not found, > 0 means found on a specific index + * @return $idx FALSE means not found, >=0 means found on a specific index */ private function isVariableAlreadySet ($var) { // First everything is not found @@ -217,6 +217,33 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate return $found; } + /** + * Return a content of a variable or null if not found + * + * @param $var The variable we are looking for + * @return $content Content of the variable or null if not found + */ + private function readVariable ($var) { + // First everything is not found + $content = null; + + // Now search for it + for ($idx = $this->varStack->getIterator(); $idx->valid(); $idx->next()) { + // Get current item + $currEntry = $idx->current(); + + // Is the entry found? + if ($currEntry['name'] == $var) { + // Found! + $content = $currEntry['value']; + break; + } + } + + // Return the current position + return $content; + } + /** * Add a variable to the stack * @@ -227,8 +254,8 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate private function addVariable ($var, $value) { // Add it to the stack $this->varStack->append(array( - 'name' => $var, - 'value' => $value + 'name' => trim($var), + 'value' => trim($value) )); } @@ -520,13 +547,6 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate * required method */ private function loadRawTemplateData ($fqfn) { - // Debug message - if ((defined('DEBUG_TEMPLATE')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] Template %s vom Typ %s wird geladen.
\n", - $this->__toString(), - $template, - $this->getTemplateType() - )); - // Get a input/output instance from the middleware $ioInstance = $this->getFileIOInstance(); @@ -545,12 +565,6 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate // Load the raw template $rawTemplateData = $ioInstance->loadFileContents($fqfn); - // Debug message - if ((defined('DEBUG_TEMPLATE')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] %s Byte Rohdaten geladen.
\n", - $this->__toString(), - strlen($rawTemplateData) - )); - // Store the template's contents into this class $this->setRawTemplateData($rawTemplateData); @@ -623,7 +637,7 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate * [2] => Array - An array with right part of a match including ":" * [3] => Array - An array with right part of a match excluding ":" */ - private function analyzeTemplate ($templateMatches) { + private function analyzeTemplate (array $templateMatches) { // Backup raw template data $backup = $this->getRawTemplateData(); @@ -647,8 +661,17 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate // RECURSIVE PROTECTION! $this->loadedTemplates[] = $template; } catch (FilePointerNotOpenedException $e) { - // Template not found! - $this->rawTemplates[] = $template; + // Template not found, but maybe variable assigned? + if ($this->isVariableAlreadySet($template) !== false) { + // Use that content here + $this->loadedRawData[$template] = $this->readVariable($template); + + // Recursive protection: + $this->loadedTemplates[] = $template; + } else { + // Even this is not done... :/ + $this->rawTemplates[] = $template; + } } } // if ((!isset( ... @@ -701,15 +724,15 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate * @param $templateMatches See method analyzeTemplate() * @return void */ - private function insertAllTemplates ($templateMatches) { + private function insertAllTemplates (array $templateMatches) { // Run through all loaded codes - foreach ($this->loadedRawData as $template => $code) { + foreach ($this->loadedRawData as $template=>$code) { // Search for the template $foundIndex = array_search($template, $templateMatches[1]); // Lookup the matching template replacement - if (isset($templateMatches[0][$foundIndex])) { + if (($foundIndex !== false) && (isset($templateMatches[0][$foundIndex]))) { // Get the current raw template $rawData = $this->getRawTemplateData(); @@ -719,8 +742,10 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate // Set the new raw data $this->setRawTemplateData($rawData); - } - } + + } // END - if + + } // END - foreach } /** @@ -760,7 +785,7 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate * @param $varMatches An array full of variable/value pairs. * @return void */ - private function assignAllVariables ($varMatches) { + private function assignAllVariables (array $varMatches) { // Search for all variables foreach ($varMatches[1] as $key=>$var) { @@ -774,7 +799,7 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate if ((substr($varMatches[2][$key], 0, 1) == "\"") && (substr($varMatches[2][$key], -1, 1) == "\"")) { // Free string detected! Which we can assign directly $this->assignVariable($var, $varMatches[3][$key]); - } else { + } elseif (!empty($varMatches[2][$key])) { // Non-string found so we need some deeper analysis... // @TODO Unfinished work or don't die here. die("Deeper analysis not yet implemented!"); @@ -788,21 +813,27 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate * @param $templateMatches See method analyzeTemplate() for details * @return void */ - private function compileRawTemplateData ($templateMatches) { + private function compileRawTemplateData (array $templateMatches) { // Are some code-templates found which we need to compile? if (count($this->loadedRawData) > 0) { // Then compile all! - foreach ($this->loadedRawData as $template => $code) { + foreach ($this->loadedRawData as $template=>$code) { + + // Is this template already compiled? + if (in_array($template, $this->compiledTemplates)) { + // Then skip it + continue; + } // Search for the template $foundIndex = array_search($template, $templateMatches[1]); // Lookup the matching variable data - if (isset($templateMatches[3][$foundIndex])) { + if (($foundIndex !== false) && (isset($templateMatches[3][$foundIndex]))) { // Split it up with another reg. exp. into variable=value pairs - @preg_match_all($this->regExpVarValue, $templateMatches[3][$foundIndex], $varMatches); + preg_match_all($this->regExpVarValue, $templateMatches[3][$foundIndex], $varMatches); // Assign all variables $this->assignAllVariables($varMatches); @@ -820,6 +851,44 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate } // END - if (count($this->loadedRawData) ... } + /** + * Inserts all raw templates into their respective variables + * + * @return void + */ + private function insertRawTemplates () { + // Load all templates + foreach ($this->rawTemplates as $template=>$content) { + // Set the template as a variable with the content + $this->assignVariable($template, $content); + } + } + + /** + * Finalizes the compilation of all template variables + * + * @return void + */ + private function finalizeVariableCompilation () { + // Get the content + $content = $this->getRawTemplateData(); + + // Walk through all variables + for ($idx = $this->varStack->getIterator(); $idx->valid(); $idx->next()) { + // Get current entry + $currEntry = $idx->current(); + + // Replace all [$var] or {?$var?} with the content + //* DEBUG: */ echo "name=".$currEntry['name'].", value=
".htmlentities($currEntry['value'])."
\n"; + $content = str_replace("\$content[".$currEntry['name']."]", $currEntry['value'], $content); + $content = str_replace("[".$currEntry['name']."]", $currEntry['value'], $content); + $content = str_replace("{?".$currEntry['name']."?}", $currEntry['value'], $content); + } // END - for + + // Set the content back + $this->setRawTemplateData($content); + } + /** * Getter for raw template data * @@ -893,12 +962,17 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate // Iterate through all variables for ($idx = $this->varStack->getIterator(); $idx->valid(); $idx->next()) { + // Get current variable from the stack $currVariable = $idx->current(); // Transfer it's name/value combination to the $content array + //* DEBUG: */ echo $currVariable['name']."=
".htmlentities($currVariable['value'])."
\n"; $dummy[$currVariable['name']] = $currVariable['value']; - } + + }// END - if + + // Set the new variable (don't remove the second dollar !) $$validVar = $dummy; // Prepare all configuration variables @@ -908,19 +982,25 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate unset($idx); unset($currVariable); + // Finalize the compilation of template variables + $this->finalizeVariableCompilation(); + // Prepare the eval() command for comiling the template - $eval = sprintf("\$this->setCompiledData(\"%s\");", + $eval = sprintf("\$result = \"%s\";", addslashes($this->getRawTemplateData()) ); // Debug message - if (((defined('DEBUG_EVAL')) || (defined('DEBUG_ALL'))) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] Konstruierte PHP-Anweisung:
%s

\n", + if ((defined('DEBUG_EVAL')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] Constructed PHP command:
%s

\n", $this->__toString(), htmlentities($eval) )); // Run the constructed command. This will "compile" all variables in eval($eval); + + // Set the new content + $this->setCompiledData($result); } /** @@ -937,11 +1017,9 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate if ($this->getTemplateType() != $this->getConfigInstance()->readConfig("code_template_type")) { // Abort here throw new UnexpectedTemplateTypeException(array($this, $this->getTemplateType(), $this->getConfigInstance()->readConfig("code_template_type")), self::EXCEPTION_TEMPLATE_TYPE_IS_UNEXPECTED); - } + } // END - if - // Get the raw data. Thanks to Flobee(R) for given me a hint using the - // modifier "m" in regular expressions. I had implemented a regex here - // like this: (\n|\r) + // Get the raw data. $rawData = $this->getRawTemplateData(); // Remove double spaces and trim leading/trailing spaces @@ -951,7 +1029,7 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate $this->extractVariablesFromRawData($rawData); // Search for code-tags which are {? ?} - @preg_match_all($this->regExpCodeTags, $rawData, $templateMatches); + preg_match_all($this->regExpCodeTags, $rawData, $templateMatches); // Analyze the matches array if ((is_array($templateMatches)) && (count($templateMatches) == 4) && (count($templateMatches[0]) > 0)) { @@ -968,8 +1046,15 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate // Are some raw templates found and loaded? if (count($this->rawTemplates) > 0) { - die("NOT YET IMPLEMENTED"); - } + + // Insert all raw templates + $this->insertRawTemplates(); + + // Remove the raw template content as well + $this->setRawTemplateData(""); + + } // END - if + } // END - if($templateMatches ... } @@ -989,20 +1074,20 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate break; default: // Unknown type found + // Construct message + $msg = sprintf("[%s:] Unknown/unsupported template type %s detected.", + $this->__toString(), + $this->getTemplateType() + ); + if ((is_object($this->getDebugInstance())) && (method_exists($this->getDebugInstance(), 'output'))) { // Use debug output handler - $this->getDebugInstance()->output(sprintf("[%s:] Unbekannter Template-Typ %s erkannt.", - $this->__toString(), - $this->getTemplateType() - )); + $this->getDebugInstance()->output($msg); die(); } else { // Put directly out // DO NOT REWRITE THIS TO app_die() !!! - die(sprintf("[%s:] Unbekannter Template-Typ %s erkannt.", - $this->__toString(), - $this->getTemplateType() - )); + die($msg); } break; } @@ -1038,12 +1123,41 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate ); // Run the code - @eval($eval); + eval($eval); } // Return the requested instance return $this->helpers[$helperName]; } + + /** + * Assigns the last loaded raw template content with a given variable + * + * @param $templateName Name of the template we want to assign + * @param $variableName Name of the variable we want to assign + * @return void + */ + public function assignTemplateWithVariable ($templateName, $variableName) { + // Get the content from last loaded raw template + $content = $this->getRawTemplateData(); + + // Assign the variable + $this->assignVariable($variableName, $content); + + // Purge raw content + $this->setRawTemplateData(""); + } + + /** + * Transfers the content of this template engine to a given response instance + * + * @param $responseInstance An instance of a response class + * @return void + */ + public function transferToResponse (Responseable $responseInstance) { + // Get the content and set it in the response class + $responseInstance->writeToBody($this->getCompiledData()); + } } // [EOF] diff --git a/inc/config/config-hubmaster.php b/inc/config/config-hubmaster.php new file mode 100644 index 0000000000..1ec81dfae8 --- /dev/null +++ b/inc/config/config-hubmaster.php @@ -0,0 +1,88 @@ + + * @version 0.0 + * @copyright Copyright(c) 2007, 2008 Roland Haeder, this is free software + * @license GNU GPL 3.0 or any newer version + * + * 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 . + */ + +// Get the configuration instance +$cfg = FrameworkConfiguration::getInstance(); + +// CFG: HUB-LISTEN-ADDR +$cfg->setConfigEntry("hub_listen_addr", "0.0.0.0"); + +// CFG: HUB-LISTEN-PORT (zero = auto-choose) +$cfg->setConfigEntry("hub_listen_port", 9060); + +// CFG: HUB-MAX-AUTH-TRIES +$cfg->setConfigEntry("hub_max_auth_tries", 3); + +// CFG: HUB-MSG-AUTH-TRIES +$cfg->setConfigEntry("hub_msg_auth_tries", "AUTH_MAX_TRIES"); + +// CFG: HUB-MSG-SPOOFING +$cfg->setConfigEntry("hub_msg_spoofing", "SPOOFING"); + +// CFG: HUB-MSG-AUTH-REPLY +$cfg->setConfigEntry("hub_msg_auth_reply_timeout", "TIMEOUT_AUTH"); + +// CFG: HUB-MSG-BYE +$cfg->setConfigEntry("hub_msg_bye", "BYE"); + +// CFG: HUB-MASTER-IP +$cfg->setConfigEntry("hub_master_ip", "192.168.1.17"); + +// CFG: HUB-MASTER-PORT +$cfg->setConfigEntry("hub_master_port", 9060); + +// CFG: HUB-AUTH-REQUEST +$cfg->setConfigEntry("hub_auth_request", "AUTH"); + +// CFG: HUB-AUTH-REQUEST-TIMEOUT (5 seconds for whole auth procedure shall be fine) +$cfg->setConfigEntry("hub_auth_request_timeout", 5); + +// CFG: HUB-PEER-HELLO +$cfg->setConfigEntry("hub_peer_hello", "HELLO"); + +// CFG: HUB-HELLO-REPLY +$cfg->setConfigEntry("hub_hello_reply", "ELHO"); + +// CFG: HUB-HELLO-TIMEOUT +$cfg->setConfigEntry("hub_hello_timeout", 30); + +// CFG: HUB-HELLO-RETRIES +$cfg->setConfigEntry("hub_hello_retires", 3); + +// CFG: HUB-PEER-PING +$cfg->setConfigEntry("hub_peer_ping", "PING"); + +// CFG: HUB-PING-REPLY +$cfg->setConfigEntry("hub_ping_reply", "PONG"); + +// CFG: HUB-PING-TIMEOUT +$cfg->setConfigEntry("hub_ping_timeout", 10); + +// CFG: HUB-PING-MAXDROPS +$cfg->setConfigEntry("hub_ping_maxdrops", 3); + +// CFG: HUB-PEER-MISS-PONG +$cfg->setConfigEntry("hub_peer_miss_pong", "PONG_MISS"); + +// [EOF] +?> diff --git a/inc/database.php b/inc/database.php index a8a9fcf416..ad29f0e495 100644 --- a/inc/database.php +++ b/inc/database.php @@ -3,10 +3,10 @@ * Initializes the database layer * * @author Roland Haeder - * @version 0.3.0 + * @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 @@ -19,7 +19,7 @@ * 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 . + * along with this program. If not, see . */ // Initialize layer @@ -54,34 +54,34 @@ unset($INC); try { $db = DatabaseConnection::createDatabaseConnection(DebugMiddleware::getInstance(), $layer); } catch (NullPointerException $e) { - ApplicationEntryPoint::app_die(sprintf("[Main:] Datenbank-System nicht initialisiert. Reason: %s
\n", + ApplicationEntryPoint::app_die(sprintf("[Main:] Database sub-system not initialized for the follwing reason: %s
\n", $e->getMessage() )); } catch (InvalidDirectoryResourceException $e) { - ApplicationEntryPoint::app_die(sprintf("[Main:] Datenbank-System nicht initialisiert. Reason: %s
\n", + ApplicationEntryPoint::app_die(sprintf("[Main:] Database sub-system not initialized for the follwing reason: %s
\n", $e->getMessage() )); } catch (PathIsEmptyException $e) { - ApplicationEntryPoint::app_die(sprintf("[Main:] Datenbank-System nicht initialisiert. Reason: %s
\n", + ApplicationEntryPoint::app_die(sprintf("[Main:] Database sub-system not initialized for the follwing reason: %s
\n", $e->getMessage() )); } catch (PathIsNoDirectoryException $e) { - ApplicationEntryPoint::app_die(sprintf("[Main:] Datenbank-System nicht initialisiert. Reason: %s
\n", + ApplicationEntryPoint::app_die(sprintf("[Main:] Database sub-system not initialized for the follwing reason: %s
\n", $e->getMessage() )); } catch (PathReadProtectedException $e) { - ApplicationEntryPoint::app_die(sprintf("[Main:] Datenbank-System nicht initialisiert. Reason: %s
\n", + ApplicationEntryPoint::app_die(sprintf("[Main:] Database sub-system not initialized for the follwing reason: %s
\n", $e->getMessage() )); } catch (DirPointerNotOpenedException $e) { - ApplicationEntryPoint::app_die(sprintf("[Main:] Datenbank-System nicht initialisiert. Reason: %s
\n", + ApplicationEntryPoint::app_die(sprintf("[Main:] Database sub-system not initialized for the follwing reason: %s
\n", $e->getMessage() )); } // Datenbankobjekt debuggen if (defined('DEBUG_DATABASE_OBJ')) { - DebugMiddleware::getInstance()->output(sprintf("Die Datenbank-Schicht sieht wie folgt aus:
+ DebugMiddleware::getInstance()->output(sprintf("The database sub-system does now look like this:
%s
\n", print_r($db, true) )); diff --git a/inc/language.php b/inc/language.php index c806545399..552dc45894 100644 --- a/inc/language.php +++ b/inc/language.php @@ -3,7 +3,7 @@ * Try to initializes the language system * * @author Roland Haeder - * @version 0.3.0 + * @version 0.0.0 * @copyright Copyright(c) 2007, 2008 Roland Haeder, this is free software * @license GNU GPL 3.0 or any newer version * @@ -18,7 +18,7 @@ * 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 . + * along with this program. If not, see . */ try { $lang = LanguageSystem::createLanguageSystem(sprintf("%s%s", @@ -26,19 +26,19 @@ try { FrameworkConfiguration::getInstance()->readConfig("lang_base_path") )); } catch (LanguagePathIsEmptyException $e) { - ApplicationEntryPoint::app_die(sprintf("[Main:] Sprachsystem konnte nicht initialisiert werden. Reason: %s", + ApplicationEntryPoint::app_die(sprintf("[Main:] The language sub-system could not be initialized for the following reason: %s", $e->getMessage() )); } catch (InvalidLanguagePathStringException $e) { - ApplicationEntryPoint::app_die(sprintf("[Main:] Sprachsystem konnte nicht initialisiert werden. Reason: %s", + ApplicationEntryPoint::app_die(sprintf("[Main:] The language sub-system could not be initialized for the following reason: %s", $e->getMessage() )); } catch (LanguagePathIsNoDirectoryException $e) { - ApplicationEntryPoint::app_die(sprintf("[Main:] Sprachsystem konnte nicht initialisiert werden. Reason: %s", + ApplicationEntryPoint::app_die(sprintf("[Main:] The language sub-system could not be initialized for the following reason: %s", $e->getMessage() )); } catch (LanguagePathReadProtectedException $e) { - ApplicationEntryPoint::app_die(sprintf("[Main:] Sprachsystem konnte nicht initialisiert werden. Reason: %s", + ApplicationEntryPoint::app_die(sprintf("[Main:] The language sub-system could not be initialized for the following reason: %s", $e->getMessage() )); } diff --git a/inc/output.php b/inc/output.php index 87e8384329..20f3fe8f5b 100644 --- a/inc/output.php +++ b/inc/output.php @@ -3,10 +3,10 @@ * Initializes the output middleware layer * * @author Roland Haeder - * @version 0.3.0 + * @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 @@ -19,13 +19,13 @@ * 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 . + * along with this program. If not, see . */ -// Debug-Ausgabe vorbereiten +// Get a debugger instance $debug = DebugMiddleware::createDebugMiddleware(FrameworkConfiguration::getInstance()->readConfig("debug_engine")); -// Leere Strings werden ignoriert und sollten zum Testen der Middleware genommen werden +// Empty string should be ignored and used for testing the middleware DebugMiddleware::getInstance()->output(""); // [EOF] -- 2.39.5