]> git.mxchange.org Git - core.git/blobdiff - framework/main/classes/decorator/template/class_XmlRewriterTemplateDecorator.php
Continued with renaming-season:
[core.git] / framework / main / classes / decorator / template / class_XmlRewriterTemplateDecorator.php
diff --git a/framework/main/classes/decorator/template/class_XmlRewriterTemplateDecorator.php b/framework/main/classes/decorator/template/class_XmlRewriterTemplateDecorator.php
new file mode 100644 (file)
index 0000000..8dc142e
--- /dev/null
@@ -0,0 +1,450 @@
+<?php
+// Own namespace
+namespace CoreFramework\Template\Xml;
+
+// Import framework stuff
+use CoreFramework\Manager\ManageableApplication;
+use CoreFramework\Response\Responseable;
+use CoreFramework\Template\CompileableTemplate;
+
+/**
+ * A decorator for XML template engines which rewrites the XML for compacting
+ * it.
+ *
+ * @author             Roland Haeder <webmaster@shipsimu.org>
+ * @version            0.0.0
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2017 Core Developer Team
+ * @license            GNU GPL 3.0 or any newer version
+ * @link               http://www.shipsimu.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+class XmlRewriterTemplateDecorator extends BaseDecorator implements CompileableTemplate {
+       /**
+        * 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       $innerTemplateInstance  A CompileableTemplate instance
+        * @return      $templateInstance       An instance of TemplateEngine
+        */
+       public static final function createXmlRewriterTemplateDecorator (CompileableTemplate $innerTemplateInstance) {
+               // Get a new instance
+               $templateInstance = new XmlRewriterTemplateDecorator();
+
+               // Set the inner template engine
+               $templateInstance->setTemplateInstance($innerTemplateInstance);
+
+               // Return the prepared instance
+               return $templateInstance;
+       }
+
+       /**
+        * Settter for variable group
+        *
+        * @param       $groupName      Name of variable group
+        * @param       $add            Whether add this group
+        * @return      void
+        */
+       public function setVariableGroup ($groupName, $add = TRUE) {
+               // Call the inner class' method
+               $this->getTemplateInstance()->setVariableGroup($groupName, $add);
+       }
+
+       /**
+        * Adds a variable to current group
+        *
+        * @param       $var    Variable to set
+        * @param       $value  Value to store in variable
+        * @return      void
+        */
+       public function addGroupVariable ($var, $value) {
+               // Call the inner class' method
+               $this->getTemplateInstance()->addGroupVariable($var, $value);
+       }
+
+       /**
+        * Getter for base path
+        *
+        * @return      $templateBasePath       The relative base path for all templates
+        */
+       public final function getTemplateBasePath () {
+               // Call the inner class' method
+               return $this->getTemplateInstance()->getTemplateBasePath();
+       }
+
+       /**
+        * Getter for generic base path
+        *
+        * @return      $templateBasePath       The relative base path for all templates
+        */
+       public final function getGenericBasePath () {
+               // Call the inner class' method
+               return $this->getTemplateInstance()->getGenericBasePath();
+       }
+
+       /**
+        * Getter for template extension
+        *
+        * @return      $templateExtension      The file extension for all uncompiled templates
+        */
+       public final function getRawTemplateExtension () {
+               // Call the inner class' method
+               return $this->getTemplateInstance()->getRawTemplateExtension();
+       }
+
+       /**
+        * Getter for given variable group
+        *
+        * @param       $variableGroup  Variable group to check
+        * @return      $varStack               Found variable group
+        */
+       public function getVarStack ($variableGroup) {
+               // Call the inner class' method
+               return $this->getTemplateInstance()->getVarStack($variableGroup);
+       }
+
+       /**
+        * Getter for code-template extension
+        *
+        * @return      $codeExtension  The file extension for all code templates
+        */
+       public final function getCodeTemplateExtension () {
+               // Call the inner class' method
+               return $this->getTemplateInstance()->getCodeTemplateExtension();
+       }
+
+       /**
+        * Getter for template type
+        *
+        * @return      $templateType   The current template's type
+        */
+       public final function getTemplateType () {
+               // Call the inner class' method
+               return $this->getTemplateInstance()->getTemplateType();
+       }
+
+       /**
+        * Assign (add) a given variable with a value
+        *
+        * @param       $var    The variable we are looking for
+        * @param       $value  The value we want to store in the variable
+        * @return      void
+        */
+       public function assignVariable ($var, $value) {
+               // Call the inner class' method
+               $this->getTemplateInstance()->assignVariable($var, $value);
+       }
+
+       /**
+        * Removes a given variable
+        *
+        * @param       $variableName   The variable we are looking for
+        * @param       $variableGroup  Name of variable group (default: 'general')
+        * @return      void
+        */
+       public function removeVariable ($variableName, $variableGroup = 'general') {
+               // Call the inner class' method
+               $this->getTemplateInstance()->removeVariable($variableName, $variableGroup);
+       }
+
+       /**
+        * Load a specified HTML template into the engine
+        *
+        * @param       $template       The web template we shall load which is located in
+        *                                              'html' by default
+        * @return      void
+        */
+       public function loadHtmlTemplate ($template) {
+               // Call the inner class' method
+               $this->getTemplateInstance()->loadHtmlTemplate($template);
+       }
+
+       /**
+        * Assign a given congfiguration variable with a value
+        *
+        * @param       $variableName   The configuration variable we want to assign
+        * @return      void
+        */
+       public function assignConfigVariable ($variableName) {
+               // Call the inner class' method
+               $this->getTemplateInstance()->assignConfigVariable($variableName);
+       }
+
+       /**
+        * Load a specified code template into the engine
+        *
+        * @param       $template       The code template we shall load which is
+        *                                              located in 'code' by default
+        * @return      void
+        */
+       public function loadCodeTemplate ($template) {
+               // Call the inner class' method
+               $this->getTemplateInstance()->loadCodeTemplate($template);
+       }
+
+       /**
+        * Load a specified email template into the engine for later compilation
+        * with other code/web/email templates.
+        *
+        * @param       $template       The email template we shall load which is
+        *                                              located in "html" by default
+        * @return      void
+        */
+       public function loadEmailTemplate ($template) {
+               // Call the inner class' method
+               $this->getTemplateInstance()->loadEmailTemplate($template);
+       }
+
+       /**
+        * Compiles configuration place-holders in all variables. This 'walks'
+        * through the variable stack 'general'. It interprets all values from that
+        * variables as configuration entries after compiling them.
+        *
+        * @return      void
+        */
+       public function compileConfigInVariables () {
+               // Call the inner class' method
+               $this->getTemplateInstance()->compileConfigInVariables();
+       }
+
+       /**
+        * Compile all variables by inserting their respective values
+        *
+        * @return      void
+        */
+       public function compileVariables () {
+               // Call the inner class' method
+               $this->getTemplateInstance()->compileVariables();
+       }
+
+       /**
+        * Compile all required templates into the current loaded one
+        *
+        * @return      void
+        */
+       public function compileTemplate () {
+               // Call the inner class' method
+               $this->getTemplateInstance()->compileTemplate();
+       }
+
+       /**
+        * Assigns the last loaded raw template content with a given variable
+        *
+        * @param       $templateName   Name of the template we want to assign
+        * @param       $variableName   Name of the variable we want to assign
+        * @return      void
+        */
+       public function assignTemplateWithVariable ($templateName, $variableName) {
+               // Call the inner class' method
+               $this->getTemplateInstance()->assignTemplateWithVariable($templateName, $variableName);
+       }
+
+       /**
+        * Transfers the content of this template engine to a given response instance
+        *
+        * @param       $responseInstance       An instance of a Responseable class
+        * @return      void
+        */
+       public function transferToResponse (Responseable $responseInstance) {
+               // Call the inner class' method
+               $this->getTemplateInstance()->transportToResponse($responseInstance);
+       }
+
+       /**
+        * Assigns all the application data with template variables
+        *
+        * @param       $applicationInstance    A manageable application instance
+        * @return      void
+        */
+       public function assignApplicationData (ManageableApplication $applicationInstance) {
+               // Call the inner class' method
+               $this->getTemplateInstance()->assignApplicationData($applicationInstance);
+       }
+
+       /**
+        * "Compiles" a variable by replacing {?var?} with it's content
+        *
+        * @param       $rawCode                        Raw code to compile
+        * @param       $setMatchAsCode         Sets $match if readVariable() returns empty result
+        * @return      $rawCode                        Compile code with inserted variable value
+        */
+       public function compileRawCode ($rawCode, $setMatchAsCode = FALSE) {
+               return $this->getTemplateInstance()->compileRawCode($rawCode, $setMatchAsCode);
+       }
+
+       /**
+        * Getter for variable group array
+        *
+        * @return      $variableGroups         All variable groups
+        */
+       public final function getVariableGroups () {
+               // Call the inner class' method
+               return $this->getTemplateInstance()->getVariableGroups();
+       }
+
+       /**
+        * Getter for raw template data
+        *
+        * @return      $rawTemplateData        The raw data from the template
+        */
+       public function getRawTemplateData () {
+               // Call the inner class' method
+               return $this->getTemplateInstance()->getRawTemplateData();
+       }
+
+       /**
+        * Renames a variable in code and in stack
+        *
+        * @param       $oldName        Old name of variable
+        * @param       $newName        New name of variable
+        * @return      void
+        */
+       public function renameVariable ($oldName, $newName) {
+               // Call the inner class' method
+               $this->getTemplateInstance()->renameVariable($oldName, $newName);
+       }
+
+       /**
+        * Renders the given XML content
+        *
+        * @param       $content        Valid XML content or if not set the current loaded raw content
+        * @return      void
+        * @throws      XmlParserException      If an XML error was found
+        */
+       public function renderXmlContent ($content = NULL) {
+               // Call the inner class' method
+               $this->getTemplateInstance()->renderXmlContent($content);
+       }
+
+       /**
+        * Enables or disables language support
+        *
+        * @param       $languageSupport        New language support setting
+        * @return      void
+        */
+       public function enableLanguageSupport ($languageSupport = TRUE) {
+               // Call the inner class' method
+               $this->getTemplateInstance()->enableLanguageSupport($languageSupport);
+       }
+
+       /**
+        * Checks whether language support is enabled
+        *
+        * @return      $languageSupport        Whether language support is enabled or disabled
+        */
+       public function isLanguageSupportEnabled () {
+               // Call the inner class' method
+               return $this->getTemplateInstance()->isLanguageSupportEnabled();
+       }
+
+       /**
+        * Enables or disables XML compacting
+        *
+        * @param       $xmlCompacting  New XML compacting setting
+        * @return      void
+        */
+       public function enableXmlCompacting ($xmlCompacting = TRUE) {
+               // Call the inner class' method
+               $this->getTemplateInstance()->enableXmlCompacting($xmlCompacting);
+       }
+
+       /**
+        * Checks whether XML compacting is enabled
+        *
+        * @return      $xmlCompacting  Whether XML compacting is enabled or disabled
+        */
+       public function isXmlCompactingEnabled () {
+               // Call the inner class' method
+               return $this->getTemplateInstance()->isXmlCompactingEnabled();
+       }
+
+       /**
+        * 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) {
+               // Call the inner class' method
+               $this->getTemplateInstance()->startElement($resource, $element, $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 finishElement ($resource, $nodeName) {
+               // Call the inner class' method
+               $this->getTemplateInstance()->finishElement($resource, $nodeName);
+       }
+
+       /**
+        * 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) {
+               // Call the inner class' method but trim the characters before
+               $this->getTemplateInstance()->characterHandler($resource, trim($characters));
+       }
+
+       /**
+        * Removes all comments, tabs and new-line charcters to compact the content
+        *
+        * @param       $uncompactedContent             The uncompacted content
+        * @return      $compactedContent               The compacted content
+        */
+       public function compactContent ($uncompactedContent) {
+               // Compact it ...
+               $compactedContent = $this->getTemplateInstance()->compactContent($uncompactedContent);
+
+               // ... and return it
+               return $compactedContent;
+       }
+
+       /**
+        * Assigns a lot variables into the stack of currently loaded template.
+        * This method should only be used in very rare circumstances, e.g. when
+        * you have to copy a whole set of variables into the template engine.
+        * Before you use this method, please make sure you have considered all
+        * other possiblities.
+        *
+        * @param       $variables      An array with variables to be assigned
+        * @return      void
+        */
+       public function assignMultipleVariables (array $variables) {
+               // Call the inner class' method but trim the characters before
+               $this->getTemplateInstance()->assignMultipleVariables($variables);
+       }
+
+}