+ /**
+ * @brief Register template engine class
+ *
+ * @param string $class
+ */
+ public static function registerTemplateEngine($class)
+ {
+ $v = get_class_vars($class);
+
+ if (!empty($v['name']))
+ {
+ $name = $v['name'];
+ self::$template_engines[$name] = $class;
+ } else {
+ echo "template engine <tt>$class</tt> cannot be registered without a name.\n";
+ die();
+ }
+ }
+
+ /**
+ * @brief Return template engine instance.
+ *
+ * If $name is not defined, return engine defined by theme,
+ * or default
+ *
+ * @return object Template Engine instance
+ */
+ public static function getTemplateEngine()
+ {
+ $template_engine = defaults(self::$theme, 'template_engine', 'smarty3');
+
+ if (isset(self::$template_engines[$template_engine])) {
+ if (isset(self::$template_engine_instance[$template_engine])) {
+ return self::$template_engine_instance[$template_engine];
+ } else {
+ $class = self::$template_engines[$template_engine];
+ $obj = new $class;
+ self::$template_engine_instance[$template_engine] = $obj;
+ return $obj;
+ }
+ }
+
+ echo "template engine <tt>$template_engine</tt> is not registered!\n";
+ exit();
+ }
+
+ /**
+ * @brief Returns the active template engine.
+ *
+ * @return string the active template engine
+ */
+ public static function getActiveTemplateEngine()
+ {
+ return self::$theme['template_engine'];
+ }
+
+ /**
+ * sets the active template engine
+ *
+ * @param string $engine the template engine (default is Smarty3)
+ */
+ public static function setActiveTemplateEngine($engine = 'smarty3')
+ {
+ self::$theme['template_engine'] = $engine;
+ }
+