]> git.mxchange.org Git - core.git/blobdiff - inc/classes/main/template/class_BaseTemplateEngine.php
Refactured code for deprecated includes file_io and language:
[core.git] / inc / classes / main / template / class_BaseTemplateEngine.php
index ecc71c22a7de080950dc59ca6e3fd2527d37c3ee..2b9406b0f055efe0948579aae92ef378b696d306 100644 (file)
@@ -4,7 +4,7 @@
  *
  * @author             Roland Haeder <webmaster@ship-simu.org>
  * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009, 2010 Core Developer Team
+ * @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
  *
@@ -156,6 +156,12 @@ class BaseTemplateEngine extends BaseFrameworkSystem {
        protected function __construct ($className) {
                // Call parent constructor
                parent::__construct($className);
+
+               // Init file I/O instance
+               $ioInstance = ObjectFactory::createObjectByConfiguredName('file_io_class');
+
+               // Set it
+               $this->setFileIoInstance($ioInstance);
        }
 
        /**
@@ -590,10 +596,27 @@ class BaseTemplateEngine extends BaseFrameworkSystem {
                // Was it found?
                if ($index !== false) {
                        // Remove this variable
-                       $this->varStack->offsetUnset($index);
+                       $this->unsetVariableStackOffset($index);
                } // END - if
        }
 
+       /**
+        * Unsets the given offset in the variable stack
+        *
+        * @param       $index  Index to unset
+        * @return      void
+        */
+       protected final function unsetVariableStackOffset ($index) {
+               // Is the entry there?
+               if (!isset($this->varStack[$this->currGroup][$index])) {
+                       // Abort here, we need fixing!
+                       $this->debugInstance();
+               } // END - if
+
+               // Remove it
+               unset($this->varStack[$this->currGroup][$index]);
+       }
+
        /**
         * Private setter for raw template data
         *
@@ -958,6 +981,7 @@ class BaseTemplateEngine extends BaseFrameworkSystem {
 
                } // for ($varMatches ...
        }
+
        /**
         * Compiles all loaded raw templates
         *
@@ -1227,8 +1251,11 @@ class BaseTemplateEngine extends BaseFrameworkSystem {
         *                                                                                      count has been found
         */
        public function compileTemplate () {
+               // Get code type to make things shorter
+               $codeType = $this->getConfigInstance()->getConfigEntry('code_template_type');
+
                // We will only work with template type "code" from configuration
-               if ($this->getTemplateType() != $this->getConfigInstance()->getConfigEntry('code_template_type')) {
+               if (substr($this->getTemplateType(), 0, strlen($codeType)) != $codeType) {
                        // Abort here
                        throw new UnexpectedTemplateTypeException(array($this, $this->getTemplateType(), $this->getConfigInstance()->getConfigEntry('code_template_type')), self::EXCEPTION_TEMPLATE_TYPE_IS_UNEXPECTED);
                } // END - if
@@ -1474,6 +1501,32 @@ class BaseTemplateEngine extends BaseFrameworkSystem {
        public final function isXmlCompactingEnabled () {
                return $this->xmlCompacting;
        }
+
+       /**
+        * Removes all commentd, tabs and new-line characters to compact the content
+        *
+        * @param       $uncompactedContent             The uncompacted content
+        * @return      $compactedContent               The compacted content
+        */
+       public function compactContent ($uncompactedContent) {
+               // First, remove all tab/new-line/revert characters
+               $compactedContent = str_replace("\t", '', str_replace("\n", '', str_replace("\r", '', $uncompactedContent)));
+
+               // Then regex all comments like <!-- //--> away
+               preg_match_all('/<!--[\w\W]*?(\/\/){0,1}-->/', $compactedContent, $matches);
+
+               // Do we have entries?
+               if (isset($matches[0][0])) {
+                       // Remove all
+                       foreach ($matches[0] as $match) {
+                               // Remove the match
+                               $compactedContent = str_replace($match, '', $compactedContent);
+                       } // END - foreach
+               } // END - if
+
+               // Return compacted content
+               return $compactedContent;
+       }
 }
 
 // [EOF]