aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xZotlabs/Render/SimpleTemplate.php (renamed from include/template_processor.php)7
-rwxr-xr-xZotlabs/Render/SmartyInterface.php48
-rwxr-xr-xZotlabs/Render/SmartyTemplate.php75
-rwxr-xr-xZotlabs/Render/TemplateEngine.php (renamed from include/ITemplateEngine.php)6
-rwxr-xr-xboot.php14
-rwxr-xr-xinclude/plugin.php2
-rwxr-xr-xinclude/smarty.php116
-rw-r--r--include/text.php6
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='');
}
diff --git a/boot.php b/boot.php
index 10244b0d0..a5aa3f7a1 100755
--- a/boot.php
+++ b/boot.php
@@ -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
*/