/**
  * get hiweb_tpl property in template context
  *
  * @param string $property_name property name
  *
  * @throws SmurtyException
  */
 public function __get($property_name)
 {
     switch ($property_name) {
         case 'source':
             if (strlen($this->template_resource) == 0) {
                 throw new SmurtyException('Missing template name');
             }
             $this->source = Smurty_Resource::source($this);
             // cache template object under a unique ID
             // do not cache eval resources
             if ($this->source->type != 'eval') {
                 if ($this->smurty->allow_ambiguous_resources) {
                     $_templateId = $this->source->unique_resource . $this->cache_id . $this->compile_id;
                 } else {
                     $_templateId = $this->smurty->joined_template_dir . '#' . $this->template_resource . $this->cache_id . $this->compile_id;
                 }
                 if (isset($_templateId[150])) {
                     $_templateId = sha1($_templateId);
                 }
                 $this->smurty->template_objects[$_templateId] = $this;
             }
             return $this->source;
         case 'compiled':
             $this->compiled = $this->source->getCompiled($this);
             return $this->compiled;
         case 'cached':
             if (!class_exists('Smurty_Template_Cached')) {
                 include HIWEB_CORE_HTML_ASSETS . 'smurty_cacheresource.php';
             }
             $this->cached = new Smurty_Template_Cached($this);
             return $this->cached;
         case 'compiler':
             $this->smurty->loadPlugin($this->source->compiler_class);
             $this->compiler = new $this->source->compiler_class($this->source->template_lexer_class, $this->source->template_parser_class, $this->smurty);
             return $this->compiler;
             // FIXME: routing of template -> smurty attributes
         // FIXME: routing of template -> smurty attributes
         default:
             if (property_exists($this->smurty, $property_name)) {
                 return $this->smurty->{$property_name};
             }
     }
     throw new SmurtyException("template property '{$property_name}' does not exist.");
 }
Ejemplo n.º 2
0
 /**
  * Load Cache Resource Handler
  *
  * @param hiweb_tpl $smurty hiweb_tpl object
  * @param string $type   name of the cache resource
  *
  * @throws SmurtyException
  * @return Smurty_CacheResource Cache Resource Handler
  */
 public static function load(hiweb_tpl $smurty, $type = null)
 {
     if (!isset($type)) {
         $type = $smurty->caching_type;
     }
     // try smurty's cache
     if (isset($smurty->_cacheresource_handlers[$type])) {
         return $smurty->_cacheresource_handlers[$type];
     }
     // try registered resource
     if (isset($smurty->registered_cache_resources[$type])) {
         // do not cache these instances as they may vary from instance to instance
         return $smurty->_cacheresource_handlers[$type] = $smurty->registered_cache_resources[$type];
     }
     // try hiweb-core-tpl dir
     if (isset(self::$sysplugins[$type])) {
         if (!isset(self::$resources[$type])) {
             $cache_resource_class = 'Smurty_Internal_CacheResource_' . ucfirst($type);
             self::$resources[$type] = new $cache_resource_class();
         }
         return $smurty->_cacheresource_handlers[$type] = self::$resources[$type];
     }
     // try plugins dir
     $cache_resource_class = 'Smurty_CacheResource_' . ucfirst($type);
     if ($smurty->loadPlugin($cache_resource_class)) {
         if (!isset(self::$resources[$type])) {
             self::$resources[$type] = new $cache_resource_class();
         }
         return $smurty->_cacheresource_handlers[$type] = self::$resources[$type];
     }
     // give up
     throw new SmurtyException("Unable to load cache resource '{$type}'");
 }
Ejemplo n.º 3
0
 /**
  * Load Resource Handler
  *
  * @param  hiweb_tpl $smurty smurty object
  * @param  string $type   name of the resource
  *
  * @throws SmurtyException
  * @return Smurty_Resource Resource Handler
  */
 public static function load(hiweb_tpl $smurty, $type)
 {
     // try smurty's cache
     if (isset($smurty->_resource_handlers[$type])) {
         return $smurty->_resource_handlers[$type];
     }
     // try registered resource
     if (isset($smurty->registered_resources[$type])) {
         if ($smurty->registered_resources[$type] instanceof Smurty_Resource) {
             $smurty->_resource_handlers[$type] = $smurty->registered_resources[$type];
             // note registered to smurty is not kept unique!
             return $smurty->_resource_handlers[$type];
         }
         if (!isset(self::$resources['registered'])) {
             self::$resources['registered'] = new Smurty_Internal_Resource_Registered();
         }
         if (!isset($smurty->_resource_handlers[$type])) {
             $smurty->_resource_handlers[$type] = self::$resources['registered'];
         }
         return $smurty->_resource_handlers[$type];
     }
     // try hiweb-core-tpl dir
     if (isset(self::$sysplugins[$type])) {
         if (!isset(self::$resources[$type])) {
             $_resource_class = 'Smurty_Internal_Resource_' . ucfirst($type);
             self::$resources[$type] = new $_resource_class();
         }
         return $smurty->_resource_handlers[$type] = self::$resources[$type];
     }
     // try plugins dir
     $_resource_class = 'Smurty_Resource_' . ucfirst($type);
     if ($smurty->loadPlugin($_resource_class)) {
         if (isset(self::$resources[$type])) {
             return $smurty->_resource_handlers[$type] = self::$resources[$type];
         }
         if (class_exists($_resource_class, false)) {
             self::$resources[$type] = new $_resource_class();
             return $smurty->_resource_handlers[$type] = self::$resources[$type];
         } else {
             $smurty->registerResource($type, array("smurty_resource_{$type}_source", "smurty_resource_{$type}_timestamp", "smurty_resource_{$type}_secure", "smurty_resource_{$type}_trusted"));
             // give it another try, now that the resource is registered properly
             return self::load($smurty, $type);
         }
     }
     // try streams
     $_known_stream = stream_get_wrappers();
     if (in_array($type, $_known_stream)) {
         // is known stream
         if (is_object($smurty->security_policy)) {
             $smurty->security_policy->isTrustedStream($type);
         }
         if (!isset(self::$resources['stream'])) {
             self::$resources['stream'] = new Smurty_Internal_Resource_Stream();
         }
         return $smurty->_resource_handlers[$type] = self::$resources['stream'];
     }
     // TODO: try default_(template|config)_handler
     // give up
     throw new SmurtyException("Unknown resource type '{$type}'");
 }