Templates
authorstekkel <stekkel@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Thu, 14 Apr 2005 21:42:53 +0000 (21:42 +0000)
committerstekkel <stekkel@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Thu, 14 Apr 2005 21:42:53 +0000 (21:42 +0000)
git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@9276 7612ce4b-ef26-0410-bec9-ea0150e637f0

class/template/template.class.php [new file with mode: 0755]

diff --git a/class/template/template.class.php b/class/template/template.class.php
new file mode 100755 (executable)
index 0000000..5fb9d16
--- /dev/null
@@ -0,0 +1,190 @@
+<?php
+/**
+ * Copyright 2003, Paul James
+ * Copyright (c) 2005 The SquirrelMail Project Team
+ * Licensed under the GNU GPL. For full terms see the file COPYING.
+ *
+ * This file contains some methods from the Smarty templating engine version
+ * 2.5.0 by Monte Ohrt <monte@ispi.net> and Andrei Zmievski <andrei@php.net>.
+ *
+ * @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 <monte@ispi.net>
+ * @author Andrei Zmievski <andrei@php.net>
+ * @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;
+  }
+
+}
+
+?>