]> git.llucax.com Git - software/bife/bife-all.git/blob - src/HTML/Template/HIT.php
- Added HIT to UML diagram.
[software/bife/bife-all.git] / src / HTML / Template / HIT.php
1 <?php
2 // vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
3 // +--------------------------------------------------------------------+
4 // |                       BIFE - Buil It FastEr                        |
5 // +--------------------------------------------------------------------+
6 // | This file is part of BIFE.                                         |
7 // |                                                                    |
8 // | BIFE is free software; you can redistribute it and/or modify it    |
9 // | under the terms of the GNU General Public License as published by  |
10 // | the Free Software Foundation; either version 2 of the License, or  |
11 // | (at your option) any later version.                                |
12 // |                                                                    |
13 // | BIFE is distributed in the hope that it will be useful, but        |
14 // | WITHOUT ANY WARRANTY; without even the implied warranty of         |
15 // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   |
16 // | General Public License for more details.                           |
17 // |                                                                    |
18 // | You should have received a copy of the GNU General Public License  |
19 // | along with Hooks; if not, write to the Free Software Foundation,   |
20 // | Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA      |
21 // +--------------------------------------------------------------------+
22 // | Created: Wed Jun 17 19:03:14 2003                                  |
23 // | Authors: Leandro Lucarella <luca@lugmen.org.ar>                    |
24 // +--------------------------------------------------------------------+
25 //
26 // $Id$
27 //
28
29 // +X2C Class 130 :HIT
30 /**
31  * Hooks vs. IT (HIT) is a simple template implementation, based on hooks and IT template systems.
32  *
33  * @access public
34  */
35 class HTML_Template_HIT {
36     /**
37      * Root directory where template files are.
38      *
39      * @var    string $root
40      * @access public
41      */
42     var $root = '.';
43
44     /**
45      * Group of templates to use (a subdirectory in root).
46      *
47      * @var    string $group
48      * @access public
49      */
50     var $group = '';
51
52     /**
53      * Templates cache.
54      *
55      * @var    array $cache
56      * @access protected
57      */
58     var $cache = array();
59
60     // ~X2C
61
62     // +X2C Operation 136
63     /**
64      * Constructor.
65      *
66      * @param  string $root Root directory where template files are.
67      * @param  string $group Group of templates to use (a subdirectory in root).
68      *
69      * @return void
70      * @access public
71      */
72     function HTML_Template_HIT($root = '.', $group = '') // ~X2C
73     {
74         $this->__construct($root, $group);
75     }
76     // -X2C
77
78     // +X2C Operation 137
79     /**
80      * Constructor.
81      *
82      * @param  int $root Root directory where template files are.
83      * @param  int $group Group of templates to use (a subdirectory in root).
84      *
85      * @return void
86      * @access public
87      */
88     function __construct($root = '.', $group = '') // ~X2C
89     {
90         $this->root  = $root;
91         $this->group = $group;
92     }
93     // -X2C
94
95     // +X2C Operation 138
96     /**
97      * Parse a template.
98 If $vars is an array, the {[keys]} are replaced with [values] ($val is ignored). If is a string, {$vars} is replaced with $val.
99      *
100      * @param  string $name Name of template to parse.
101      * @param  mixed $vars Variables to replace in the template.
102      * @param  string $val If $vars is a string, the value to replace for $vars.
103      *
104      * @return void
105      * @access public
106      */
107     function parse($name, $vars = '', $val = '') // ~X2C
108     {
109         if ($this->group) {
110             $file = "{$this->root}/{$this->group}/$name.tpl.html";
111         } else {
112             $file = "{$this->root}/$name.tpl.html";
113         }
114         if (!isset($this->cache[$file])) {
115             $this->cache[$file] = join('', file($file));
116         }
117         //if (!is_readable($file)) {
118         //    trigger_error("Can't read '$file'.");
119         //}
120         if ($vars) {
121             if (is_string($vars)) {
122                 $vars = array($vars => $val);
123             }
124             foreach ($vars as $key => $val) {
125                 $keys[] = '{' . $key . '}';
126                 $vals[] = $val;
127             }
128             return str_replace($keys, $vals, $this->cache[$file]);
129         } else {
130             return $this->cache[$file];
131         }
132     }
133     // -X2C
134
135 } // -X2C Class :HIT
136
137 ?>