]> git.mxchange.org Git - core.git/blobdiff - framework/main/classes/template/image/class_ImageTemplateEngine.php
Continued:
[core.git] / framework / main / classes / template / image / class_ImageTemplateEngine.php
index 5aa7e95d51459a461cda922ededa8f62a9687e9b..80a81446f2b2d1d3ce5141f7720c93ef12970fb7 100644 (file)
@@ -3,13 +3,17 @@
 namespace Org\Mxchange\CoreFramework\Template\Engine;
 
 // Import framework stuff
-use Org\Mxchange\CoreFramework\Factory\ObjectFactory;
+use Org\Mxchange\CoreFramework\Bootstrap\FrameworkBootstrap;
+use Org\Mxchange\CoreFramework\Factory\Object\ObjectFactory;
 use Org\Mxchange\CoreFramework\Filesystem\InvalidDirectoryException;
-use Org\Mxchange\CoreFramework\Parser\Xml\XmlParser;
-use Org\Mxchange\CoreFramework\Registry\Registry;
+use Org\Mxchange\CoreFramework\Helper\Application\ApplicationHelper;
+use Org\Mxchange\CoreFramework\Image\BaseImage;
+use Org\Mxchange\CoreFramework\Parser\Parseable;
+use Org\Mxchange\CoreFramework\Registry\GenericRegistry;
 use Org\Mxchange\CoreFramework\Response\Responseable;
 use Org\Mxchange\CoreFramework\Template\CompileableTemplate;
 use Org\Mxchange\CoreFramework\Template\Engine\BaseTemplateEngine;
+use Org\Mxchange\CoreFramework\Utils\Strings\StringUtils;
 
 // Import SPL stuff
 use \SplFileInfo;
@@ -20,11 +24,7 @@ use \UnexpectedValueException;
  *
  * @author             Roland Haeder <webmaster@shipsimu.org>
  * @version            0.0.0
-<<<<<<< HEAD:framework/main/classes/template/image/class_ImageTemplateEngine.php
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2017 Core Developer Team
-=======
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2016 Core Developer Team
->>>>>>> Some updates::inc/main/classes/template/image/class_ImageTemplateEngine.php
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2021 Core Developer Team
  * @license            GNU GPL 3.0 or any newer version
  * @link               http://www.shipsimu.org
  *
@@ -76,12 +76,17 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
         */
        private $currMainNode = '';
 
+       /**
+        * Instance of the image
+        */
+       private $imageInstance = NULL;
+
        /**
         * Protected constructor
         *
         * @return      void
         */
-       protected function __construct () {
+       private function __construct () {
                // Call parent constructor
                parent::__construct(__CLASS__);
        }
@@ -101,18 +106,15 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
                $templateInstance = new ImageTemplateEngine();
 
                // Get the application instance from registry
-               $applicationInstance = Registry::getRegistry()->getInstance('app');
+               $applicationInstance = ApplicationHelper::getSelfInstance();
 
                // Determine base path
-               $templateBasePath = $templateInstance->getConfigInstance()->getConfigEntry('application_base_path') . $applicationInstance->getAppShortName(). '/';
+               $templateBasePath = FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('application_base_path') . $applicationInstance->getAppShortName(). '/';
 
                // Is the base path valid?
                if (empty($templateBasePath)) {
                        // Base path is empty
                        throw new UnexpectedValueException(sprintf('[%s:%d] Variable templateBasePath is empty.', $templateInstance->__toString(), __LINE__), self::EXCEPTION_UNEXPECTED_EMPTY_STRING);
-               } elseif (!is_string($templateBasePath)) {
-                       // Is not a string
-                       throw new UnexpectedValueException(sprintf('[%s:%d] %s is not a string with a base path.', $templateInstance->__toString(), __LINE__, $templateBasePath), self::EXCEPTION_INVALID_STRING);
                } elseif (!is_dir($templateBasePath)) {
                        // Is not a path
                        throw new InvalidDirectoryException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_PATH_NAME);
@@ -125,13 +127,13 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
                $templateInstance->setTemplateBasePath($templateBasePath);
 
                // Set template extensions
-               $templateInstance->setRawTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('raw_template_extension'));
-               $templateInstance->setCodeTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('code_template_extension'));
+               $templateInstance->setRawTemplateExtension(FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('raw_template_extension'));
+               $templateInstance->setCodeTemplateExtension(FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('code_template_extension'));
 
                // Absolute output path for compiled templates
                $templateInstance->setCompileOutputPath(sprintf('%s%s/',
                        $templateBasePath,
-                       $templateInstance->getConfigInstance()->getConfigEntry('compile_output_path')
+                       FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('compile_output_path')
                ));
 
                // Return the prepared instance
@@ -165,6 +167,25 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
                return $this->subNodes;
        }
 
+       /**
+        * Setter for image instance
+        *
+        * @param       $imageInstance  An instance of an image
+        * @return      void
+        */
+       public final function setImageInstance (BaseImage $imageInstance) {
+               $this->imageInstance = $imageInstance;
+       }
+
+       /**
+        * Getter for image instance
+        *
+        * @return      $imageInstance  An instance of an image
+        */
+       public final function getImageInstance () {
+               return $this->imageInstance;
+       }
+
        /**
         * Handles the start element of an XML resource
         *
@@ -174,7 +195,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
         * @return      void
         * @throws      InvalidXmlNodeException         If an unknown/invalid XML node name was found
         */
-       public function startElement ($resource, $element, array $attributes) {
+       public function startElement ($resource, string $element, array $attributes) {
                // Initial method name which will never be called...
                $methodName = 'initImage';
 
@@ -185,13 +206,13 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
                //* DEBUG: */ echo "START: &gt;".$element."&lt;<br />\n";
                if (in_array($element, $this->mainNodes)) {
                        // Okay, main node found!
-                       $methodName = 'setImage' . self::convertToClassName($element);
+                       $methodName = 'setImage' . StringUtils::convertToClassName($element);
                } elseif (in_array($element, $this->subNodes)) {
                        // Sub node found
-                       $methodName = 'setImageProperty' . self::convertToClassName($element);
+                       $methodName = 'setImageProperty' . StringUtils::convertToClassName($element);
                } elseif ($element != 'image') {
                        // Invalid node name found
-                       throw new InvalidXmlNodeException(array($this, $element, $attributes), XmlParser::EXCEPTION_XML_NODE_UNKNOWN);
+                       throw new InvalidXmlNodeException(array($this, $element, $attributes), Parseable::EXCEPTION_XML_NODE_UNKNOWN);
                }
 
                // Call method
@@ -207,25 +228,22 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
         * @return      void
         * @throws      XmlNodeMismatchException        If current main node mismatches the closing one
         */
-       public function finishElement ($resource, $nodeName) {
-               // Make all lower-case
-               $nodeName = strtolower($nodeName);
-
+       public function finishElement ($resource, string $nodeName) {
                // Does this match with current main node?
                //* DEBUG: */ echo "END: &gt;".$nodeName."&lt;<br />\n";
                if (($nodeName != $this->getCurrMainNode()) && (in_array($nodeName, $this->getMainNodes()))) {
                        // Did not match!
-                       throw new XmlNodeMismatchException (array($this, $nodeName, $this->getCurrMainNode()), XmlParser::EXCEPTION_XML_NODE_MISMATCH);
+                       throw new XmlNodeMismatchException (array($this, $nodeName, $this->getCurrMainNode()), Parseable::EXCEPTION_XML_NODE_MISMATCH);
                } elseif (in_array($nodeName, $this->getSubNodes())) {
                        // Silently ignore sub nodes
                        return;
                }
 
                // Construct method name
-               $methodName = 'finish' . self::convertToClassName($nodeName);
+               $methodName = sprintf('finish%s', StringUtils::convertToClassName($nodeName));
 
                // Call the corresponding method
-               call_user_func_array(array($this->getImageInstance(), $methodName), array());
+               call_user_func_array(array($this->getImageInstance(), $methodName), []);
        }
 
        /**
@@ -236,7 +254,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
         * @return      void
         * @todo        Find something usefull with this!
         */
-       public function characterHandler ($resource, $characters) {
+       public function characterHandler ($resource, string $characters) {
                // Trim all spaces away
                $characters = trim($characters);
 
@@ -244,7 +262,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
                if (empty($characters)) {
                        // Then skip it silently
                        return;
-               } // END - if
+               }
 
                // Unfinished work!
                $this->partialStub('Handling extra characters is not yet supported!');
@@ -266,7 +284,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
         * @param       $imageType      Code fragment or direct value holding the image type
         * @return      void
         */
-       private function setImageType ($imageType) {
+       private function setImageType (string $imageType) {
                // Set group to general
                $this->setVariableGroup('general');
 
@@ -274,10 +292,10 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
                $imageType = $this->compileRawCode($imageType);
 
                // Now make a class name of it
-               $className = self::convertToClassName($imageType.'_image');
+               $className = StringUtils::convertToClassName($imageType.'_image');
 
                // And try to initiate it
-               $this->setImageInstance(ObjectFactory::createObjectByName($className, array($this)));
+               $this->setImageInstance(ObjectFactory::createObjectByName($className, [$this]));
 
                // Set current main node to type
                $this->currMainNode = 'type';
@@ -346,7 +364,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
         * @return      void
         * @see         ImageTemplateEngine::setImageResolution
         */
-       private function setImageImageString ($groupable = 'single') {
+       private function setImageImageString (string $groupable = 'single') {
                // Call the image class
                $this->getImageInstance()->initImageString($groupable);
 
@@ -360,7 +378,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
         * @param       $imageName      Name of the image
         * @return      void
         */
-       private function setImagePropertyName ($imageName) {
+       private function setImagePropertyName (string $imageName) {
                // Call the image class
                $this->getImageInstance()->setImageName($imageName);
        }
@@ -371,7 +389,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
         * @param       $width  Width of the image or variable
         * @return      void
         */
-       private function setImagePropertyWidth ($width) {
+       private function setImagePropertyWidth (int $width) {
                // Call the image class
                $this->getImageInstance()->setWidth($width);
        }
@@ -382,7 +400,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
         * @param       $height Height of the image or variable
         * @return      void
         */
-       private function setImagePropertyHeight ($height) {
+       private function setImagePropertyHeight (int $height) {
                // Call the image class
                $this->getImageInstance()->setHeight($height);
        }
@@ -426,7 +444,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
         * @param       $stringName             String name (identifier)
         * @return      void
         */
-       private function setImagePropertyStringName ($stringName) {
+       private function setImagePropertyStringName (string $stringName) {
                // Call the image class
                $this->getImageInstance()->setStringName($stringName);
        }
@@ -437,7 +455,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
         * @param       $fontSize       Size of the font
         * @return      void
         */
-       private function setImagePropertyFontSize ($fontSize) {
+       private function setImagePropertyFontSize (int $fontSize) {
                // Call the image class
                $this->getImageInstance()->setFontSize($fontSize);
        }
@@ -448,7 +466,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
         * @param       $imageString    Image string to set
         * @return      void
         */
-       private function setImagePropertyText ($imageString) {
+       private function setImagePropertyText (string $imageString) {
                // Call the image class
                $this->getImageInstance()->setString($imageString);
        }
@@ -459,7 +477,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
         * @param       $x      X coordinate
         * @return      void
         */
-       private function setImagePropertyX ($x) {
+       private function setImagePropertyX (int $x) {
                // Call the image class
                $this->getImageInstance()->setX($x);
        }
@@ -470,7 +488,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
         * @param       $y      Y coordinate
         * @return      void
         */
-       private function setImagePropertyY ($y) {
+       private function setImagePropertyY (int $y) {
                // Call the image class
                $this->getImageInstance()->setY($y);
        }
@@ -483,7 +501,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
        public function getImageCacheFile () {
                // Get the instance ready
                $fileInstance = new SplFileInfo(sprintf('%s%s%s/%s.%s',
-                       $this->getConfigInstance()->getConfigEntry('root_base_path'),
+                       FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('root_base_path'),
                        $this->getGenericBasePath(),
                        'images/_cache',
                        md5(
@@ -501,6 +519,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
         *
         * @param       $responseInstance       An instance of a Responseable class
         * @return      void
+        * @todo        Nothing to really "transfer" here?
         */
        public function transferToResponse (Responseable $responseInstance) {
                // Set the image instance
@@ -514,9 +533,9 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
         *                                              located in 'image' by default
         * @return      void
         */
-       public function loadImageTemplate ($template) {
+       public function loadImageTemplate (string $template) {
                // Set template type
-               $this->setTemplateType($this->getConfigInstance()->getConfigEntry('image_template_type'));
+               $this->setTemplateType(FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('image_template_type'));
 
                // Load the special template
                $this->loadTemplate($template);