diff options
Diffstat (limited to 'Zotlabs/Render/SmartyTemplate.php')
-rwxr-xr-x | Zotlabs/Render/SmartyTemplate.php | 75 |
1 files changed, 75 insertions, 0 deletions
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 ""; + } + + + +} |