| // +--------------------------------------------------------------------+ // // $Id$ // // +X2C Class 130 :HIT /** * Hooks vs. IT (HIT) is a simple template implementation, based on hooks and IT template systems. * * @access public */ class HTML_Template_HIT { /** * Root directory where template files are. * * @var string $root * @access public */ var $root = '.'; /** * Group of templates to use (a subdirectory in root). * * @var string $group * @access protected */ var $group = ''; /** * Templates cache. * * @var array $cache * @access protected */ var $cache = array(); /** * @var array $buffer * @access protected */ var $buffer = array(); // ~X2C // +X2C Operation 136 /** * Constructor. * * @param string $root Root directory where template files are. * @param string $group Group of templates to use (a subdirectory in root). * * @return void * @access public */ function HTML_Template_HIT($root = '.', $group = '') // ~X2C { $this->__construct($root, $group); } // -X2C // +X2C Operation 137 /** * Constructor. * * @param int $root Root directory where template files are. * @param int $group Group of templates to use (a subdirectory in root). * * @return void * @access public */ function __construct($root = '.', $group = '') // ~X2C { $this->root = $root; $this->setGroup($group); } // -X2C // +X2C Operation 138 /** * Parse a template returning the results. If $vars is an array, the {[keys]} are replaced with [values] ($val is ignored). If is a string, {$vars} is replaced with $val. * * @param string $name Name of template to parse. * @param mixed $vars Variables to replace in the template. * @param string $val If $vars is a string, the value to replace for $vars. * * @return string * @access public */ function parse($name, $vars = '', $val = '') // ~X2C { $group = end($this->group); if ($group) { $file = "{$this->root}/$group/$name.tpl.html"; } else { $file = "{$this->root}/$name.tpl.html"; } if (!isset($this->cache[$file])) { // FIXME - replace join(file()) with file_get_contents(). $this->cache[$file] = join('', file($file)); } //if (!is_readable($file)) { // trigger_error("Can't read '$file'."); //} if ($vars) { if (is_string($vars)) { $vars = array($vars => $val); } foreach ($vars as $key => $val) { $keys[] = '{' . $key . '}'; $vals[] = $val; } return str_replace($keys, $vals, $this->cache[$file]); } else { return $this->cache[$file]; } } // -X2C // +X2C Operation 144 /** * Parse a template buffering the results. Parse a template appending the results to an internal buffer. If $vars is an array, the {[keys]} are replaced with [values] ($val is ignored). If is a string, {$vars} is replaced with $val. * * @param string $name Name of template to parse. * @param mixed $vars Variables to replace in the template. * @param string $val If $vars is a string, the value to replace for $vars. * * @return void * @access public */ function parseBuffered($name, $vars = '', $val = '') // ~X2C { @$this->buffer["{$this->group}/$name"] .= $this->parse($name, $vars, $val); } // -X2C // +X2C Operation 145 /** * Gets a parsed buffer. * * @param string $name Name of the parsed template to get. * @param bool $flush Flush buffer. * * @return string * @access public */ function getBuffer($name, $flush = true) // ~X2C { return @$this->buffer["{$this->group}/$name"]; } // -X2C // +X2C Operation 146 /** * Gets a parsed buffer and removes it. * * @param int $name Name of the buffer to flush. * * @return void * @access public */ function popBuffer($name = '') // ~X2C { $return = @$this->buffer["{$this->group}/$name"]; unset($this->buffer["{$this->group}/$name"]); return $return; } // -X2C // +X2C Operation 139 /** * Sets the group to use and add it to the groups stack. * * @param string $group Group to use. * * @return void * @access public */ function setGroup($group = '') // ~X2C { if ($group) { $this->group[] = $group; } else { $this->group[] = ''; } } // -X2C // +X2C Operation 140 /** * Removes the group from the groups stack and returns to the previous used group. * * @return void * @access public */ function unsetGroup() // ~X2C { array_pop($this->group); } // -X2C } // -X2C Class :HIT ?>