X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=framework%2Fmain%2Fclasses%2Fdecorator%2Ftemplate%2Fclass_XmlRewriterTemplateDecorator.php;fp=framework%2Fmain%2Fclasses%2Fdecorator%2Ftemplate%2Fclass_XmlRewriterTemplateDecorator.php;h=8dc142eacb2e9ba6ac6a216b91b81db281727df6;hp=0000000000000000000000000000000000000000;hb=78a010fef84895720e796842208f01dfb619c332;hpb=7629f2314d517561d4301ddfb068a797b6ed8700 diff --git a/framework/main/classes/decorator/template/class_XmlRewriterTemplateDecorator.php b/framework/main/classes/decorator/template/class_XmlRewriterTemplateDecorator.php new file mode 100644 index 00000000..8dc142ea --- /dev/null +++ b/framework/main/classes/decorator/template/class_XmlRewriterTemplateDecorator.php @@ -0,0 +1,450 @@ + + * @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 . + */ +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); + } + +}