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
$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');
$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');
$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');
<?php
/**
- * A ??? work unit helper
+ * A test unit helper for cruncher
*
* @author Roland Haeder <webmaster@ship-simu.org>
* @version 0.0.0
}
/**
- * Initializes this WU helper
+ * Initializes this WU helper. This method satisfies the abstract
+ * BaseWorkUnitHelper class.
*
* @return void
* @todo 0% done
}
/**
- * 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
<?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: >".$element."<<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: >".$nodeName."<<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
?>
--- /dev/null
+<?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: >".$element."<<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: >".$nodeName."<<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]
+?>
--- /dev/null
+<?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: >".$element."<<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: >".$nodeName."<<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]
+?>
<?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: >".$element."<<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: >".$nodeName."<<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
?>
--- /dev/null
+<?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: >".$element."<<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: >".$nodeName."<<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]
+?>
<?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: >".$element."<<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: >".$nodeName."<<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
?>
--- /dev/null
+<?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: >".$element."<<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: >".$nodeName."<<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]
+?>
--- /dev/null
+Deny from all
./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
./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