X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FRenderer.php;h=67bc5e3babc515a6377d9b013a6e20d018d349b5;hb=061d959e7f1387432c38d580429ed9e612954ed6;hp=378652fe26b65942ee4c47ee413cfabd3d41245b;hpb=3f74ba88c2b44189e6df07fee2f1e8014a9bb7f5;p=friendica.git diff --git a/src/Core/Renderer.php b/src/Core/Renderer.php index 378652fe26..67bc5e3bab 100644 --- a/src/Core/Renderer.php +++ b/src/Core/Renderer.php @@ -7,14 +7,39 @@ namespace Friendica\Core; use Exception; use Friendica\BaseObject; -use Friendica\Core\System; use Friendica\Render\FriendicaSmarty; +use Friendica\Render\ITemplateEngine; /** * @brief This class handles Renderer related functions. */ class Renderer extends BaseObject { + /** + * @brief An array of registered template engines ('name'=>'class name') + */ + public static $template_engines = []; + + /** + * @brief An array of instanced template engines ('name'=>'instance') + */ + public static $template_engine_instance = []; + + /** + * @brief An array for all theme-controllable parameters + * + * Mostly unimplemented yet. Only options 'template_engine' and + * beyond are used. + */ + public static $theme = [ + 'sourcename' => '', + 'videowidth' => 425, + 'videoheight' => 350, + 'force_max_items' => 0, + 'stylesheet' => '', + 'template_engine' => 'smarty3', + ]; + private static $ldelim = [ 'internal' => '', 'smarty3' => '{{' @@ -23,29 +48,30 @@ class Renderer extends BaseObject 'internal' => '', 'smarty3' => '}}' ]; - - /** - * @brief This is our template processor - * - * @param string|FriendicaSmarty $s The string requiring macro substitution or an instance of FriendicaSmarty - * @param array $r key value pairs (search => replace) - * - * @return string substituted string - */ - public static function replaceMacros($s, $r) + + /** + * @brief This is our template processor + * + * @param string|FriendicaSmarty $s The string requiring macro substitution or an instance of FriendicaSmarty + * @param array $vars key value pairs (search => replace) + * + * @return string substituted string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + */ + public static function replaceMacros($s, $vars) { $stamp1 = microtime(true); $a = self::getApp(); // pass $baseurl to all templates - $r['$baseurl'] = System::baseUrl(); - $t = $a->getTemplateEngine(); + $vars['$baseurl'] = System::baseUrl(); + $t = self::getTemplateEngine(); try { - $output = $t->replaceMacros($s, $r); + $output = $t->replaceMacros($s, $vars); } catch (Exception $e) { echo "
" . __FUNCTION__ . ": " . $e->getMessage() . "
"; - killme(); + exit(); } $a->saveTimestamp($stamp1, "rendering"); @@ -53,25 +79,26 @@ class Renderer extends BaseObject return $output; } - /** - * @brief Load a given template $s - * - * @param string $s Template to load. - * @param string $root Optional. - * - * @return string template. - */ + /** + * @brief Load a given template $s + * + * @param string $s Template to load. + * @param string $root Optional. + * + * @return string template. + * @throws Exception + */ public static function getMarkupTemplate($s, $root = '') { $stamp1 = microtime(true); $a = self::getApp(); - $t = $a->getTemplateEngine(); + $t = self::getTemplateEngine(); try { $template = $t->getTemplateFile($s, $root); } catch (Exception $e) { echo "
" . __FUNCTION__ . ": " . $e->getMessage() . "
"; - killme(); + exit(); } $a->saveTimestamp($stamp1, "file"); @@ -79,6 +106,72 @@ class Renderer extends BaseObject return $template; } + /** + * @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 $class 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 ITemplateEngine 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 $template_engine 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; + } + /** * Gets the right delimiter for a template engine *