X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Ftemplate%2Fimage%2Fclass_ImageTemplateEngine.php;h=d3e26e4779b1cd5d300beb6e7036d8a0105bbd84;hp=e5da6137cd2441556dd125bd9ccf9a9754ffff5d;hb=607a11e2c22949ea0647568c17d62a605595e83b;hpb=361e6320e50a8bb1a3ccb675388b8042361669ae diff --git a/inc/classes/main/template/image/class_ImageTemplateEngine.php b/inc/classes/main/template/image/class_ImageTemplateEngine.php index e5da6137..d3e26e47 100644 --- a/inc/classes/main/template/image/class_ImageTemplateEngine.php +++ b/inc/classes/main/template/image/class_ImageTemplateEngine.php @@ -4,7 +4,7 @@ * * @author Roland Haeder * @version 0.0.0 - * @copyright Copyright (c) 2007 - 2009 Roland Haeder, this is free software + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Core Developer Team * @license GNU GPL 3.0 or any newer version * @link http://www.ship-simu.org * @@ -25,22 +25,36 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl /** * Main nodes in the XML tree ('image' is ignored) */ - private $mainNodes = array("base", "type", "resolution", "background-color", "foreground-color", "image-string"); + private $mainNodes = array( + 'base', + 'type', + 'resolution', + 'background-color', + 'foreground-color', + 'image-string' + ); /** * Sub nodes in the XML tree */ - private $subNodes = array("name", "string-name", "x", "y", "font-size", "width", "height", "red", "green", "blue", "text"); - - /** - * Image instance - */ - private $imageInstance = null; + private $subNodes = array( + 'name', + 'string-name', + 'x', + 'y', + 'font-size', + 'width', + 'height', + 'red', + 'green', + 'blue', + 'text' + ); /** * Current main node */ - private $currMainNode = ""; + private $currMainNode = ''; /** * Protected constructor @@ -55,55 +69,51 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl /** * Creates an instance of the class TemplateEngine and prepares it for usage * - * @param $basePath The local base path for all templates - * @param $langInstance An instance of LanguageSystem (default) - * @param $ioInstance An instance of FileIoHandler (default, middleware!) - * @return $tplInstance An instance of TemplateEngine - * @throws BasePathIsEmptyException If the provided $basePath is empty - * @throws InvalidBasePathStringException If $basePath is no string - * @throws BasePathIsNoDirectoryException If $basePath is no + * @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 $basePath is + * @throws BasePathReadProtectedException If $templateBasePath is * read-protected */ - public final static function createImageTemplateEngine ($basePath, ManageableLanguage $langInstance, FileIoHandler $ioInstance) { + public static final function createImageTemplateEngine () { // Get a new instance - $tplInstance = new ImageTemplateEngine(); + $templateInstance = new ImageTemplateEngine(); + + // Get the application instance from registry + $applicationInstance = Registry::getRegistry()->getInstance('app'); + + // Determine base path + $templateBasePath = $templateInstance->getConfigInstance()->getConfigEntry('application_base_path') . $applicationInstance->getRequestInstance()->getRequestElement('app') . '/'; // Is the base path valid? - if (empty($basePath)) { + if (empty($templateBasePath)) { // Base path is empty - throw new BasePathIsEmptyException($tplInstance, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); - } elseif (!is_string($basePath)) { + throw new BasePathIsEmptyException($templateInstance, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); + } elseif (!is_string($templateBasePath)) { // Is not a string - throw new InvalidBasePathStringException(array($tplInstance, $basePath), self::EXCEPTION_INVALID_STRING); - } elseif (!is_dir($basePath)) { + throw new InvalidBasePathStringException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_STRING); + } elseif (!is_dir($templateBasePath)) { // Is not a path - throw new BasePathIsNoDirectoryException(array($tplInstance, $basePath), self::EXCEPTION_INVALID_PATH_NAME); - } elseif (!is_readable($basePath)) { + throw new BasePathIsNoDirectoryException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_PATH_NAME); + } elseif (!is_readable($templateBasePath)) { // Is not readable - throw new BasePathReadProtectedException(array($tplInstance, $basePath), self::EXCEPTION_READ_PROTECED_PATH); + throw new BasePathReadProtectedException(array($templateInstance, $templateBasePath), self::EXCEPTION_READ_PROTECED_PATH); } - // Get configuration instance - $cfgInstance = FrameworkConfiguration::getInstance(); - // Set the base path - $tplInstance->setBasePath($basePath); - - // Set the language and IO instances - $tplInstance->setLanguageInstance($langInstance); - $tplInstance->setFileIoInstance($ioInstance); + $templateInstance->setTemplateBasePath($templateBasePath); // Set template extensions - $tplInstance->setRawTemplateExtension($cfgInstance->readConfig('raw_template_extension')); - $tplInstance->setCodeTemplateExtension($cfgInstance->readConfig('code_template_extension')); + $templateInstance->setRawTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('raw_template_extension')); + $templateInstance->setCodeTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('code_template_extension')); // Absolute output path for compiled templates - $tplInstance->setCompileOutputPath($cfgInstance->readConfig('base_path') . $cfgInstance->readConfig('compile_output_path')); + $templateInstance->setCompileOutputPath($templateInstance->getConfigInstance()->getConfigEntry('base_path') . $templateInstance->getConfigInstance()->getConfigEntry('compile_output_path')); // Return the prepared instance - return $tplInstance; + return $templateInstance; } /** @@ -159,7 +169,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl $methodName = 'setImageProperty' . $this->convertToClassName($element); } elseif ($element != 'image') { // Invalid node name found - throw new InvalidXmlNodeException(array($this, $element, $attributes), BaseHelper::EXCEPTION_XML_NODE_UNKNOWN); + throw new InvalidXmlNodeException(array($this, $element, $attributes), XmlParser::EXCEPTION_XML_NODE_UNKNOWN); } // Call method @@ -175,7 +185,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl * @return void * @throws XmlNodeMismatchException If current main node mismatches the closing one */ - protected function endElement ($resource, $nodeName) { + public function endElement ($resource, $nodeName) { // Make all lower-case $nodeName = strtolower($nodeName); @@ -183,7 +193,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl //* DEBUG: */ echo "END: >".$nodeName."<
\n"; if (($nodeName != $this->getCurrMainNode()) && (in_array($nodeName, $this->getMainNodes()))) { // Did not match! - throw new XmlNodeMismatchException (array($this, $nodeName, $this->getCurrMainNode()), BaseHelper::EXCEPTION_XML_NODE_MISMATCH); + throw new XmlNodeMismatchException (array($this, $nodeName, $this->getCurrMainNode()), XmlParser::EXCEPTION_XML_NODE_MISMATCH); } elseif (in_array($nodeName, $this->getSubNodes())) { // Silently ignore sub nodes return; @@ -193,7 +203,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl $methodName = 'finish' . $this->convertToClassName($nodeName); // Call the corresponding method - call_user_func_array(array($this->imageInstance, $methodName), array()); + call_user_func_array(array($this->getImageInstance(), $methodName), array()); } /** @@ -204,7 +214,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl * @return void * @todo Find something usefull with this! */ - protected function characterHandler ($resource, $characters) { + public function characterHandler ($resource, $characters) { // Trim all spaces away $characters = trim($characters); @@ -245,7 +255,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl $className = $this->convertToClassName($imageType.'_image'); // And try to initiate it - $this->imageInstance = ObjectFactory::createObjectByName($className, array($this)); + $this->setImageInstance(ObjectFactory::createObjectByName($className, array($this))); // Set current main node to type $this->currMainNode = 'type'; @@ -259,7 +269,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl */ private function setImageResolution () { // Call the image class - $this->imageInstance->initResolution(); + $this->getImageInstance()->initResolution(); // Current main node is resolution $this->currMainNode = 'resolution'; @@ -273,7 +283,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl */ private function setImageBase () { // Call the image class - $this->imageInstance->initBase(); + $this->getImageInstance()->initBase(); // Current main node is resolution $this->currMainNode = 'base'; @@ -287,7 +297,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl */ private function setImageBackgroundColor () { // Call the image class - $this->imageInstance->initBackgroundColor(); + $this->getImageInstance()->initBackgroundColor(); // Current main node is background-color $this->currMainNode = 'background-color'; @@ -301,7 +311,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl */ private function setImageForegroundColor () { // Call the image class - $this->imageInstance->initForegroundColor(); + $this->getImageInstance()->initForegroundColor(); // Current main node is foreground-color $this->currMainNode = 'foreground-color'; @@ -310,13 +320,13 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl /** * "Setter" for image-string. For more details see above method! * - * @param $groupable Wether this image string is groupable + * @param $groupable Whether this image string is groupable * @return void * @see ImageTemplateEngine::setImageResolution */ private function setImageImageString ($groupable = 'single') { // Call the image class - $this->imageInstance->initImageString($groupable); + $this->getImageInstance()->initImageString($groupable); // Current main node is foreground-color $this->currMainNode = 'image-string'; @@ -330,7 +340,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl */ private function setImagePropertyName ($imageName) { // Call the image class - $this->imageInstance->setImageName($imageName); + $this->getImageInstance()->setImageName($imageName); } /** @@ -341,7 +351,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl */ private function setImagePropertyWidth ($width) { // Call the image class - $this->imageInstance->setWidth($width); + $this->getImageInstance()->setWidth($width); } /** @@ -352,7 +362,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl */ private function setImagePropertyHeight ($height) { // Call the image class - $this->imageInstance->setHeight($height); + $this->getImageInstance()->setHeight($height); } /** @@ -363,7 +373,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl */ private function setImagePropertyRed ($red) { // Call the image class - $this->imageInstance->setRed($red); + $this->getImageInstance()->setRed($red); } /** @@ -374,7 +384,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl */ private function setImagePropertyGreen ($green) { // Call the image class - $this->imageInstance->setGreen($green); + $this->getImageInstance()->setGreen($green); } /** @@ -385,7 +395,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl */ private function setImagePropertyBlue ($blue) { // Call the image class - $this->imageInstance->setBlue($blue); + $this->getImageInstance()->setBlue($blue); } /** @@ -396,7 +406,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl */ private function setImagePropertyStringName ($stringName) { // Call the image class - $this->imageInstance->setStringName($stringName); + $this->getImageInstance()->setStringName($stringName); } /** @@ -407,7 +417,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl */ private function setImagePropertyFontSize ($fontSize) { // Call the image class - $this->imageInstance->setFontSize($fontSize); + $this->getImageInstance()->setFontSize($fontSize); } /** @@ -418,7 +428,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl */ private function setImagePropertyText ($imageString) { // Call the image class - $this->imageInstance->setString($imageString); + $this->getImageInstance()->setString($imageString); } /** @@ -429,7 +439,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl */ private function setImagePropertyX ($x) { // Call the image class - $this->imageInstance->setX($x); + $this->getImageInstance()->setX($x); } /** @@ -440,7 +450,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl */ private function setImagePropertyY ($y) { // Call the image class - $this->imageInstance->setY($y); + $this->getImageInstance()->setY($y); } /** @@ -450,7 +460,15 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl */ public function getImageCacheFqfn () { // Get the FQFN ready - $fqfn = $this->getBasePath().'_cache/' . md5($this->imageInstance->getImageName().":".$this->__toString().":".$this->imageInstance->__toString()) . "." . $this->imageInstance->getImageType(); + $fqfn = sprintf("%s%s%s/%s.%s", + $this->getConfigInstance()->getConfigEntry('base_path'), + $this->getGenericBasePath(), + 'images/_cache', + md5( + $this->getImageInstance()->getImageName() . ':' . $this->__toString() . ':' . $this->getImageInstance()->__toString() + ), + $this->getImageInstance()->getImageType() + ); // Return it return $fqfn; @@ -464,7 +482,22 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl */ public function transferToResponse (Responseable $responseInstance) { // Set the image instance - $responseInstance->setImageInstance($this->imageInstance); + $responseInstance->setImageInstance($this->getImageInstance()); + } + + /** + * Load a specified image template into the engine + * + * @param $template The image template we shall load which is + * located in 'image' by default + * @return void + */ + public function loadImageTemplate ($template) { + // Set template type + $this->setTemplateType($this->getConfigInstance()->getConfigEntry('image_template_type')); + + // Load the special template + $this->loadTemplate($template); } }