From: stekkel Date: Thu, 14 Apr 2005 21:42:53 +0000 (+0000) Subject: Templates X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=94b47c3023d63b207c09b14dfeb19e0999547d11;p=squirrelmail.git Templates git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@9276 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- diff --git a/class/template/template.class.php b/class/template/template.class.php new file mode 100755 index 00000000..5fb9d168 --- /dev/null +++ b/class/template/template.class.php @@ -0,0 +1,190 @@ + and Andrei Zmievski . + * + * @version $Id$ + */ + +/** + * The SquirrelMail (Foowd) template implementation. + * Derived from the foowd template implementation and adapted + * for squirrelmail + * @package SquirrelMail + */ + +/** + * The SquirrelMail (Foowd) template class. + * + * Basic template class for capturing values and pluging them into a template. + * This class uses a similar API to Smarty. + * + * @author Paul James + * @author Monte Ohrt + * @author Andrei Zmievski + * @package SquirrelMail + */ +class Template +{ + /** + * The templates values array + * + * @var array + */ + var $values = array(); + + /** + * The template directory to use + * + * @var string + */ + var $template_dir = 'templates\default'; + + /** + * Constructor + * + * @param string $sTplDir where the template set is located + */ + function Template($sTplDir = 'templates\default') { + $this->template_dir = $sTplDir; + } + + + /** + * Assigns values to template variables + * + * @param array|string $tpl_var the template variable name(s) + * @param mixed $value the value to assign + */ + function assign($tpl_var, $value = NULL) { + if (is_array($tpl_var)) + { + foreach ($tpl_var as $key => $val) + { + if ($key != '') + $this->values[$key] = $val; + } + } + else + { + if ($tpl_var != '') + $this->values[$tpl_var] = $value; + } + } + + /** + * Assigns values to template variables by reference + * + * @param string $tpl_var the template variable name + * @param mixed $value the referenced value to assign + */ + function assign_by_ref($tpl_var, &$value) + { + if ($tpl_var != '') + $this->values[$tpl_var] = &$value; + } + + /** + * Appends values to template variables + * + * @param array|string $tpl_var the template variable name(s) + * @param mixed $value the value to append + */ + function append($tpl_var, $value = NULL, $merge = FALSE) + { + if (is_array($tpl_var)) + { + foreach ($tpl_var as $_key => $_val) + { + if ($_key != '') + { + if(isset($this->values[$_key]) && !is_array($this->values[$_key])) + settype($this->values[$_key],'array'); + + if($merge && is_array($_val)) + { + foreach($_val as $_mkey => $_mval) + $this->values[$_key][$_mkey] = $_mval; + } + else + $this->values[$_key][] = $_val; + } + } + } + else + { + if ($tpl_var != '' && isset($value)) + { + if(isset($this->values[$tpl_var]) && !is_array($this->values[$tpl_var])) + settype($this->values[$tpl_var],'array'); + + if($merge && is_array($value)) + { + foreach($value as $_mkey => $_mval) + $this->values[$tpl_var][$_mkey] = $_mval; + } + else + $this->values[$tpl_var][] = $value; + } + } + } + + /** + * Appends values to template variables by reference + * + * @param string $tpl_var the template variable name + * @param mixed $value the referenced value to append + */ + function append_by_ref($tpl_var, &$value, $merge = FALSE) + { + if ($tpl_var != '' && isset($value)) + { + if(!@is_array($this->values[$tpl_var])) + settype($this->values[$tpl_var],'array'); + + if ($merge && is_array($value)) + { + foreach($value as $_key => $_val) + $this->values[$tpl_var][$_key] = &$value[$_key]; + } + else + $this->values[$tpl_var][] = &$value; + } + } + + /** + * Display the template + * + * @param string $file The template file to use + */ + function display($file) + { + $t = &$this->values; // place values array directly in scope + ob_start(); + include($this->template_dir.$file); + ob_end_flush(); + } + + /** + * Return the results of applying a template. + * + * @param string $file The template file to use + * @return string A string of the results + */ + function fetch($file) + { + ob_start(); + $t = &$this->values; // place values array directly in scope + include($this->template_dir.$file); + $contents = ob_get_contents(); + ob_end_clean(); + return $contents; + } + +} + +?>