]> git.mxchange.org Git - hub.git/commitdiff
Many XML-related templates engines renamed:
authorRoland Häder <roland@mxchange.org>
Tue, 15 Mar 2011 20:35:50 +0000 (20:35 +0000)
committerRoland Häder <roland@mxchange.org>
Tue, 15 Mar 2011 20:35:50 +0000 (20:35 +0000)
- All XML-bases template engines prefixed with 'Xml'
- Directory prepared for template engines handling WU XML templates
- TODOs.txt updated

12 files changed:
.gitattributes
application/hub/config.php
application/hub/main/helper/work_units/cruncher/class_CruncherTestUnitHelper.php
application/hub/main/template/announcement/class_AnnouncementTemplateEngine.php
application/hub/main/template/announcement/class_XmlAnnouncementTemplateEngine.php [new file with mode: 0644]
application/hub/main/template/class_ [new file with mode: 0644]
application/hub/main/template/connect/class_SelfConnectTemplateEngine.php
application/hub/main/template/connect/class_XmlSelfConnectTemplateEngine.php [new file with mode: 0644]
application/hub/main/template/objects/class_ObjectRegistryTemplateEngine.php
application/hub/main/template/objects/class_XmlObjectRegistryTemplateEngine.php [new file with mode: 0644]
application/hub/main/template/work_units/.htaccess [new file with mode: 0644]
docs/TODOs.txt

index b0c18b7814ce1876a0180e86119b78d3464323f8..1d40663b085abcdc2715d964ce48c19d63015db3 100644 (file)
@@ -422,10 +422,15 @@ application/hub/main/tasks/network/class_NetworkPackageWriterTask.php svneol=nat
 application/hub/main/template/.htaccess -text svneol=unset#text/plain
 application/hub/main/template/announcement/.htaccess -text svneol=unset#text/plain
 application/hub/main/template/announcement/class_AnnouncementTemplateEngine.php -text svneol=unset#text/plain
+application/hub/main/template/announcement/class_XmlAnnouncementTemplateEngine.php svneol=native#text/plain
+application/hub/main/template/class_ -text
 application/hub/main/template/connect/.htaccess -text svneol=unset#text/plain
 application/hub/main/template/connect/class_SelfConnectTemplateEngine.php svneol=native#text/plain
+application/hub/main/template/connect/class_XmlSelfConnectTemplateEngine.php svneol=native#text/plain
 application/hub/main/template/objects/.htaccess -text svneol=unset#text/plain
 application/hub/main/template/objects/class_ObjectRegistryTemplateEngine.php svneol=native#text/plain
+application/hub/main/template/objects/class_XmlObjectRegistryTemplateEngine.php svneol=native#text/plain
+application/hub/main/template/work_units/.htaccess svneol=native#text/plain
 application/hub/main/tools/.htaccess -text svneol=unset#text/plain
 application/hub/main/tools/class_HubTools.php svneol=native#text/plain
 application/hub/main/visitor/.htaccess -text svneol=unset#text/plain
index 4de98c8733beb9a1c9d01f5c148663578e3df357..97c66392cb3265cdfb4c0b1325e7a35f80c9f521 100644 (file)
@@ -226,7 +226,7 @@ $cfg->setConfigEntry('cruncher_shutdown_cruncher_filter', 'CruncherShutdownCrunc
 $cfg->setConfigEntry('news_reader_class', 'ConsoleNewsReader');
 
 // CFG: ANNOUNCEMENT-TEMPLATE-CLASS
-$cfg->setConfigEntry('announcement_template_class', 'AnnouncementTemplateEngine');
+$cfg->setConfigEntry('announcement_template_class', 'XmlAnnouncementTemplateEngine');
 
 // CFG: ANNOUNCEMENT-TEMPLATE-EXTENSION
 $cfg->setConfigEntry('announcement_template_extension', '.xml');
@@ -238,7 +238,7 @@ $cfg->setConfigEntry('announcement_template_type', 'xml/announcement');
 $cfg->setConfigEntry('announcement_stacker_class', 'FiLoStacker');
 
 // CFG: SELF-CONNECT-TEMPLATE-CLASS
-$cfg->setConfigEntry('self_connect_template_class', 'SelfConnectTemplateEngine');
+$cfg->setConfigEntry('self_connect_template_class', 'XmlSelfConnectTemplateEngine');
 
 // CFG: SELF-CONNECT-TEMPLATE-EXTENSION
 $cfg->setConfigEntry('self_connect_template_extension', '.xml');
@@ -250,7 +250,7 @@ $cfg->setConfigEntry('self_connect_template_type', 'xml/self_connect');
 $cfg->setConfigEntry('self_connect_stacker_class', 'FiLoStacker');
 
 // CFG: OBJECT-REGISTRY-TEMPLATE-CLASS
-$cfg->setConfigEntry('object_registry_template_class', 'ObjectRegistryTemplateEngine');
+$cfg->setConfigEntry('object_registry_template_class', 'XmlObjectRegistryTemplateEngine');
 
 // CFG: OBJECT-REGISTRY-TEMPLATE-EXTENSION
 $cfg->setConfigEntry('object_registry_template_extension', '.xml');
index f97f8d3a090bf7a5daff489ca9457b2f9dd6ae80..38cf1c67b4b62e767d695632d81dd69f6dda868a 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * A ??? work unit helper
+ * A test unit helper for cruncher
  *
  * @author             Roland Haeder <webmaster@ship-simu.org>
  * @version            0.0.0
@@ -46,7 +46,8 @@ class CruncherTestUnitHelper extends BaseWorkUnitHelper implements UnitHelper {
        }
 
        /**
-        * Initializes this WU helper
+        * Initializes this WU helper. This method satisfies the abstract
+        * BaseWorkUnitHelper class.
         *
         * @return      void
         * @todo        0% done
@@ -56,7 +57,8 @@ class CruncherTestUnitHelper extends BaseWorkUnitHelper implements UnitHelper {
        }
 
        /**
-        * Generates a work/test/foo unit instance
+        * Generates a work/test/foo unit instance. This method satifies the
+        * UnitHelper interface.
         *
         * @return      $unitInstance   A work unit instance
         * @todo        0% done
index ccfdb498d75731ceea61ec51d02acb86213bcd48..f551ef47b7591c74e7b59193e56a1fa6505a87ab 100644 (file)
@@ -1,537 +1,3 @@
 <?php
-/**
- * An Announcement template engine class
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 Core Developer Team
- * @license            GNU GPL 3.0 or any newer version
- * @link               http://www.ship-simu.org
- * @todo               This template engine does not make use of setTemplateType()
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-class AnnouncementTemplateEngine extends BaseTemplateEngine implements CompileableTemplate {
-       /**
-        * Main nodes in the XML tree ('menu' is ignored)
-        */
-       private $mainNodes = array(
-               'announcement',
-       );
-
-       /**
-        * Sub nodes in the XML tree
-        */
-       private $subNodes = array(
-               'announcement-data',
-               'listener',
-               'hub-listener',
-               'client-listener',
-               'node-id',
-               'node-status',
-               'tcp-port',
-               'udp-port',
-               'session-id',
-               'object-type-list',
-       );
-
-       /**
-        * Current main node
-        */
-       private $curr = array();
-
-       /**
-        * Content from dependency
-        */
-       private $dependencyContent = array();
-
-       /**
-        * Protected constructor
-        *
-        * @return      void
-        */
-       protected function __construct () {
-               // Call parent constructor
-               parent::__construct(__CLASS__);
-       }
-
-       /**
-        * Creates an instance of the class TemplateEngine and prepares it for usage
-        *
-        * @param       $applicationInstance    A manageable application
-        * @return      $templateInstance               An instance of TemplateEngine
-        * @throws      BasePathIsEmptyException                If the provided $templateBasePath is empty
-        * @throws      InvalidBasePathStringException  If $templateBasePath is no string
-        * @throws      BasePathIsNoDirectoryException  If $templateBasePath is no
-        *                                                                                      directory or not found
-        * @throws      BasePathReadProtectedException  If $templateBasePath is
-        *                                                                                      read-protected
-        */
-       public static final function createAnnouncementTemplateEngine (ManageableApplication $applicationInstance) {
-               // Get a new instance
-               $templateInstance = new AnnouncementTemplateEngine();
-
-               // Determine base path
-               $templateBasePath = $templateInstance->getConfigInstance()->getConfigEntry('application_base_path') . $applicationInstance->getRequestInstance()->getRequestElement('app') . '/';
-
-               // Is the base path valid?
-               if (empty($templateBasePath)) {
-                       // Base path is empty
-                       throw new BasePathIsEmptyException($templateInstance, self::EXCEPTION_UNEXPECTED_EMPTY_STRING);
-               } elseif (!is_string($templateBasePath)) {
-                       // Is not a string
-                       throw new InvalidBasePathStringException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_STRING);
-               } elseif (!is_dir($templateBasePath)) {
-                       // Is not a path
-                       throw new BasePathIsNoDirectoryException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_PATH_NAME);
-               } elseif (!is_readable($templateBasePath)) {
-                       // Is not readable
-                       throw new BasePathReadProtectedException(array($templateInstance, $templateBasePath), self::EXCEPTION_READ_PROTECED_PATH);
-               }
-
-               // Set the base path
-               $templateInstance->setTemplateBasePath($templateBasePath);
-
-               // Set template extensions
-               $templateInstance->setRawTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('raw_template_extension'));
-               $templateInstance->setCodeTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('announcement_template_extension'));
-
-               // Absolute output path for compiled templates
-               $templateInstance->setCompileOutputPath($templateInstance->getConfigInstance()->getConfigEntry('base_path') . $templateInstance->getConfigInstance()->getConfigEntry('compile_output_path'));
-
-               // Init a variable stacker
-               $stackerInstance = ObjectFactory::createObjectByConfiguredName('announcement_stacker_class');
-
-               // Set it
-               $templateInstance->setStackerInstance($stackerInstance);
-
-               // Return the prepared instance
-               return $templateInstance;
-       }
-
-       /**
-        * Load a specified announcement template into the engine
-        *
-        * @param       $template       The announcement template we shall load which is
-        *                                              located in 'announcement' by default
-        * @return      void
-        */
-       public function loadAnnouncementTemplate ($template = 'self_announcement') {
-               // Set template type
-               $this->setTemplateType($this->getConfigInstance()->getConfigEntry('announcement_template_type'));
-
-               // Load the special template
-               $this->loadTemplate($template);
-       }
-
-       /**
-        * Getter for current main node
-        *
-        * @return      $currMainNode   Current main node
-        */
-       public final function getCurrMainNode () {
-               return $this->curr['main_node'];
-       }
-
-       /**
-        * Setter for current main node
-        *
-        * @param       $element                Element name to set as current main node
-        * @return      $currMainNode   Current main node
-        */
-       private final function setCurrMainNode ($element) {
-               $this->curr['main_node'] = (string) $element;
-       }
-
-       /**
-        * Getter for main node array
-        *
-        * @return      $mainNodes      Array with valid main node names
-        */
-       public final function getMainNodes () {
-               return $this->mainNodes;
-       }
-
-       /**
-        * Getter for sub node array
-        *
-        * @return      $subNodes       Array with valid sub node names
-        */
-       public final function getSubNodes () {
-               return $this->subNodes;
-       }
-
-       /**
-        * Handles the start element of an XML resource
-        *
-        * @param       $resource               XML parser resource (currently ignored)
-        * @param       $element                The element we shall handle
-        * @param       $attributes             All attributes
-        * @return      void
-        * @throws      InvalidXmlNodeException         If an unknown/invalid XML node name was found
-        */
-       public function startElement ($resource, $element, array $attributes) {
-               // Initial method name which will never be called...
-               $methodName = 'initAnnouncement';
-
-               // Make the element name lower-case
-               $element = strtolower($element);
-
-               // Is the element a main node?
-               //* DEBUG: */ echo "START: &gt;".$element."&lt;<br />\n";
-               if (in_array($element, $this->getMainNodes())) {
-                       // Okay, main node found!
-                       $methodName = 'start' . $this->convertToClassName($element);
-
-                       // Set it
-                       $this->setCurrMainNode($element);
-               } elseif (in_array($element, $this->getSubNodes())) {
-                       // Sub node found
-                       $methodName = 'start' . $this->convertToClassName($element);
-               } else {
-                       // Invalid node name found
-                       throw new InvalidXmlNodeException(array($this, $element, $attributes), XmlParser::EXCEPTION_XML_NODE_UNKNOWN);
-               }
-
-               // Call method
-               //* DEBUG: */ echo "call: ".$methodName."<br />\n";
-               call_user_func_array(array($this, $methodName), $attributes);
-       }
-
-       /**
-        * Ends the main or sub node by sending out the gathered data
-        *
-        * @param       $resource       An XML resource pointer (currently ignored)
-        * @param       $nodeName       Name of the node we want to finish
-        * @return      void
-        * @throws      XmlNodeMismatchException        If current main node mismatches the closing one
-        */
-       public function endElement ($resource, $nodeName) {
-               // Make all lower-case
-               $nodeName = strtolower($nodeName);
-
-               // Does this match with current main node?
-               //* DEBUG: */ echo "END: &gt;".$nodeName."&lt;<br />\n";
-               if (($nodeName != $this->getCurrMainNode()) && (in_array($nodeName, $this->getMainNodes()))) {
-                       // Did not match!
-                       throw new XmlNodeMismatchException (array($this, $nodeName, $this->getCurrMainNode()), XmlParser::EXCEPTION_XML_NODE_MISMATCH);
-               } // END - if
-
-               // Construct method name
-               $methodName = 'finish' . $this->convertToClassName($nodeName);
-
-               // Call the corresponding method
-               //* DEBUG: */ echo "call: ".$methodName."<br />\n";
-               call_user_func_array(array($this, $methodName), array());
-       }
-
-       /**
-        * Currently not used
-        *
-        * @param       $resource               XML parser resource (currently ignored)
-        * @param       $characters             Characters to handle
-        * @return      void
-        * @todo        Find something useful with this!
-        */
-       public function characterHandler ($resource, $characters) {
-               // Trim all spaces away
-               $characters = trim($characters);
-
-               // Is this string empty?
-               if (empty($characters)) {
-                       // Then skip it silently
-                       return false;
-               } // END - if
-
-               // Assign the found characters to variable and use the last entry from
-               // stack as the name
-               parent::assignVariable($this->getStackerInstance()->getNamed('announcement'), $characters);
-       }
-
-       /**
-        * Handles the template dependency for given node
-        *
-        * @param       $node                                   The node we should load a dependency template
-        * @param       $templateDependency             A template to load to satisfy dependencies
-        * @return      void
-        */
-       private function handleTemplateDependency ($node, $templateDependency) {
-               // Is the template dependency set?
-               if ((!empty($templateDependency)) && (!isset($this->dependencyContent[$node]))) {
-                       // Get a temporay menu template instance
-                       $templateInstance = ObjectFactory::createObjectByConfiguredName('announcement_template_class', array($this->getApplicationInstance()));
-
-                       // Then load it
-                       $templateInstance->loadAnnouncementTemplate($templateDependency);
-
-                       // Get an XmlParser instance
-                       $templateInstance->renderXmlContent();
-
-                       // Parse the template's content contents
-                       $this->dependencyContent[$node] = $templateInstance->getRawTemplateData();
-               } // END - if
-       }
-
-       /**
-        * Getter for cache file (FQFN)
-        *
-        * @return      $fqfn   Full-qualified file name of the menu cache
-        */
-       public function getMenuCacheFqfn () {
-               $this->partialStub('Please implement this method.');
-       }
-
-       /**
-        * Starts the announcement
-        *
-        * @return      void
-        */
-       private function startAnnouncement () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('announcement', 'announcement');
-       }
-
-       /**
-        * Starts the announcement data
-        *
-        * @return      void
-        */
-       private function startAnnouncementData () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('announcement', 'announcement-data');
-       }
-
-       /**
-        * Starts the node id
-        *
-        * @return      void
-        */
-       private function startNodeId () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('announcement', 'node-id');
-       }
-
-       /**
-        * Starts the node status
-        *
-        * @return      void
-        */
-       private function startNodeStatus () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('announcement', 'node-status');
-       }
-
-       /**
-        * Starts the listener
-        *
-        * @return      void
-        */
-       private function startListener () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('announcement', 'listener');
-       }
-
-       /**
-        * Starts the client listener
-        *
-        * @return      void
-        */
-       private function startClientListener () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('announcement', 'client-listener');
-       }
-
-       /**
-        * Starts the hub listener
-        *
-        * @return      void
-        */
-       private function startHubListener () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('announcement', 'hub-listener');
-       }
-
-       /**
-        * Starts the TCP port
-        *
-        * @return      void
-        */
-       private function startTcpPort () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('announcement', 'tcp-port');
-       }
-
-       /**
-        * Starts the UDP port
-        *
-        * @return      void
-        */
-       private function startUdpPort () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('announcement', 'udp-port');
-       }
-
-       /**
-        * Starts the session id
-        *
-        * @return      void
-        */
-       private function startSessionId () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('announcement', 'session-id');
-       }
-
-       /**
-        * Starts the object type list
-        *
-        * @return      void
-        */
-       private function startObjectTypeList () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('announcement', 'object-type-list');
-       }
-
-       /**
-        * Starts the object type
-        *
-        * @return      void
-        */
-       private function startObjectType () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('announcement', 'object-type');
-       }
-
-       /**
-        * Finishes the object type
-        *
-        * @return      void
-        */
-       private function finishObjectType () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('announcement');
-       }
-
-       /**
-        * Finishes the object type list
-        *
-        * @return      void
-        */
-       private function finishObjectTypeList () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('announcement');
-       }
-
-       /**
-        * Finishes the session id
-        *
-        * @return      void
-        */
-       private function finishSessionId () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('announcement');
-       }
-
-       /**
-        * Finishes the UDP port
-        *
-        * @return      void
-        */
-       private function finishUdpPort () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('announcement');
-       }
-
-       /**
-        * Finishes the TCP port
-        *
-        * @return      void
-        */
-       private function finishTcpPort () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('announcement');
-       }
-
-       /**
-        * Finishes the hub listener
-        *
-        * @return      void
-        */
-       private function finishHubListener () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('announcement');
-       }
-
-       /**
-        * Finishes the client listener
-        *
-        * @return      void
-        */
-       private function finishClientListener () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('announcement');
-       }
-
-       /**
-        * Finishes the listener
-        *
-        * @return      void
-        */
-       private function finishListener () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('announcement');
-       }
-
-       /**
-        * Finishes the node status
-        *
-        * @return      void
-        */
-       private function finishNodeStatus () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('announcement');
-       }
-
-       /**
-        * Finishes the node id
-        *
-        * @return      void
-        */
-       private function finishNodeId () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('announcement');
-       }
-
-       /**
-        * Finishes the announcement data
-        *
-        * @return      void
-        */
-       private function finishAnnouncementData () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('announcement');
-       }
-
-       /**
-        * Finishes the announcement
-        *
-        * @return      void
-        */
-       private function finishAnnouncement () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('announcement');
-       }
-}
-
-// [EOF]
+// @DEPRECATED
 ?>
diff --git a/application/hub/main/template/announcement/class_XmlAnnouncementTemplateEngine.php b/application/hub/main/template/announcement/class_XmlAnnouncementTemplateEngine.php
new file mode 100644 (file)
index 0000000..d84ba68
--- /dev/null
@@ -0,0 +1,537 @@
+<?php
+/**
+ * An Announcement template engine class for XML templates
+ *
+ * @author             Roland Haeder <webmaster@ship-simu.org>
+ * @version            0.0.0
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 Core Developer Team
+ * @license            GNU GPL 3.0 or any newer version
+ * @link               http://www.ship-simu.org
+ * @todo               This template engine does not make use of setTemplateType()
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+class XmlAnnouncementTemplateEngine extends BaseTemplateEngine implements CompileableTemplate {
+       /**
+        * Main nodes in the XML tree
+        */
+       private $mainNodes = array(
+               'announcement',
+       );
+
+       /**
+        * Sub nodes in the XML tree
+        */
+       private $subNodes = array(
+               'announcement-data',
+               'listener',
+               'hub-listener',
+               'client-listener',
+               'node-id',
+               'node-status',
+               'tcp-port',
+               'udp-port',
+               'session-id',
+               'object-type-list',
+       );
+
+       /**
+        * Current main node
+        */
+       private $curr = array();
+
+       /**
+        * Content from dependency
+        */
+       private $dependencyContent = array();
+
+       /**
+        * Protected constructor
+        *
+        * @return      void
+        */
+       protected function __construct () {
+               // Call parent constructor
+               parent::__construct(__CLASS__);
+       }
+
+       /**
+        * Creates an instance of the class TemplateEngine and prepares it for usage
+        *
+        * @param       $applicationInstance    A manageable application
+        * @return      $templateInstance               An instance of TemplateEngine
+        * @throws      BasePathIsEmptyException                If the provided $templateBasePath is empty
+        * @throws      InvalidBasePathStringException  If $templateBasePath is no string
+        * @throws      BasePathIsNoDirectoryException  If $templateBasePath is no
+        *                                                                                      directory or not found
+        * @throws      BasePathReadProtectedException  If $templateBasePath is
+        *                                                                                      read-protected
+        */
+       public static final function createXmlAnnouncementTemplateEngine (ManageableApplication $applicationInstance) {
+               // Get a new instance
+               $templateInstance = new XmlAnnouncementTemplateEngine();
+
+               // Determine base path
+               $templateBasePath = $templateInstance->getConfigInstance()->getConfigEntry('application_base_path') . $applicationInstance->getRequestInstance()->getRequestElement('app') . '/';
+
+               // Is the base path valid?
+               if (empty($templateBasePath)) {
+                       // Base path is empty
+                       throw new BasePathIsEmptyException($templateInstance, self::EXCEPTION_UNEXPECTED_EMPTY_STRING);
+               } elseif (!is_string($templateBasePath)) {
+                       // Is not a string
+                       throw new InvalidBasePathStringException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_STRING);
+               } elseif (!is_dir($templateBasePath)) {
+                       // Is not a path
+                       throw new BasePathIsNoDirectoryException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_PATH_NAME);
+               } elseif (!is_readable($templateBasePath)) {
+                       // Is not readable
+                       throw new BasePathReadProtectedException(array($templateInstance, $templateBasePath), self::EXCEPTION_READ_PROTECED_PATH);
+               }
+
+               // Set the base path
+               $templateInstance->setTemplateBasePath($templateBasePath);
+
+               // Set template extensions
+               $templateInstance->setRawTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('raw_template_extension'));
+               $templateInstance->setCodeTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('announcement_template_extension'));
+
+               // Absolute output path for compiled templates
+               $templateInstance->setCompileOutputPath($templateInstance->getConfigInstance()->getConfigEntry('base_path') . $templateInstance->getConfigInstance()->getConfigEntry('compile_output_path'));
+
+               // Init a variable stacker
+               $stackerInstance = ObjectFactory::createObjectByConfiguredName('announcement_stacker_class');
+
+               // Set it
+               $templateInstance->setStackerInstance($stackerInstance);
+
+               // Return the prepared instance
+               return $templateInstance;
+       }
+
+       /**
+        * Load a specified announcement template into the engine
+        *
+        * @param       $template       The announcement template we shall load which is
+        *                                              located in 'announcement' by default
+        * @return      void
+        */
+       public function loadAnnouncementTemplate ($template = 'self_announcement') {
+               // Set template type
+               $this->setTemplateType($this->getConfigInstance()->getConfigEntry('announcement_template_type'));
+
+               // Load the special template
+               $this->loadTemplate($template);
+       }
+
+       /**
+        * Getter for current main node
+        *
+        * @return      $currMainNode   Current main node
+        */
+       public final function getCurrMainNode () {
+               return $this->curr['main_node'];
+       }
+
+       /**
+        * Setter for current main node
+        *
+        * @param       $element                Element name to set as current main node
+        * @return      $currMainNode   Current main node
+        */
+       private final function setCurrMainNode ($element) {
+               $this->curr['main_node'] = (string) $element;
+       }
+
+       /**
+        * Getter for main node array
+        *
+        * @return      $mainNodes      Array with valid main node names
+        */
+       public final function getMainNodes () {
+               return $this->mainNodes;
+       }
+
+       /**
+        * Getter for sub node array
+        *
+        * @return      $subNodes       Array with valid sub node names
+        */
+       public final function getSubNodes () {
+               return $this->subNodes;
+       }
+
+       /**
+        * Handles the start element of an XML resource
+        *
+        * @param       $resource               XML parser resource (currently ignored)
+        * @param       $element                The element we shall handle
+        * @param       $attributes             All attributes
+        * @return      void
+        * @throws      InvalidXmlNodeException         If an unknown/invalid XML node name was found
+        */
+       public function startElement ($resource, $element, array $attributes) {
+               // Initial method name which will never be called...
+               $methodName = 'initAnnouncement';
+
+               // Make the element name lower-case
+               $element = strtolower($element);
+
+               // Is the element a main node?
+               //* DEBUG: */ echo "START: &gt;".$element."&lt;<br />\n";
+               if (in_array($element, $this->getMainNodes())) {
+                       // Okay, main node found!
+                       $methodName = 'start' . $this->convertToClassName($element);
+
+                       // Set it
+                       $this->setCurrMainNode($element);
+               } elseif (in_array($element, $this->getSubNodes())) {
+                       // Sub node found
+                       $methodName = 'start' . $this->convertToClassName($element);
+               } else {
+                       // Invalid node name found
+                       throw new InvalidXmlNodeException(array($this, $element, $attributes), XmlParser::EXCEPTION_XML_NODE_UNKNOWN);
+               }
+
+               // Call method
+               //* DEBUG: */ echo "call: ".$methodName."<br />\n";
+               call_user_func_array(array($this, $methodName), $attributes);
+       }
+
+       /**
+        * Ends the main or sub node by sending out the gathered data
+        *
+        * @param       $resource       An XML resource pointer (currently ignored)
+        * @param       $nodeName       Name of the node we want to finish
+        * @return      void
+        * @throws      XmlNodeMismatchException        If current main node mismatches the closing one
+        */
+       public function endElement ($resource, $nodeName) {
+               // Make all lower-case
+               $nodeName = strtolower($nodeName);
+
+               // Does this match with current main node?
+               //* DEBUG: */ echo "END: &gt;".$nodeName."&lt;<br />\n";
+               if (($nodeName != $this->getCurrMainNode()) && (in_array($nodeName, $this->getMainNodes()))) {
+                       // Did not match!
+                       throw new XmlNodeMismatchException (array($this, $nodeName, $this->getCurrMainNode()), XmlParser::EXCEPTION_XML_NODE_MISMATCH);
+               } // END - if
+
+               // Construct method name
+               $methodName = 'finish' . $this->convertToClassName($nodeName);
+
+               // Call the corresponding method
+               //* DEBUG: */ echo "call: ".$methodName."<br />\n";
+               call_user_func_array(array($this, $methodName), array());
+       }
+
+       /**
+        * Currently not used
+        *
+        * @param       $resource               XML parser resource (currently ignored)
+        * @param       $characters             Characters to handle
+        * @return      void
+        * @todo        Find something useful with this!
+        */
+       public function characterHandler ($resource, $characters) {
+               // Trim all spaces away
+               $characters = trim($characters);
+
+               // Is this string empty?
+               if (empty($characters)) {
+                       // Then skip it silently
+                       return false;
+               } // END - if
+
+               // Assign the found characters to variable and use the last entry from
+               // stack as the name
+               parent::assignVariable($this->getStackerInstance()->getNamed('announcement'), $characters);
+       }
+
+       /**
+        * Handles the template dependency for given node
+        *
+        * @param       $node                                   The node we should load a dependency template
+        * @param       $templateDependency             A template to load to satisfy dependencies
+        * @return      void
+        */
+       private function handleTemplateDependency ($node, $templateDependency) {
+               // Is the template dependency set?
+               if ((!empty($templateDependency)) && (!isset($this->dependencyContent[$node]))) {
+                       // Get a temporay template instance
+                       $templateInstance = ObjectFactory::createObjectByConfiguredName('announcement_template_class', array($this->getApplicationInstance()));
+
+                       // Then load it
+                       $templateInstance->loadAnnouncementTemplate($templateDependency);
+
+                       // Parse the XML content
+                       $templateInstance->renderXmlContent();
+
+                       // Save the parsed raw content in our dependency array
+                       $this->dependencyContent[$node] = $templateInstance->getRawTemplateData();
+               } // END - if
+       }
+
+       /**
+        * Getter for cache file (FQFN)
+        *
+        * @return      $fqfn   Full-qualified file name of the menu cache
+        */
+       public function getMenuCacheFqfn () {
+               $this->partialStub('Please implement this method.');
+       }
+
+       /**
+        * Starts the announcement
+        *
+        * @return      void
+        */
+       private function startAnnouncement () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('announcement', 'announcement');
+       }
+
+       /**
+        * Starts the announcement data
+        *
+        * @return      void
+        */
+       private function startAnnouncementData () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('announcement', 'announcement-data');
+       }
+
+       /**
+        * Starts the node id
+        *
+        * @return      void
+        */
+       private function startNodeId () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('announcement', 'node-id');
+       }
+
+       /**
+        * Starts the node status
+        *
+        * @return      void
+        */
+       private function startNodeStatus () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('announcement', 'node-status');
+       }
+
+       /**
+        * Starts the listener
+        *
+        * @return      void
+        */
+       private function startListener () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('announcement', 'listener');
+       }
+
+       /**
+        * Starts the client listener
+        *
+        * @return      void
+        */
+       private function startClientListener () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('announcement', 'client-listener');
+       }
+
+       /**
+        * Starts the hub listener
+        *
+        * @return      void
+        */
+       private function startHubListener () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('announcement', 'hub-listener');
+       }
+
+       /**
+        * Starts the TCP port
+        *
+        * @return      void
+        */
+       private function startTcpPort () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('announcement', 'tcp-port');
+       }
+
+       /**
+        * Starts the UDP port
+        *
+        * @return      void
+        */
+       private function startUdpPort () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('announcement', 'udp-port');
+       }
+
+       /**
+        * Starts the session id
+        *
+        * @return      void
+        */
+       private function startSessionId () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('announcement', 'session-id');
+       }
+
+       /**
+        * Starts the object type list
+        *
+        * @return      void
+        */
+       private function startObjectTypeList () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('announcement', 'object-type-list');
+       }
+
+       /**
+        * Starts the object type
+        *
+        * @return      void
+        */
+       private function startObjectType () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('announcement', 'object-type');
+       }
+
+       /**
+        * Finishes the object type
+        *
+        * @return      void
+        */
+       private function finishObjectType () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('announcement');
+       }
+
+       /**
+        * Finishes the object type list
+        *
+        * @return      void
+        */
+       private function finishObjectTypeList () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('announcement');
+       }
+
+       /**
+        * Finishes the session id
+        *
+        * @return      void
+        */
+       private function finishSessionId () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('announcement');
+       }
+
+       /**
+        * Finishes the UDP port
+        *
+        * @return      void
+        */
+       private function finishUdpPort () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('announcement');
+       }
+
+       /**
+        * Finishes the TCP port
+        *
+        * @return      void
+        */
+       private function finishTcpPort () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('announcement');
+       }
+
+       /**
+        * Finishes the hub listener
+        *
+        * @return      void
+        */
+       private function finishHubListener () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('announcement');
+       }
+
+       /**
+        * Finishes the client listener
+        *
+        * @return      void
+        */
+       private function finishClientListener () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('announcement');
+       }
+
+       /**
+        * Finishes the listener
+        *
+        * @return      void
+        */
+       private function finishListener () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('announcement');
+       }
+
+       /**
+        * Finishes the node status
+        *
+        * @return      void
+        */
+       private function finishNodeStatus () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('announcement');
+       }
+
+       /**
+        * Finishes the node id
+        *
+        * @return      void
+        */
+       private function finishNodeId () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('announcement');
+       }
+
+       /**
+        * Finishes the announcement data
+        *
+        * @return      void
+        */
+       private function finishAnnouncementData () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('announcement');
+       }
+
+       /**
+        * Finishes the announcement
+        *
+        * @return      void
+        */
+       private function finishAnnouncement () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('announcement');
+       }
+}
+
+// [EOF]
+?>
diff --git a/application/hub/main/template/class_ b/application/hub/main/template/class_
new file mode 100644 (file)
index 0000000..c4bbc31
--- /dev/null
@@ -0,0 +1,278 @@
+<?php
+/**
+ * An ??? template engine class for XML templates
+ *
+ * @author             Roland Haeder <webmaster@ship-simu.org>
+ * @version            0.0.0
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 Core Developer Team
+ * @license            GNU GPL 3.0 or any newer version
+ * @link               http://www.ship-simu.org
+ * @todo               This template engine does not make use of setTemplateType()
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+die('YOU NEED TO REPLACE ???, !!! AND ||| IN THIS CLASS BEFORE YOU CAN USE IT.');
+class Xml???TemplateEngine extends BaseTemplateEngine implements CompileableTemplate {
+       /**
+        * Main nodes in the XML tree
+        */
+       private $mainNodes = array(
+       );
+
+       /**
+        * Sub nodes in the XML tree
+        */
+       private $subNodes = array(
+       );
+
+       /**
+        * Current main node
+        */
+       private $curr = array();
+
+       /**
+        * Protected constructor
+        *
+        * @return      void
+        */
+       protected function __construct () {
+               // Call parent constructor
+               parent::__construct(__CLASS__);
+       }
+
+       /**
+        * Creates an instance of the class TemplateEngine and prepares it for usage
+        *
+        * @param       $applicationInstance    A manageable application
+        * @return      $templateInstance               An instance of TemplateEngine
+        * @throws      BasePathIsEmptyException                If the provided $templateBasePath is empty
+        * @throws      InvalidBasePathStringException  If $templateBasePath is no string
+        * @throws      BasePathIsNoDirectoryException  If $templateBasePath is no
+        *                                                                                      directory or not found
+        * @throws      BasePathReadProtectedException  If $templateBasePath is
+        *                                                                                      read-protected
+        */
+       public static final function createXml???TemplateEngine (ManageableApplication $applicationInstance) {
+               // Get a new instance
+               $templateInstance = new Xml???TemplateEngine();
+
+               // Determine base path
+               $templateBasePath = $templateInstance->getConfigInstance()->getConfigEntry('application_base_path') . $applicationInstance->getRequestInstance()->getRequestElement('app') . '/';
+
+               // Is the base path valid?
+               if (empty($templateBasePath)) {
+                       // Base path is empty
+                       throw new BasePathIsEmptyException($templateInstance, self::EXCEPTION_UNEXPECTED_EMPTY_STRING);
+               } elseif (!is_string($templateBasePath)) {
+                       // Is not a string
+                       throw new InvalidBasePathStringException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_STRING);
+               } elseif (!is_dir($templateBasePath)) {
+                       // Is not a path
+                       throw new BasePathIsNoDirectoryException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_PATH_NAME);
+               } elseif (!is_readable($templateBasePath)) {
+                       // Is not readable
+                       throw new BasePathReadProtectedException(array($templateInstance, $templateBasePath), self::EXCEPTION_READ_PROTECED_PATH);
+               }
+
+               // Set the base path
+               $templateInstance->setTemplateBasePath($templateBasePath);
+
+               // Set template extensions
+               $templateInstance->setRawTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('raw_template_extension'));
+               $templateInstance->setCodeTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('!!!_template_extension'));
+
+               // Absolute output path for compiled templates
+               $templateInstance->setCompileOutputPath($templateInstance->getConfigInstance()->getConfigEntry('base_path') . $templateInstance->getConfigInstance()->getConfigEntry('compile_output_path'));
+
+               // Init a variable stacker
+               $stackerInstance = ObjectFactory::createObjectByConfiguredName('!!!_stacker_class');
+
+               // Set it
+               $templateInstance->setStackerInstance($stackerInstance);
+
+               // Return the prepared instance
+               return $templateInstance;
+       }
+
+       /**
+        * Load a specified !!! template into the engine
+        *
+        * @param       $template       The !!! template we shall load which is
+        *                                              located in '!!!' by default
+        * @return      void
+        */
+       public function load???Template ($template) {
+               // Set template type
+               $this->setTemplateType($this->getConfigInstance()->getConfigEntry('!!!_template_type'));
+
+               // Load the special template
+               $this->loadTemplate($template);
+       }
+
+       /**
+        * Getter for current main node
+        *
+        * @return      $currMainNode   Current main node
+        */
+       public final function getCurrMainNode () {
+               return $this->curr['main_node'];
+       }
+
+       /**
+        * Setter for current main node
+        *
+        * @param       $element                Element name to set as current main node
+        * @return      $currMainNode   Current main node
+        */
+       private final function setCurrMainNode ($element) {
+               $this->curr['main_node'] = (string) $element;
+       }
+
+       /**
+        * Getter for main node array
+        *
+        * @return      $mainNodes      Array with valid main node names
+        */
+       public final function getMainNodes () {
+               return $this->mainNodes;
+       }
+
+       /**
+        * Getter for sub node array
+        *
+        * @return      $subNodes       Array with valid sub node names
+        */
+       public final function getSubNodes () {
+               return $this->subNodes;
+       }
+
+       /**
+        * Handles the start element of an XML resource
+        *
+        * @param       $resource               XML parser resource (currently ignored)
+        * @param       $element                The element we shall handle
+        * @param       $attributes             All attributes
+        * @return      void
+        * @throws      InvalidXmlNodeException         If an unknown/invalid XML node name was found
+        */
+       public function startElement ($resource, $element, array $attributes) {
+               // Initial method name which will never be called...
+               $methodName = 'init???';
+
+               // Make the element name lower-case
+               $element = strtolower($element);
+
+               // Is the element a main node?
+               //* DEBUG: */ echo "START: &gt;".$element."&lt;<br />\n";
+               if (in_array($element, $this->getMainNodes())) {
+                       // Okay, main node found!
+                       $methodName = 'start' . $this->convertToClassName($element);
+
+                       // Set it
+                       $this->setCurrMainNode($element);
+               } elseif (in_array($element, $this->getSubNodes())) {
+                       // Sub node found
+                       $methodName = 'start' . $this->convertToClassName($element);
+               } else {
+                       // Invalid node name found
+                       throw new InvalidXmlNodeException(array($this, $element, $attributes), XmlParser::EXCEPTION_XML_NODE_UNKNOWN);
+               }
+
+               // Call method
+               call_user_func_array(array($this, $methodName), $attributes);
+       }
+
+       /**
+        * Ends the main or sub node by sending out the gathered data
+        *
+        * @param       $resource       An XML resource pointer (currently ignored)
+        * @param       $nodeName       Name of the node we want to finish
+        * @return      void
+        * @throws      XmlNodeMismatchException        If current main node mismatches the closing one
+        */
+       public function endElement ($resource, $nodeName) {
+               // Make all lower-case
+               $nodeName = strtolower($nodeName);
+
+               // Does this match with current main node?
+               //* DEBUG: */ echo "END: &gt;".$nodeName."&lt;<br />\n";
+               if (($nodeName != $this->getCurrMainNode()) && (in_array($nodeName, $this->getMainNodes()))) {
+                       // Did not match!
+                       throw new XmlNodeMismatchException (array($this, $nodeName, $this->getCurrMainNode()), XmlParser::EXCEPTION_XML_NODE_MISMATCH);
+               } // END - if
+
+               // Construct method name
+               $methodName = 'finish' . $this->convertToClassName($nodeName);
+
+               // Call the corresponding method
+               //* DEBUG: */ echo "call: ".$methodName."<br />\n";
+               call_user_func_array(array($this, $methodName), array());
+       }
+
+       /**
+        * Currently not used
+        *
+        * @param       $resource               XML parser resource (currently ignored)
+        * @param       $characters             Characters to handle
+        * @return      void
+        * @todo        Find something useful with this!
+        */
+       public function characterHandler ($resource, $characters) {
+               // Trim all spaces away
+               $characters = trim($characters);
+
+               // Is this string empty?
+               if (empty($characters)) {
+                       // Then skip it silently
+                       return false;
+               } // END - if
+
+               // Get current XML node name as an array index
+               $nodeName = $this->getStackerInstance()->getNamed('!!!');
+
+               $this->partialStub('Do something with the gathered data.');
+       }
+
+       /**
+        * Getter for cache file (FQFN)
+        *
+        * @return      $fqfn   Full-qualified file name of the menu cache
+        */
+       public function get???CacheFqfn () {
+               $this->partialStub('Please implement this method.');
+       }
+
+       /**
+        * Starts the |||
+        *
+        * @return      void
+        */
+       private function start??? () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('!!!', '|||');
+       }
+
+       /**
+        * Finishes the |||
+        *
+        * @return      void
+        */
+       private function finish??? () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('!!!');
+       }
+}
+
+// [EOF]
+?>
index 5d33ef7fc74ae2e733d2f61b3f99581e0f9c75f9..f551ef47b7591c74e7b59193e56a1fa6505a87ab 100644 (file)
@@ -1,370 +1,3 @@
 <?php
-/**
- * An SelfConnect template engine class
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 Core Developer Team
- * @license            GNU GPL 3.0 or any newer version
- * @link               http://www.ship-simu.org
- * @todo               This template engine does not make use of setTemplateType()
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-class SelfConnectTemplateEngine extends BaseTemplateEngine implements CompileableTemplate {
-       /**
-        * Main nodes in the XML tree ('menu' is ignored)
-        */
-       private $mainNodes = array(
-               'self-connect',
-       );
-
-       /**
-        * Sub nodes in the XML tree
-        */
-       private $subNodes = array(
-               'self-connect-data',
-               'node-id',
-               'session-id'
-       );
-
-       /**
-        * Current main node
-        */
-       private $curr = array();
-
-       /**
-        * Content from dependency
-        */
-       private $dependencyContent = array();
-
-       /**
-        * Protected constructor
-        *
-        * @return      void
-        */
-       protected function __construct () {
-               // Call parent constructor
-               parent::__construct(__CLASS__);
-       }
-
-       /**
-        * Creates an instance of the class TemplateEngine and prepares it for usage
-        *
-        * @param       $applicationInstance    A manageable application
-        * @return      $templateInstance               An instance of TemplateEngine
-        * @throws      BasePathIsEmptyException                If the provided $templateBasePath is empty
-        * @throws      InvalidBasePathStringException  If $templateBasePath is no string
-        * @throws      BasePathIsNoDirectoryException  If $templateBasePath is no
-        *                                                                                      directory or not found
-        * @throws      BasePathReadProtectedException  If $templateBasePath is
-        *                                                                                      read-protected
-        */
-       public static final function createSelfConnectTemplateEngine (ManageableApplication $applicationInstance) {
-               // Get a new instance
-               $templateInstance = new SelfConnectTemplateEngine();
-
-               // Determine base path
-               $templateBasePath = $templateInstance->getConfigInstance()->getConfigEntry('application_base_path') . $applicationInstance->getRequestInstance()->getRequestElement('app') . '/';
-
-               // Is the base path valid?
-               if (empty($templateBasePath)) {
-                       // Base path is empty
-                       throw new BasePathIsEmptyException($templateInstance, self::EXCEPTION_UNEXPECTED_EMPTY_STRING);
-               } elseif (!is_string($templateBasePath)) {
-                       // Is not a string
-                       throw new InvalidBasePathStringException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_STRING);
-               } elseif (!is_dir($templateBasePath)) {
-                       // Is not a path
-                       throw new BasePathIsNoDirectoryException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_PATH_NAME);
-               } elseif (!is_readable($templateBasePath)) {
-                       // Is not readable
-                       throw new BasePathReadProtectedException(array($templateInstance, $templateBasePath), self::EXCEPTION_READ_PROTECED_PATH);
-               }
-
-               // Set the base path
-               $templateInstance->setTemplateBasePath($templateBasePath);
-
-               // Set template extensions
-               $templateInstance->setRawTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('raw_template_extension'));
-               $templateInstance->setCodeTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('self_connect_template_extension'));
-
-               // Absolute output path for compiled templates
-               $templateInstance->setCompileOutputPath($templateInstance->getConfigInstance()->getConfigEntry('base_path') . $templateInstance->getConfigInstance()->getConfigEntry('compile_output_path'));
-
-               // Init a variable stacker
-               $stackerInstance = ObjectFactory::createObjectByConfiguredName('self_connect_stacker_class');
-
-               // Set it
-               $templateInstance->setStackerInstance($stackerInstance);
-
-               // Return the prepared instance
-               return $templateInstance;
-       }
-
-       /**
-        * Load a specified self-connect template into the engine
-        *
-        * @param       $template       The self-connect template we shall load which is
-        *                                              located in 'self_connect' by default
-        * @return      void
-        */
-       public function loadSelfConnectTemplate ($template = 'self_connect') {
-               // Set template type
-               $this->setTemplateType($this->getConfigInstance()->getConfigEntry('self_connect_template_type'));
-
-               // Load the special template
-               $this->loadTemplate($template);
-       }
-
-       /**
-        * Getter for current main node
-        *
-        * @return      $currMainNode   Current main node
-        */
-       public final function getCurrMainNode () {
-               return $this->curr['main_node'];
-       }
-
-       /**
-        * Setter for current main node
-        *
-        * @param       $element                Element name to set as current main node
-        * @return      $currMainNode   Current main node
-        */
-       private final function setCurrMainNode ($element) {
-               $this->curr['main_node'] = (string) $element;
-       }
-
-       /**
-        * Getter for main node array
-        *
-        * @return      $mainNodes      Array with valid main node names
-        */
-       public final function getMainNodes () {
-               return $this->mainNodes;
-       }
-
-       /**
-        * Getter for sub node array
-        *
-        * @return      $subNodes       Array with valid sub node names
-        */
-       public final function getSubNodes () {
-               return $this->subNodes;
-       }
-
-       /**
-        * Handles the start element of an XML resource
-        *
-        * @param       $resource               XML parser resource (currently ignored)
-        * @param       $element                The element we shall handle
-        * @param       $attributes             All attributes
-        * @return      void
-        * @throws      InvalidXmlNodeException         If an unknown/invalid XML node name was found
-        */
-       public function startElement ($resource, $element, array $attributes) {
-               // Initial method name which will never be called...
-               $methodName = 'initSelfConnect';
-
-               // Make the element name lower-case
-               $element = strtolower($element);
-
-               // Is the element a main node?
-               //* DEBUG: */ echo "START: &gt;".$element."&lt;<br />\n";
-               if (in_array($element, $this->getMainNodes())) {
-                       // Okay, main node found!
-                       $methodName = 'start' . $this->convertToClassName($element);
-
-                       // Set it
-                       $this->setCurrMainNode($element);
-               } elseif (in_array($element, $this->getSubNodes())) {
-                       // Sub node found
-                       $methodName = 'start' . $this->convertToClassName($element);
-               } else {
-                       // Invalid node name found
-                       throw new InvalidXmlNodeException(array($this, $element, $attributes), XmlParser::EXCEPTION_XML_NODE_UNKNOWN);
-               }
-
-               // Call method
-               //* DEBUG: */ echo "call: ".$methodName."<br />\n";
-               call_user_func_array(array($this, $methodName), $attributes);
-       }
-
-       /**
-        * Ends the main or sub node by sending out the gathered data
-        *
-        * @param       $resource       An XML resource pointer (currently ignored)
-        * @param       $nodeName       Name of the node we want to finish
-        * @return      void
-        * @throws      XmlNodeMismatchException        If current main node mismatches the closing one
-        */
-       public function endElement ($resource, $nodeName) {
-               // Make all lower-case
-               $nodeName = strtolower($nodeName);
-
-               // Does this match with current main node?
-               //* DEBUG: */ echo "END: &gt;".$nodeName."&lt;<br />\n";
-               if (($nodeName != $this->getCurrMainNode()) && (in_array($nodeName, $this->getMainNodes()))) {
-                       // Did not match!
-                       throw new XmlNodeMismatchException (array($this, $nodeName, $this->getCurrMainNode()), XmlParser::EXCEPTION_XML_NODE_MISMATCH);
-               } // END - if
-
-               // Construct method name
-               $methodName = 'finish' . $this->convertToClassName($nodeName);
-
-               // Call the corresponding method
-               //* DEBUG: */ echo "call: ".$methodName."<br />\n";
-               call_user_func_array(array($this, $methodName), array());
-       }
-
-       /**
-        * Currently not used
-        *
-        * @param       $resource               XML parser resource (currently ignored)
-        * @param       $characters             Characters to handle
-        * @return      void
-        * @todo        Find something useful with this!
-        */
-       public function characterHandler ($resource, $characters) {
-               // Trim all spaces away
-               $characters = trim($characters);
-
-               // Is this string empty?
-               if (empty($characters)) {
-                       // Then skip it silently
-                       return false;
-               } // END - if
-
-               // Assign the found characters to variable and use the last entry from
-               // stack as the name
-               parent::assignVariable($this->getStackerInstance()->getNamed('self_connect'), $characters);
-       }
-
-       /**
-        * Handles the template dependency for given node
-        *
-        * @param       $node                                   The node we should load a dependency template
-        * @param       $templateDependency             A template to load to satisfy dependencies
-        * @return      void
-        */
-       private function handleTemplateDependency ($node, $templateDependency) {
-               // Is the template dependency set?
-               if ((!empty($templateDependency)) && (!isset($this->dependencyContent[$node]))) {
-                       // Get a temporay menu template instance
-                       $templateInstance = ObjectFactory::createObjectByConfiguredName('self_connect_template_class', array($this->getApplicationInstance()));
-
-                       // Then load it
-                       $templateInstance->loadSelfConnectTemplate($templateDependency);
-
-                       // Get an XmlParser instance
-                       $templateInstance->renderXmlContent();
-
-                       // Parse the template's content contents
-                       $this->dependencyContent[$node] = $templateInstance->getRawTemplateData();
-               } // END - if
-       }
-
-       /**
-        * Getter for cache file (FQFN)
-        *
-        * @return      $fqfn   Full-qualified file name of the menu cache
-        */
-       public function getMenuCacheFqfn () {
-               $this->partialStub('Please implement this method.');
-       }
-
-       /**
-        * Starts the self_connect
-        *
-        * @return      void
-        */
-       private function startSelfConnect () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('self_connect', 'self-connect');
-       }
-
-       /**
-        * Starts the self_connect data
-        *
-        * @return      void
-        */
-       private function startSelfConnectData () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('self_connect', 'self-connect-data');
-       }
-
-       /**
-        * Starts the node id
-        *
-        * @return      void
-        */
-       private function startNodeId () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('self_connect', 'node-id');
-       }
-
-       /**
-        * Starts the session id
-        *
-        * @return      void
-        */
-       private function startSessionId () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('self_connect', 'session-id');
-       }
-
-       /**
-        * Finishes the session id
-        *
-        * @return      void
-        */
-       private function finishSessionId () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('self_connect');
-       }
-
-       /**
-        * Finishes the node id
-        *
-        * @return      void
-        */
-       private function finishNodeId () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('self_connect');
-       }
-
-       /**
-        * Finishes the self_connect data
-        *
-        * @return      void
-        */
-       private function finishSelfConnectData () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('self_connect');
-       }
-
-       /**
-        * Finishes the self_connect
-        *
-        * @return      void
-        */
-       private function finishSelfConnect () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('self_connect');
-       }
-}
-
-// [EOF]
+// @DEPRECATED
 ?>
diff --git a/application/hub/main/template/connect/class_XmlSelfConnectTemplateEngine.php b/application/hub/main/template/connect/class_XmlSelfConnectTemplateEngine.php
new file mode 100644 (file)
index 0000000..7ec553f
--- /dev/null
@@ -0,0 +1,370 @@
+<?php
+/**
+ * An SelfConnect template engine class for XML templates
+ *
+ * @author             Roland Haeder <webmaster@ship-simu.org>
+ * @version            0.0.0
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 Core Developer Team
+ * @license            GNU GPL 3.0 or any newer version
+ * @link               http://www.ship-simu.org
+ * @todo               This template engine does not make use of setTemplateType()
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+class XmlSelfConnectTemplateEngine extends BaseTemplateEngine implements CompileableTemplate {
+       /**
+        * Main nodes in the XML tree
+        */
+       private $mainNodes = array(
+               'self-connect',
+       );
+
+       /**
+        * Sub nodes in the XML tree
+        */
+       private $subNodes = array(
+               'self-connect-data',
+               'node-id',
+               'session-id'
+       );
+
+       /**
+        * Current main node
+        */
+       private $curr = array();
+
+       /**
+        * Content from dependency
+        */
+       private $dependencyContent = array();
+
+       /**
+        * Protected constructor
+        *
+        * @return      void
+        */
+       protected function __construct () {
+               // Call parent constructor
+               parent::__construct(__CLASS__);
+       }
+
+       /**
+        * Creates an instance of the class TemplateEngine and prepares it for usage
+        *
+        * @param       $applicationInstance    A manageable application
+        * @return      $templateInstance               An instance of TemplateEngine
+        * @throws      BasePathIsEmptyException                If the provided $templateBasePath is empty
+        * @throws      InvalidBasePathStringException  If $templateBasePath is no string
+        * @throws      BasePathIsNoDirectoryException  If $templateBasePath is no
+        *                                                                                      directory or not found
+        * @throws      BasePathReadProtectedException  If $templateBasePath is
+        *                                                                                      read-protected
+        */
+       public static final function createXmlSelfConnectTemplateEngine (ManageableApplication $applicationInstance) {
+               // Get a new instance
+               $templateInstance = new XmlSelfConnectTemplateEngine();
+
+               // Determine base path
+               $templateBasePath = $templateInstance->getConfigInstance()->getConfigEntry('application_base_path') . $applicationInstance->getRequestInstance()->getRequestElement('app') . '/';
+
+               // Is the base path valid?
+               if (empty($templateBasePath)) {
+                       // Base path is empty
+                       throw new BasePathIsEmptyException($templateInstance, self::EXCEPTION_UNEXPECTED_EMPTY_STRING);
+               } elseif (!is_string($templateBasePath)) {
+                       // Is not a string
+                       throw new InvalidBasePathStringException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_STRING);
+               } elseif (!is_dir($templateBasePath)) {
+                       // Is not a path
+                       throw new BasePathIsNoDirectoryException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_PATH_NAME);
+               } elseif (!is_readable($templateBasePath)) {
+                       // Is not readable
+                       throw new BasePathReadProtectedException(array($templateInstance, $templateBasePath), self::EXCEPTION_READ_PROTECED_PATH);
+               }
+
+               // Set the base path
+               $templateInstance->setTemplateBasePath($templateBasePath);
+
+               // Set template extensions
+               $templateInstance->setRawTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('raw_template_extension'));
+               $templateInstance->setCodeTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('self_connect_template_extension'));
+
+               // Absolute output path for compiled templates
+               $templateInstance->setCompileOutputPath($templateInstance->getConfigInstance()->getConfigEntry('base_path') . $templateInstance->getConfigInstance()->getConfigEntry('compile_output_path'));
+
+               // Init a variable stacker
+               $stackerInstance = ObjectFactory::createObjectByConfiguredName('self_connect_stacker_class');
+
+               // Set it
+               $templateInstance->setStackerInstance($stackerInstance);
+
+               // Return the prepared instance
+               return $templateInstance;
+       }
+
+       /**
+        * Load a specified self-connect template into the engine
+        *
+        * @param       $template       The self-connect template we shall load which is
+        *                                              located in 'self_connect' by default
+        * @return      void
+        */
+       public function loadSelfConnectTemplate ($template = 'self_connect') {
+               // Set template type
+               $this->setTemplateType($this->getConfigInstance()->getConfigEntry('self_connect_template_type'));
+
+               // Load the special template
+               $this->loadTemplate($template);
+       }
+
+       /**
+        * Getter for current main node
+        *
+        * @return      $currMainNode   Current main node
+        */
+       public final function getCurrMainNode () {
+               return $this->curr['main_node'];
+       }
+
+       /**
+        * Setter for current main node
+        *
+        * @param       $element                Element name to set as current main node
+        * @return      $currMainNode   Current main node
+        */
+       private final function setCurrMainNode ($element) {
+               $this->curr['main_node'] = (string) $element;
+       }
+
+       /**
+        * Getter for main node array
+        *
+        * @return      $mainNodes      Array with valid main node names
+        */
+       public final function getMainNodes () {
+               return $this->mainNodes;
+       }
+
+       /**
+        * Getter for sub node array
+        *
+        * @return      $subNodes       Array with valid sub node names
+        */
+       public final function getSubNodes () {
+               return $this->subNodes;
+       }
+
+       /**
+        * Handles the start element of an XML resource
+        *
+        * @param       $resource               XML parser resource (currently ignored)
+        * @param       $element                The element we shall handle
+        * @param       $attributes             All attributes
+        * @return      void
+        * @throws      InvalidXmlNodeException         If an unknown/invalid XML node name was found
+        */
+       public function startElement ($resource, $element, array $attributes) {
+               // Initial method name which will never be called...
+               $methodName = 'initSelfConnect';
+
+               // Make the element name lower-case
+               $element = strtolower($element);
+
+               // Is the element a main node?
+               //* DEBUG: */ echo "START: &gt;".$element."&lt;<br />\n";
+               if (in_array($element, $this->getMainNodes())) {
+                       // Okay, main node found!
+                       $methodName = 'start' . $this->convertToClassName($element);
+
+                       // Set it
+                       $this->setCurrMainNode($element);
+               } elseif (in_array($element, $this->getSubNodes())) {
+                       // Sub node found
+                       $methodName = 'start' . $this->convertToClassName($element);
+               } else {
+                       // Invalid node name found
+                       throw new InvalidXmlNodeException(array($this, $element, $attributes), XmlParser::EXCEPTION_XML_NODE_UNKNOWN);
+               }
+
+               // Call method
+               //* DEBUG: */ echo "call: ".$methodName."<br />\n";
+               call_user_func_array(array($this, $methodName), $attributes);
+       }
+
+       /**
+        * Ends the main or sub node by sending out the gathered data
+        *
+        * @param       $resource       An XML resource pointer (currently ignored)
+        * @param       $nodeName       Name of the node we want to finish
+        * @return      void
+        * @throws      XmlNodeMismatchException        If current main node mismatches the closing one
+        */
+       public function endElement ($resource, $nodeName) {
+               // Make all lower-case
+               $nodeName = strtolower($nodeName);
+
+               // Does this match with current main node?
+               //* DEBUG: */ echo "END: &gt;".$nodeName."&lt;<br />\n";
+               if (($nodeName != $this->getCurrMainNode()) && (in_array($nodeName, $this->getMainNodes()))) {
+                       // Did not match!
+                       throw new XmlNodeMismatchException (array($this, $nodeName, $this->getCurrMainNode()), XmlParser::EXCEPTION_XML_NODE_MISMATCH);
+               } // END - if
+
+               // Construct method name
+               $methodName = 'finish' . $this->convertToClassName($nodeName);
+
+               // Call the corresponding method
+               //* DEBUG: */ echo "call: ".$methodName."<br />\n";
+               call_user_func_array(array($this, $methodName), array());
+       }
+
+       /**
+        * Currently not used
+        *
+        * @param       $resource               XML parser resource (currently ignored)
+        * @param       $characters             Characters to handle
+        * @return      void
+        * @todo        Find something useful with this!
+        */
+       public function characterHandler ($resource, $characters) {
+               // Trim all spaces away
+               $characters = trim($characters);
+
+               // Is this string empty?
+               if (empty($characters)) {
+                       // Then skip it silently
+                       return false;
+               } // END - if
+
+               // Assign the found characters to variable and use the last entry from
+               // stack as the name
+               parent::assignVariable($this->getStackerInstance()->getNamed('self_connect'), $characters);
+       }
+
+       /**
+        * Handles the template dependency for given node
+        *
+        * @param       $node                                   The node we should load a dependency template
+        * @param       $templateDependency             A template to load to satisfy dependencies
+        * @return      void
+        */
+       private function handleTemplateDependency ($node, $templateDependency) {
+               // Is the template dependency set?
+               if ((!empty($templateDependency)) && (!isset($this->dependencyContent[$node]))) {
+                       // Get a temporay template instance
+                       $templateInstance = ObjectFactory::createObjectByConfiguredName('self_connect_template_class', array($this->getApplicationInstance()));
+
+                       // Then load it
+                       $templateInstance->loadSelfConnectTemplate($templateDependency);
+
+                       // Parse the XML content
+                       $templateInstance->renderXmlContent();
+
+                       // Save the parsed raw content in our dependency array
+                       $this->dependencyContent[$node] = $templateInstance->getRawTemplateData();
+               } // END - if
+       }
+
+       /**
+        * Getter for cache file (FQFN)
+        *
+        * @return      $fqfn   Full-qualified file name of the menu cache
+        */
+       public function getMenuCacheFqfn () {
+               $this->partialStub('Please implement this method.');
+       }
+
+       /**
+        * Starts the self_connect
+        *
+        * @return      void
+        */
+       private function startSelfConnect () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('self_connect', 'self-connect');
+       }
+
+       /**
+        * Starts the self_connect data
+        *
+        * @return      void
+        */
+       private function startSelfConnectData () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('self_connect', 'self-connect-data');
+       }
+
+       /**
+        * Starts the node id
+        *
+        * @return      void
+        */
+       private function startNodeId () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('self_connect', 'node-id');
+       }
+
+       /**
+        * Starts the session id
+        *
+        * @return      void
+        */
+       private function startSessionId () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('self_connect', 'session-id');
+       }
+
+       /**
+        * Finishes the session id
+        *
+        * @return      void
+        */
+       private function finishSessionId () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('self_connect');
+       }
+
+       /**
+        * Finishes the node id
+        *
+        * @return      void
+        */
+       private function finishNodeId () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('self_connect');
+       }
+
+       /**
+        * Finishes the self_connect data
+        *
+        * @return      void
+        */
+       private function finishSelfConnectData () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('self_connect');
+       }
+
+       /**
+        * Finishes the self_connect
+        *
+        * @return      void
+        */
+       private function finishSelfConnect () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('self_connect');
+       }
+}
+
+// [EOF]
+?>
index 39f6be92e751086b6fd67af1059d384760a8b5ee..f551ef47b7591c74e7b59193e56a1fa6505a87ab 100644 (file)
@@ -1,469 +1,3 @@
 <?php
-/**
- * An ObjectRegistry template engine class
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 Core Developer Team
- * @license            GNU GPL 3.0 or any newer version
- * @link               http://www.ship-simu.org
- * @todo               This template engine does not make use of setTemplateType()
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-class ObjectRegistryTemplateEngine extends BaseTemplateEngine implements CompileableTemplate {
-       /**
-        * Instance for the object registry
-        */
-       private $objectRegistryInstance = null;
-
-       /**
-        * Main nodes in the XML tree ('menu' is ignored)
-        */
-       private $mainNodes = array(
-               'object-registry'
-       );
-
-       /**
-        * Sub nodes in the XML tree
-        */
-       private $subNodes = array(
-               'object-list',
-               'object-list-entry',
-               'object-name',
-               'object-recipient-limitation',
-               'object-max-spread',
-               'object-protocol',
-               'object-recipient-type'
-       );
-
-       /**
-        * Current main node
-        */
-       private $curr = array();
-
-       /**
-        * Content from dependency
-        */
-       private $dependencyContent = array();
-
-       /**
-        * Protected constructor
-        *
-        * @return      void
-        */
-       protected function __construct () {
-               // Call parent constructor
-               parent::__construct(__CLASS__);
-
-               // Init object type registry instance
-               $this->objectRegistryInstance = ObjectFactory::createObjectByConfiguredName('object_type_registry_class');
-       }
-
-       /**
-        * Creates an instance of the class TemplateEngine and prepares it for usage
-        *
-        * @param       $applicationInstance    A manageable application
-        * @return      $templateInstance               An instance of TemplateEngine
-        * @throws      BasePathIsEmptyException                If the provided $templateBasePath is empty
-        * @throws      InvalidBasePathStringException  If $templateBasePath is no string
-        * @throws      BasePathIsNoDirectoryException  If $templateBasePath is no
-        *                                                                                      directory or not found
-        * @throws      BasePathReadProtectedException  If $templateBasePath is
-        *                                                                                      read-protected
-        */
-       public static final function createObjectRegistryTemplateEngine (ManageableApplication $applicationInstance) {
-               // Get a new instance
-               $templateInstance = new ObjectRegistryTemplateEngine();
-
-               // Determine base path
-               $templateBasePath = $templateInstance->getConfigInstance()->getConfigEntry('application_base_path') . $applicationInstance->getRequestInstance()->getRequestElement('app') . '/';
-
-               // Is the base path valid?
-               if (empty($templateBasePath)) {
-                       // Base path is empty
-                       throw new BasePathIsEmptyException($templateInstance, self::EXCEPTION_UNEXPECTED_EMPTY_STRING);
-               } elseif (!is_string($templateBasePath)) {
-                       // Is not a string
-                       throw new InvalidBasePathStringException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_STRING);
-               } elseif (!is_dir($templateBasePath)) {
-                       // Is not a path
-                       throw new BasePathIsNoDirectoryException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_PATH_NAME);
-               } elseif (!is_readable($templateBasePath)) {
-                       // Is not readable
-                       throw new BasePathReadProtectedException(array($templateInstance, $templateBasePath), self::EXCEPTION_READ_PROTECED_PATH);
-               }
-
-               // Set the base path
-               $templateInstance->setTemplateBasePath($templateBasePath);
-
-               // Set template extensions
-               $templateInstance->setRawTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('raw_template_extension'));
-               $templateInstance->setCodeTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('object_registry_template_extension'));
-
-               // Absolute output path for compiled templates
-               $templateInstance->setCompileOutputPath($templateInstance->getConfigInstance()->getConfigEntry('base_path') . $templateInstance->getConfigInstance()->getConfigEntry('compile_output_path'));
-
-               // Init a variable stacker
-               $stackerInstance = ObjectFactory::createObjectByConfiguredName('object_registry_stacker_class');
-
-               // Set it
-               $templateInstance->setStackerInstance($stackerInstance);
-
-               // Return the prepared instance
-               return $templateInstance;
-       }
-
-       /**
-        * Load a specified object_registry template into the engine
-        *
-        * @param       $template       The object_registry template we shall load which is
-        *                                              located in 'object_registry' by default
-        * @return      void
-        */
-       public function loadObjectRegistryTemplate ($template) {
-               // Set template type
-               $this->setTemplateType($this->getConfigInstance()->getConfigEntry('object_registry_template_type'));
-
-               // Load the special template
-               $this->loadTemplate($template);
-       }
-
-       /**
-        * Getter for current main node
-        *
-        * @return      $currMainNode   Current main node
-        */
-       public final function getCurrMainNode () {
-               return $this->curr['main_node'];
-       }
-
-       /**
-        * Setter for current main node
-        *
-        * @param       $element                Element name to set as current main node
-        * @return      $currMainNode   Current main node
-        */
-       private final function setCurrMainNode ($element) {
-               $this->curr['main_node'] = (string) $element;
-       }
-
-       /**
-        * Getter for main node array
-        *
-        * @return      $mainNodes      Array with valid main node names
-        */
-       public final function getMainNodes () {
-               return $this->mainNodes;
-       }
-
-       /**
-        * Getter for sub node array
-        *
-        * @return      $subNodes       Array with valid sub node names
-        */
-       public final function getSubNodes () {
-               return $this->subNodes;
-       }
-
-       /**
-        * Handles the start element of an XML resource
-        *
-        * @param       $resource               XML parser resource (currently ignored)
-        * @param       $element                The element we shall handle
-        * @param       $attributes             All attributes
-        * @return      void
-        * @throws      InvalidXmlNodeException         If an unknown/invalid XML node name was found
-        */
-       public function startElement ($resource, $element, array $attributes) {
-               // Initial method name which will never be called...
-               $methodName = 'initObjectRegistry';
-
-               // Make the element name lower-case
-               $element = strtolower($element);
-
-               // Is the element a main node?
-               //* DEBUG: */ echo "START: &gt;".$element."&lt;<br />\n";
-               if (in_array($element, $this->getMainNodes())) {
-                       // Okay, main node found!
-                       $methodName = 'start' . $this->convertToClassName($element);
-
-                       // Set it
-                       $this->setCurrMainNode($element);
-               } elseif (in_array($element, $this->getSubNodes())) {
-                       // Sub node found
-                       $methodName = 'start' . $this->convertToClassName($element);
-               } else {
-                       // Invalid node name found
-                       throw new InvalidXmlNodeException(array($this, $element, $attributes), XmlParser::EXCEPTION_XML_NODE_UNKNOWN);
-               }
-
-               // Call method
-               call_user_func_array(array($this, $methodName), $attributes);
-       }
-
-       /**
-        * Ends the main or sub node by sending out the gathered data
-        *
-        * @param       $resource       An XML resource pointer (currently ignored)
-        * @param       $nodeName       Name of the node we want to finish
-        * @return      void
-        * @throws      XmlNodeMismatchException        If current main node mismatches the closing one
-        */
-       public function endElement ($resource, $nodeName) {
-               // Make all lower-case
-               $nodeName = strtolower($nodeName);
-
-               // Does this match with current main node?
-               //* DEBUG: */ echo "END: &gt;".$nodeName."&lt;<br />\n";
-               if (($nodeName != $this->getCurrMainNode()) && (in_array($nodeName, $this->getMainNodes()))) {
-                       // Did not match!
-                       throw new XmlNodeMismatchException (array($this, $nodeName, $this->getCurrMainNode()), XmlParser::EXCEPTION_XML_NODE_MISMATCH);
-               } // END - if
-
-               // Construct method name
-               $methodName = 'finish' . $this->convertToClassName($nodeName);
-
-               // Call the corresponding method
-               //* DEBUG: */ echo "call: ".$methodName."<br />\n";
-               call_user_func_array(array($this, $methodName), array());
-       }
-
-       /**
-        * Currently not used
-        *
-        * @param       $resource               XML parser resource (currently ignored)
-        * @param       $characters             Characters to handle
-        * @return      void
-        * @todo        Find something useful with this!
-        */
-       public function characterHandler ($resource, $characters) {
-               // Trim all spaces away
-               $characters = trim($characters);
-
-               // Is this string empty?
-               if (empty($characters)) {
-                       // Then skip it silently
-                       return false;
-               } // END - if
-
-               // Get current XML node name as an array index
-               $nodeName = $this->getStackerInstance()->getNamed('object_registry');
-
-               // Is the node name 'object-name'?
-               if ($nodeName == 'object-name') {
-                       // Output debug message
-                       $this->debugOutput('TAGS: Adding object type ' . $characters . ' to registry.');
-               } // END - if
-
-               // Add it to the registry
-               $this->objectRegistryInstance->addEntry($nodeName, $characters);
-       }
-
-       /**
-        * Handles the template dependency for given node
-        *
-        * @param       $node                                   The node we should load a dependency template
-        * @param       $templateDependency             A template to load to satisfy dependencies
-        * @return      void
-        */
-       private function handleTemplateDependency ($node, $templateDependency) {
-               // Is the template dependency set?
-               if ((!empty($templateDependency)) && (!isset($this->dependencyContent[$node]))) {
-                       // Get a temporay menu template instance
-                       $templateInstance = ObjectFactory::createObjectByConfiguredName('object_registry_template_class', array($this->getApplicationInstance()));
-
-                       // Then load it
-                       $templateInstance->loadObjectRegistryTemplate($templateDependency);
-
-                       // Get an XmlParser instance
-                       $templateInstance->renderXmlContent();
-
-                       // Parse the template's content contents
-                       $this->dependencyContent[$node] = $templateInstance->getRawTemplateData();
-               } // END - if
-       }
-
-       /**
-        * Getter for cache file (FQFN)
-        *
-        * @return      $fqfn   Full-qualified file name of the menu cache
-        */
-       public function getObjectRegistryCacheFqfn () {
-               $this->partialStub('Please implement this method.');
-       }
-
-       /**
-        * Starts the object-registry
-        *
-        * @return      void
-        */
-       private function startObjectRegistry () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('object_registry', 'object-registry');
-       }
-
-       /**
-        * Starts the object-list
-        *
-        * @return      void
-        */
-       private function startObjectList () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('object_registry', 'object-list');
-       }
-
-       /**
-        * Starts the object-list-entry
-        *
-        * @return      void
-        */
-       private function startObjectListEntry () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('object_registry', 'object-list');
-       }
-
-       /**
-        * Starts the object-name
-        *
-        * @return      void
-        */
-       private function startObjectName () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('object_registry', 'object-name');
-       }
-
-       /**
-        * Starts the object-recipient-limitation
-        *
-        * @return      void
-        */
-       private function startObjectRecipientLimitation () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('object_registry', 'object-recipient-limitation');
-       }
-
-       /**
-        * Starts the object-max-spread
-        *
-        * @return      void
-        */
-       private function startObjectMaxSpread () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('object_registry', 'object-max-spread');
-       }
-
-       /**
-        * Starts the object-protocol
-        *
-        * @return      void
-        */
-       private function startObjectProtocol () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('object_registry', 'object-protocol');
-       }
-
-       /**
-        * Starts the object-recipient-type
-        *
-        * @return      void
-        */
-       private function startObjectRecipientType () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('object_registry', 'object-recipient-type');
-       }
-
-       /**
-        * Finishes the object-recipient-type
-        *
-        * @return      void
-        */
-       private function finishObjectRecipientType () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('object_registry');
-       }
-
-       /**
-        * Finishes the object-protocol
-        *
-        * @return      void
-        */
-       private function finishObjectProtocol () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('object_registry');
-       }
-
-       /**
-        * Finishes the object-max-spread
-        *
-        * @return      void
-        */
-       private function finishObjectMaxSpread () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('object_registry');
-       }
-
-       /**
-        * Finishes the object-recipient-limitation
-        *
-        * @return      void
-        */
-       private function finishObjectRecipientLimitation () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('object_registry');
-       }
-
-       /**
-        * Finishes the object-name
-        *
-        * @return      void
-        */
-       private function finishObjectName () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('object_registry');
-       }
-
-       /**
-        * Finishes the object-list-entry
-        *
-        * @return      void
-        */
-       private function finishObjectListEntry () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('object_registry');
-       }
-
-       /**
-        * Finishes the object-list
-        *
-        * @return      void
-        */
-       private function finishObjectList () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('object_registry');
-       }
-
-       /**
-        * Finishes the object-registry
-        *
-        * @return      void
-        */
-       private function finishObjectRegistry () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('object_registry');
-       }
-}
-
-// [EOF]
+// @DEPRECATED
 ?>
diff --git a/application/hub/main/template/objects/class_XmlObjectRegistryTemplateEngine.php b/application/hub/main/template/objects/class_XmlObjectRegistryTemplateEngine.php
new file mode 100644 (file)
index 0000000..a76a882
--- /dev/null
@@ -0,0 +1,469 @@
+<?php
+/**
+ * An ObjectRegistry template engine class for XML templates
+ *
+ * @author             Roland Haeder <webmaster@ship-simu.org>
+ * @version            0.0.0
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 Core Developer Team
+ * @license            GNU GPL 3.0 or any newer version
+ * @link               http://www.ship-simu.org
+ * @todo               This template engine does not make use of setTemplateType()
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+class XmlObjectRegistryTemplateEngine extends BaseTemplateEngine implements CompileableTemplate {
+       /**
+        * Instance for the object registry
+        */
+       private $objectRegistryInstance = null;
+
+       /**
+        * Main nodes in the XML tree
+        */
+       private $mainNodes = array(
+               'object-registry'
+       );
+
+       /**
+        * Sub nodes in the XML tree
+        */
+       private $subNodes = array(
+               'object-list',
+               'object-list-entry',
+               'object-name',
+               'object-recipient-limitation',
+               'object-max-spread',
+               'object-protocol',
+               'object-recipient-type'
+       );
+
+       /**
+        * Current main node
+        */
+       private $curr = array();
+
+       /**
+        * Content from dependency
+        */
+       private $dependencyContent = array();
+
+       /**
+        * Protected constructor
+        *
+        * @return      void
+        */
+       protected function __construct () {
+               // Call parent constructor
+               parent::__construct(__CLASS__);
+
+               // Init object type registry instance
+               $this->objectRegistryInstance = ObjectFactory::createObjectByConfiguredName('object_type_registry_class');
+       }
+
+       /**
+        * Creates an instance of the class TemplateEngine and prepares it for usage
+        *
+        * @param       $applicationInstance    A manageable application
+        * @return      $templateInstance               An instance of TemplateEngine
+        * @throws      BasePathIsEmptyException                If the provided $templateBasePath is empty
+        * @throws      InvalidBasePathStringException  If $templateBasePath is no string
+        * @throws      BasePathIsNoDirectoryException  If $templateBasePath is no
+        *                                                                                      directory or not found
+        * @throws      BasePathReadProtectedException  If $templateBasePath is
+        *                                                                                      read-protected
+        */
+       public static final function createXmlObjectRegistryTemplateEngine (ManageableApplication $applicationInstance) {
+               // Get a new instance
+               $templateInstance = new XmlObjectRegistryTemplateEngine();
+
+               // Determine base path
+               $templateBasePath = $templateInstance->getConfigInstance()->getConfigEntry('application_base_path') . $applicationInstance->getRequestInstance()->getRequestElement('app') . '/';
+
+               // Is the base path valid?
+               if (empty($templateBasePath)) {
+                       // Base path is empty
+                       throw new BasePathIsEmptyException($templateInstance, self::EXCEPTION_UNEXPECTED_EMPTY_STRING);
+               } elseif (!is_string($templateBasePath)) {
+                       // Is not a string
+                       throw new InvalidBasePathStringException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_STRING);
+               } elseif (!is_dir($templateBasePath)) {
+                       // Is not a path
+                       throw new BasePathIsNoDirectoryException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_PATH_NAME);
+               } elseif (!is_readable($templateBasePath)) {
+                       // Is not readable
+                       throw new BasePathReadProtectedException(array($templateInstance, $templateBasePath), self::EXCEPTION_READ_PROTECED_PATH);
+               }
+
+               // Set the base path
+               $templateInstance->setTemplateBasePath($templateBasePath);
+
+               // Set template extensions
+               $templateInstance->setRawTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('raw_template_extension'));
+               $templateInstance->setCodeTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('object_registry_template_extension'));
+
+               // Absolute output path for compiled templates
+               $templateInstance->setCompileOutputPath($templateInstance->getConfigInstance()->getConfigEntry('base_path') . $templateInstance->getConfigInstance()->getConfigEntry('compile_output_path'));
+
+               // Init a variable stacker
+               $stackerInstance = ObjectFactory::createObjectByConfiguredName('object_registry_stacker_class');
+
+               // Set it
+               $templateInstance->setStackerInstance($stackerInstance);
+
+               // Return the prepared instance
+               return $templateInstance;
+       }
+
+       /**
+        * Load a specified object_registry template into the engine
+        *
+        * @param       $template       The object_registry template we shall load which is
+        *                                              located in 'object_registry' by default
+        * @return      void
+        */
+       public function loadObjectRegistryTemplate ($template) {
+               // Set template type
+               $this->setTemplateType($this->getConfigInstance()->getConfigEntry('object_registry_template_type'));
+
+               // Load the special template
+               $this->loadTemplate($template);
+       }
+
+       /**
+        * Getter for current main node
+        *
+        * @return      $currMainNode   Current main node
+        */
+       public final function getCurrMainNode () {
+               return $this->curr['main_node'];
+       }
+
+       /**
+        * Setter for current main node
+        *
+        * @param       $element                Element name to set as current main node
+        * @return      $currMainNode   Current main node
+        */
+       private final function setCurrMainNode ($element) {
+               $this->curr['main_node'] = (string) $element;
+       }
+
+       /**
+        * Getter for main node array
+        *
+        * @return      $mainNodes      Array with valid main node names
+        */
+       public final function getMainNodes () {
+               return $this->mainNodes;
+       }
+
+       /**
+        * Getter for sub node array
+        *
+        * @return      $subNodes       Array with valid sub node names
+        */
+       public final function getSubNodes () {
+               return $this->subNodes;
+       }
+
+       /**
+        * Handles the start element of an XML resource
+        *
+        * @param       $resource               XML parser resource (currently ignored)
+        * @param       $element                The element we shall handle
+        * @param       $attributes             All attributes
+        * @return      void
+        * @throws      InvalidXmlNodeException         If an unknown/invalid XML node name was found
+        */
+       public function startElement ($resource, $element, array $attributes) {
+               // Initial method name which will never be called...
+               $methodName = 'initObjectRegistry';
+
+               // Make the element name lower-case
+               $element = strtolower($element);
+
+               // Is the element a main node?
+               //* DEBUG: */ echo "START: &gt;".$element."&lt;<br />\n";
+               if (in_array($element, $this->getMainNodes())) {
+                       // Okay, main node found!
+                       $methodName = 'start' . $this->convertToClassName($element);
+
+                       // Set it
+                       $this->setCurrMainNode($element);
+               } elseif (in_array($element, $this->getSubNodes())) {
+                       // Sub node found
+                       $methodName = 'start' . $this->convertToClassName($element);
+               } else {
+                       // Invalid node name found
+                       throw new InvalidXmlNodeException(array($this, $element, $attributes), XmlParser::EXCEPTION_XML_NODE_UNKNOWN);
+               }
+
+               // Call method
+               call_user_func_array(array($this, $methodName), $attributes);
+       }
+
+       /**
+        * Ends the main or sub node by sending out the gathered data
+        *
+        * @param       $resource       An XML resource pointer (currently ignored)
+        * @param       $nodeName       Name of the node we want to finish
+        * @return      void
+        * @throws      XmlNodeMismatchException        If current main node mismatches the closing one
+        */
+       public function endElement ($resource, $nodeName) {
+               // Make all lower-case
+               $nodeName = strtolower($nodeName);
+
+               // Does this match with current main node?
+               //* DEBUG: */ echo "END: &gt;".$nodeName."&lt;<br />\n";
+               if (($nodeName != $this->getCurrMainNode()) && (in_array($nodeName, $this->getMainNodes()))) {
+                       // Did not match!
+                       throw new XmlNodeMismatchException (array($this, $nodeName, $this->getCurrMainNode()), XmlParser::EXCEPTION_XML_NODE_MISMATCH);
+               } // END - if
+
+               // Construct method name
+               $methodName = 'finish' . $this->convertToClassName($nodeName);
+
+               // Call the corresponding method
+               //* DEBUG: */ echo "call: ".$methodName."<br />\n";
+               call_user_func_array(array($this, $methodName), array());
+       }
+
+       /**
+        * Currently not used
+        *
+        * @param       $resource               XML parser resource (currently ignored)
+        * @param       $characters             Characters to handle
+        * @return      void
+        * @todo        Find something useful with this!
+        */
+       public function characterHandler ($resource, $characters) {
+               // Trim all spaces away
+               $characters = trim($characters);
+
+               // Is this string empty?
+               if (empty($characters)) {
+                       // Then skip it silently
+                       return false;
+               } // END - if
+
+               // Get current XML node name as an array index
+               $nodeName = $this->getStackerInstance()->getNamed('object_registry');
+
+               // Is the node name 'object-name'?
+               if ($nodeName == 'object-name') {
+                       // Output debug message
+                       $this->debugOutput('TAGS: Adding object type ' . $characters . ' to registry.');
+               } // END - if
+
+               // Add it to the registry
+               $this->objectRegistryInstance->addEntry($nodeName, $characters);
+       }
+
+       /**
+        * Handles the template dependency for given node
+        *
+        * @param       $node                                   The node we should load a dependency template
+        * @param       $templateDependency             A template to load to satisfy dependencies
+        * @return      void
+        */
+       private function handleTemplateDependency ($node, $templateDependency) {
+               // Is the template dependency set?
+               if ((!empty($templateDependency)) && (!isset($this->dependencyContent[$node]))) {
+                       // Get a temporay template instance
+                       $templateInstance = ObjectFactory::createObjectByConfiguredName('object_registry_template_class', array($this->getApplicationInstance()));
+
+                       // Then load it
+                       $templateInstance->loadObjectRegistryTemplate($templateDependency);
+
+                       // Parse the XML content
+                       $templateInstance->renderXmlContent();
+
+                       // Save the parsed raw content in our dependency array
+                       $this->dependencyContent[$node] = $templateInstance->getRawTemplateData();
+               } // END - if
+       }
+
+       /**
+        * Getter for cache file (FQFN)
+        *
+        * @return      $fqfn   Full-qualified file name of the menu cache
+        */
+       public function getObjectRegistryCacheFqfn () {
+               $this->partialStub('Please implement this method.');
+       }
+
+       /**
+        * Starts the object-registry
+        *
+        * @return      void
+        */
+       private function startObjectRegistry () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('object_registry', 'object-registry');
+       }
+
+       /**
+        * Starts the object-list
+        *
+        * @return      void
+        */
+       private function startObjectList () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('object_registry', 'object-list');
+       }
+
+       /**
+        * Starts the object-list-entry
+        *
+        * @return      void
+        */
+       private function startObjectListEntry () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('object_registry', 'object-list');
+       }
+
+       /**
+        * Starts the object-name
+        *
+        * @return      void
+        */
+       private function startObjectName () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('object_registry', 'object-name');
+       }
+
+       /**
+        * Starts the object-recipient-limitation
+        *
+        * @return      void
+        */
+       private function startObjectRecipientLimitation () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('object_registry', 'object-recipient-limitation');
+       }
+
+       /**
+        * Starts the object-max-spread
+        *
+        * @return      void
+        */
+       private function startObjectMaxSpread () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('object_registry', 'object-max-spread');
+       }
+
+       /**
+        * Starts the object-protocol
+        *
+        * @return      void
+        */
+       private function startObjectProtocol () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('object_registry', 'object-protocol');
+       }
+
+       /**
+        * Starts the object-recipient-type
+        *
+        * @return      void
+        */
+       private function startObjectRecipientType () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('object_registry', 'object-recipient-type');
+       }
+
+       /**
+        * Finishes the object-recipient-type
+        *
+        * @return      void
+        */
+       private function finishObjectRecipientType () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('object_registry');
+       }
+
+       /**
+        * Finishes the object-protocol
+        *
+        * @return      void
+        */
+       private function finishObjectProtocol () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('object_registry');
+       }
+
+       /**
+        * Finishes the object-max-spread
+        *
+        * @return      void
+        */
+       private function finishObjectMaxSpread () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('object_registry');
+       }
+
+       /**
+        * Finishes the object-recipient-limitation
+        *
+        * @return      void
+        */
+       private function finishObjectRecipientLimitation () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('object_registry');
+       }
+
+       /**
+        * Finishes the object-name
+        *
+        * @return      void
+        */
+       private function finishObjectName () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('object_registry');
+       }
+
+       /**
+        * Finishes the object-list-entry
+        *
+        * @return      void
+        */
+       private function finishObjectListEntry () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('object_registry');
+       }
+
+       /**
+        * Finishes the object-list
+        *
+        * @return      void
+        */
+       private function finishObjectList () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('object_registry');
+       }
+
+       /**
+        * Finishes the object-registry
+        *
+        * @return      void
+        */
+       private function finishObjectRegistry () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('object_registry');
+       }
+}
+
+// [EOF]
+?>
diff --git a/application/hub/main/template/work_units/.htaccess b/application/hub/main/template/work_units/.htaccess
new file mode 100644 (file)
index 0000000..3a42882
--- /dev/null
@@ -0,0 +1 @@
+Deny from all
index f1ebd40ee2b0d0eb3ec0dfa51d6774f18b400e87..9ae4064b3bae056ee523dbf357484ec8f9a5e06e 100644 (file)
@@ -9,7 +9,7 @@
 ./application/hub/main/connectors/query/local/class_LocalQueryConnector.php:10: * @todo                Find an interface for: handleAllQueries()
 ./application/hub/main/connectors/query/local/class_LocalQueryConnector.php:78:         * @TODO        0% done: Unfinished work here
 ./application/hub/main/connectors/queues/local/class_LocalQueueConnector.php:58:        * @TODO        0% done: Unfinished work here
-./application/hub/main/cruncher/class_BaseHubCruncher.php:154:  * @todo        Try to make this method more generic so we can move it in BaseFrameworkSystem
+./application/hub/main/cruncher/class_BaseHubCruncher.php:175:  * @todo        Try to make this method more generic so we can move it in BaseFrameworkSystem
 ./application/hub/main/cruncher/mcrypt/class_HubMcryptCruncher.php:128:         * @todo        0% done
 ./application/hub/main/cruncher/mcrypt/class_HubMcryptCruncher.php:98:  * @todo        Implement this method
 ./application/hub/main/discovery/socket/class_PackageSocketDiscovery.php:102:                  // @TODO We may need some locking here
@@ -39,7 +39,8 @@
 ./application/hub/main/helper/hub/announcement/class_HubDescriptorHelper.php:10: * @todo               Find an interface for hub helper
 ./application/hub/main/helper/hub/announcement/class_HubDescriptorHelper.php:65:        * @todo        Rewrite the ->renderXmlContent() call to no arguments
 ./application/hub/main/helper/hub/connection/class_HubSelfConnectHelper.php:10: * @todo                Find an interface for hub helper
-./application/hub/main/helper/work_units/cruncher/class_CruncherTestUnitHelper.php:52:  * @todo        0% done
+./application/hub/main/helper/work_units/cruncher/class_CruncherTestUnitHelper.php:53:  * @todo        0% done
+./application/hub/main/helper/work_units/cruncher/class_CruncherTestUnitHelper.php:64:  * @todo        0% done
 ./application/hub/main/iterator/network/class_NetworkListenIterator.php:10: * @todo            This current implementation is not recommended, use a
 ./application/hub/main/iterator/network/class_NetworkListenIterator.php:11: * @todo            latency-based iteration or similar approaches
 ./application/hub/main/iterator/pool/handler/class_HandlerPoolIterator.php:10: * @todo         This current implementation is not recommended, use a
 ./application/hub/main/tasks/hub/class_HubSelfConnectTask.php:53:       * @todo        0%
 ./application/hub/main/tasks/hub/ping/class_HubPingTask.php:63:         * @todo        0%
 ./application/hub/main/tasks/hub/update/class_HubUpdateCheckTask.php:53:        * @todo        0%
-./application/hub/main/template/announcement/class_AnnouncementTemplateEngine.php:10: * @todo          This template engine does not make use of setTemplateType()
-./application/hub/main/template/announcement/class_AnnouncementTemplateEngine.php:245:  * @todo        Find something useful with this!
-./application/hub/main/template/connect/class_SelfConnectTemplateEngine.php:10: * @todo                This template engine does not make use of setTemplateType()
-./application/hub/main/template/connect/class_SelfConnectTemplateEngine.php:238:        * @todo        Find something useful with this!
-./application/hub/main/template/objects/class_ObjectRegistryTemplateEngine.php:10: * @todo             This template engine does not make use of setTemplateType()
-./application/hub/main/template/objects/class_ObjectRegistryTemplateEngine.php:249:     * @todo        Find something useful with this!
+./application/hub/main/template/announcement/class_XmlAnnouncementTemplateEngine.php:10: * @todo               This template engine does not make use of setTemplateType()
+./application/hub/main/template/announcement/class_XmlAnnouncementTemplateEngine.php:245:       * @todo        Find something useful with this!
+./application/hub/main/template/connect/class_XmlSelfConnectTemplateEngine.php:10: * @todo             This template engine does not make use of setTemplateType()
+./application/hub/main/template/connect/class_XmlSelfConnectTemplateEngine.php:238:     * @todo        Find something useful with this!
+./application/hub/main/template/objects/class_XmlObjectRegistryTemplateEngine.php:10: * @todo          This template engine does not make use of setTemplateType()
+./application/hub/main/template/objects/class_XmlObjectRegistryTemplateEngine.php:249:  * @todo        Find something useful with this!
 ./application/hub/main/tools/class_HubTools.php:128:                           // @TODO We may want to encapsulate this PHP call into an own class
 ./application/hub/main/visitor/tasks/class_ActiveTaskVisitor.php:105:   * @todo        Does a query needs to perform some actions as an active task?
 ./application/hub/main/visitor/tasks/class_ActiveTaskVisitor.php:116:   * @todo        Does a queue needs to perform some actions as an active task?
 ./application/hub/main/filter/task/class_HubTaskHandlerInitializerFilter.php:2:// @DEPRECATED
 ./application/hub/main/filter/task/class_TaskHandlerInitializerFilter.php:2:// @DEPRECATED
 ./application/hub/main/nodes/class_BaseHubNode.php:50:  * @deprecated
+./application/hub/main/template/announcement/class_AnnouncementTemplateEngine.php:2:// @DEPRECATED
+./application/hub/main/template/connect/class_SelfConnectTemplateEngine.php:2:// @DEPRECATED
+./application/hub/main/template/objects/class_ObjectRegistryTemplateEngine.php:2:// @DEPRECATED
 ./inc/classes/exceptions/io/class_FileNotFoundException.php:2:// @DEPRECATED
 ./inc/classes/exceptions/io/class_FilePointerNotOpenedException.php:2:// @DEPRECATED
 ./inc/classes/exceptions/io/class_InvalidDirectoryResourceException.php:2:// @DEPRECATED