+ /**
+ * register template engine class
+ * if $name is "", is used class static property $class::$name
+ * @param string $class
+ * @param string $name
+ */
+ function register_template_engine($class, $name = '') {
+ if ($name===""){
+ $v = get_class_vars( $class );
+ if(x($v,"name")) $name = $v['name'];
+ }
+ if ($name===""){
+ echo "template engine <tt>$class</tt> cannot be registered without a name.\n";
+ killme();
+ }
+ $this->template_engines[$name] = $class;
+ }
+
+ /**
+ * return template engine instance. If $name is not defined,
+ * return engine defined by theme, or default
+ *
+ * @param strin $name Template engine name
+ * @return object Template Engine instance
+ */
+ function template_engine($name = ''){
+ if ($name!=="") {
+ $template_engine = $name;
+ } else {
+ $template_engine = 'smarty3';
+ if (x($this->theme, 'template_engine')) {
+ $template_engine = $this->theme['template_engine'];
+ }
+ }
+
+ if (isset($this->template_engines[$template_engine])){
+ if(isset($this->template_engine_instance[$template_engine])){
+ return $this->template_engine_instance[$template_engine];
+ } else {
+ $class = $this->template_engines[$template_engine];
+ $obj = new $class;
+ $this->template_engine_instance[$template_engine] = $obj;
+ return $obj;
+ }
+ }
+
+ echo "template engine <tt>$template_engine</tt> is not registered!\n"; killme();
+ }
+
+ function get_template_engine() {
+ return $this->theme['template_engine'];
+ }
+
+ function set_template_engine($engine = 'smarty3') {
+ $this->theme['template_engine'] = $engine;
+ /*
+ $this->theme['template_engine'] = 'smarty3';
+
+ switch($engine) {
+ case 'smarty3':
+ if(is_writable('view/smarty3/'))
+ $this->theme['template_engine'] = 'smarty3';
+ break;
+ default:
+ break;
+ }
+ */
+ }
+
+ function get_template_ldelim($engine = 'smarty3') {
+ return $this->ldelim[$engine];
+ }
+
+ function get_template_rdelim($engine = 'smarty3') {
+ return $this->rdelim[$engine];
+ }
+
+ function save_timestamp($stamp, $value) {
+ $duration = (float)(microtime(true)-$stamp);
+
+ $this->performance[$value] += (float)$duration;
+ $this->performance["marktime"] += (float)$duration;
+ }
+
+ function mark_timestamp($mark) {
+ //$this->performance["markstart"] -= microtime(true) - $this->performance["marktime"];
+ $this->performance["markstart"] = microtime(true) - $this->performance["markstart"] - $this->performance["marktime"];
+ }