diff options
-rwxr-xr-x | Zotlabs/Render/SimpleTemplate.php (renamed from include/template_processor.php) | 7 | ||||
-rwxr-xr-x | Zotlabs/Render/SmartyInterface.php | 48 | ||||
-rwxr-xr-x | Zotlabs/Render/SmartyTemplate.php | 75 | ||||
-rwxr-xr-x | Zotlabs/Render/TemplateEngine.php (renamed from include/ITemplateEngine.php) | 6 | ||||
-rwxr-xr-x | boot.php | 14 | ||||
-rwxr-xr-x | include/plugin.php | 2 | ||||
-rwxr-xr-x | include/smarty.php | 116 | ||||
-rw-r--r-- | include/text.php | 6 |
8 files changed, 145 insertions, 129 deletions
diff --git a/include/template_processor.php b/Zotlabs/Render/SimpleTemplate.php index d2bf283e3..ff1bb5c3c 100755 --- a/include/template_processor.php +++ b/Zotlabs/Render/SimpleTemplate.php @@ -1,9 +1,11 @@ <?php -require_once 'include/ITemplateEngine.php'; + +namespace Zotlabs\Render; define ("KEY_NOT_EXISTS", '^R_key_not_Exists^'); -class Template implements ITemplateEngine { +class SimpleTemplate implements TemplateEngine { + static $name ="internal"; var $r; @@ -261,6 +263,7 @@ class Template implements ITemplateEngine { } // TemplateEngine interface + public function replace_macros($s, $r) { $this->r = $r; diff --git a/Zotlabs/Render/SmartyInterface.php b/Zotlabs/Render/SmartyInterface.php new file mode 100755 index 000000000..0e3a47c2f --- /dev/null +++ b/Zotlabs/Render/SmartyInterface.php @@ -0,0 +1,48 @@ +<?php /** @file */ + +namespace Zotlabs\Render; + +require_once('library/Smarty/libs/Smarty.class.php'); + +class SmartyInterface extends \Smarty { + + public $filename; + + function __construct() { + parent::__construct(); + + $theme = Theme::current(); + $thname = $theme[0]; + + // setTemplateDir can be set to an array, which Smarty will parse in order. + // The order is thus very important here + + $template_dirs = array('theme' => "view/theme/$thname/tpl/"); + if( x(\App::$theme_info,"extends") ) + $template_dirs = $template_dirs + array('extends' => "view/theme/" . \App::$theme_info["extends"] . "/tpl/"); + $template_dirs = $template_dirs + array('base' => 'view/tpl/'); + $this->setTemplateDir($template_dirs); + + $basecompiledir = \App::$config['system']['smarty3_folder']; + + $this->setCompileDir($basecompiledir.'/compiled/'); + $this->setConfigDir($basecompiledir.'/config/'); + $this->setCacheDir($basecompiledir.'/cache/'); + + $this->left_delimiter = \App::get_template_ldelim('smarty3'); + $this->right_delimiter = \App::get_template_rdelim('smarty3'); + + // Don't report errors so verbosely + $this->error_reporting = E_ALL & (~E_NOTICE); + } + + function parsed($template = '') { + if($template) { + return $this->fetch('string:' . $template); + } + return $this->fetch('file:' . $this->filename); + } +} + + + diff --git a/Zotlabs/Render/SmartyTemplate.php b/Zotlabs/Render/SmartyTemplate.php new file mode 100755 index 000000000..532d6e42f --- /dev/null +++ b/Zotlabs/Render/SmartyTemplate.php @@ -0,0 +1,75 @@ +<?php /** @file */ + +namespace Zotlabs\Render; + +class SmartyTemplate implements TemplateEngine { + + static $name ="smarty3"; + + public function __construct(){ + + // Cannot use get_config() here because it is called during installation when there is no DB. + // FIXME: this may leak private information such as system pathnames. + + $basecompiledir = ((array_key_exists('smarty3_folder',\App::$config['system'])) + ? \App::$config['system']['smarty3_folder'] : ''); + if (!$basecompiledir) $basecompiledir = str_replace('Zotlabs','',dirname(__dir__)) . "/" . TEMPLATE_BUILD_PATH; + if (!is_dir($basecompiledir)) { + echo "<b>ERROR:</b> folder <tt>$basecompiledir</tt> does not exist."; killme(); + } + if(!is_writable($basecompiledir)){ + echo "<b>ERROR:</b> folder <tt>$basecompiledir</tt> must be writable by webserver."; killme(); + } + \App::$config['system']['smarty3_folder'] = $basecompiledir; + } + + // TemplateEngine interface + + public function replace_macros($s, $r) { + $template = ''; + if(gettype($s) === 'string') { + $template = $s; + $s = new SmartyInterface(); + } + foreach($r as $key=>$value) { + if($key[0] === '$') { + $key = substr($key, 1); + } + $s->assign($key, $value); + } + return $s->parsed($template); + } + + public function get_markup_template($file, $root=''){ + $template_file = theme_include($file, $root); + if($template_file) { + $template = new SmartyInterface(); + $template->filename = $template_file; + + return $template; + } + return ""; + } + + public function get_intltext_template($file, $root='') { + + $lang = \App::$language; + + if(file_exists("view/$lang/$file")) + $template_file = "view/$lang/$file"; + elseif(file_exists("view/en/$file")) + $template_file = "view/en/$file"; + else + $template_file = theme_include($file,$root); + if($template_file) { + $template = new SmartyInterface(); + $template->filename = $template_file; + + return $template; + } + return ""; + } + + + +} diff --git a/include/ITemplateEngine.php b/Zotlabs/Render/TemplateEngine.php index 7bd559a63..600ff913e 100755 --- a/include/ITemplateEngine.php +++ b/Zotlabs/Render/TemplateEngine.php @@ -1,10 +1,12 @@ <?php -require_once 'boot.php'; + +namespace Zotlabs\Render; /** * @brief Interface for template engines. */ -interface ITemplateEngine { + +interface TemplateEngine { public function replace_macros($s, $v); public function get_markup_template($file, $root=''); } @@ -908,16 +908,24 @@ class App { /* * register template engines */ + + + spl_autoload_register('ZotlabsAutoloader::loader'); + + self::$meta= new Zotlabs\Web\HttpMeta(); + $smarty = new Zotlabs\Render\SmartyTemplate(); + $dc = get_declared_classes(); +// logger('classes: ' . print_r($dc,true)); + foreach ($dc as $k) { - if (in_array("ITemplateEngine", class_implements($k))){ + + if (in_array('Zotlabs\\Render\\TemplateEngine', class_implements($k))){ self::register_template_engine($k); } } - spl_autoload_register('ZotlabsAutoloader::loader'); - self::$meta= new Zotlabs\Web\HttpMeta(); } diff --git a/include/plugin.php b/include/plugin.php index 89047d4b1..0466360bb 100755 --- a/include/plugin.php +++ b/include/plugin.php @@ -5,8 +5,6 @@ * @brief Some functions to handle addons and themes. */ -require_once("include/smarty.php"); - /** * @brief unloads an addon. diff --git a/include/smarty.php b/include/smarty.php deleted file mode 100755 index 9d443e269..000000000 --- a/include/smarty.php +++ /dev/null @@ -1,116 +0,0 @@ -<?php /** @file */ - -require_once('include/ITemplateEngine.php'); -require_once('library/Smarty/libs/Smarty.class.php'); - - -class FriendicaSmarty extends Smarty { - - public $filename; - - function __construct() { - parent::__construct(); - - $a = get_app(); - $theme = Zotlabs\Render\Theme::current(); - $thname = $theme[0]; - - // setTemplateDir can be set to an array, which Smarty will parse in order. - // The order is thus very important here - $template_dirs = array('theme' => "view/theme/$thname/tpl/"); - if( x(App::$theme_info,"extends") ) - $template_dirs = $template_dirs + array('extends' => "view/theme/" . App::$theme_info["extends"] . "/tpl/"); - $template_dirs = $template_dirs + array('base' => 'view/tpl/'); - $this->setTemplateDir($template_dirs); - - $basecompiledir = App::$config['system']['smarty3_folder']; - - $this->setCompileDir($basecompiledir.'/compiled/'); - $this->setConfigDir($basecompiledir.'/config/'); - $this->setCacheDir($basecompiledir.'/cache/'); - - $this->left_delimiter = App::get_template_ldelim('smarty3'); - $this->right_delimiter = App::get_template_rdelim('smarty3'); - - // Don't report errors so verbosely - $this->error_reporting = E_ALL & ~E_NOTICE; - } - - function parsed($template = '') { - if($template) { - return $this->fetch('string:' . $template); - } - return $this->fetch('file:' . $this->filename); - } -} - - - -class FriendicaSmartyEngine implements ITemplateEngine { - static $name ="smarty3"; - - public function __construct(){ - $a = get_app(); - - // Cannot use get_config() here because it is called during installation when there is no DB. - // FIXME: this may leak private information such as system pathnames. - - $basecompiledir = ((array_key_exists('smarty3_folder',App::$config['system'])) ? App::$config['system']['smarty3_folder'] : ''); - if (!$basecompiledir) $basecompiledir = dirname(__dir__) . "/" . TEMPLATE_BUILD_PATH; - if (!is_dir($basecompiledir)) { - echo "<b>ERROR:</b> folder <tt>$basecompiledir</tt> does not exist."; killme(); - } - if(!is_writable($basecompiledir)){ - echo "<b>ERROR:</b> folder <tt>$basecompiledir</tt> must be writable by webserver."; killme(); - } - App::$config['system']['smarty3_folder'] = $basecompiledir; - } - - // ITemplateEngine interface - public function replace_macros($s, $r) { - $template = ''; - if(gettype($s) === 'string') { - $template = $s; - $s = new FriendicaSmarty(); - } - foreach($r as $key=>$value) { - if($key[0] === '$') { - $key = substr($key, 1); - } - $s->assign($key, $value); - } - return $s->parsed($template); - } - - public function get_markup_template($file, $root=''){ - $template_file = theme_include($file, $root); - if($template_file) { - $template = new FriendicaSmarty(); - $template->filename = $template_file; - - return $template; - } - return ""; - } - - public function get_intltext_template($file, $root='') { - $a = get_app(); - - if(file_exists("view/{App::$language}/$file")) - $template_file = "view/{App::$language}/$file"; - elseif(file_exists("view/en/$file")) - $template_file = "view/en/$file"; - else - $template_file = theme_include($file,$root); - if($template_file) { - $template = new FriendicaSmarty(); - $template->filename = $template_file; - - return $template; - } - return ""; - } - - - -} diff --git a/include/text.php b/include/text.php index 554518e32..df6dac056 100644 --- a/include/text.php +++ b/include/text.php @@ -3,8 +3,6 @@ * @file include/text.php */ -require_once("include/template_processor.php"); -require_once("include/smarty.php"); require_once("include/bbcode.php"); // random string, there are 86 characters max in text mode, 128 for hex @@ -16,8 +14,8 @@ define('RANDOM_STRING_TEXT', 0x01 ); /** * @brief This is our template processor. * - * @param string|FriendicaSmarty $s the string requiring macro substitution, - * or an instance of FriendicaSmarty + * @param string|SmartyEngine $s the string requiring macro substitution, + * or an instance of SmartyEngine * @param array $r key value pairs (search => replace) * @return string substituted string */ |