SetBasePath($base_path)) {
if (isset($filename)) {
$this->Filename = $filename;
$this->LoadTemplate();
}
}
}
function SetBasePath($base_path=null)
{
if (isset($base_path)) {
$base_path = eregi_replace("/$", '', $base_path); //Cutting possible last slash
$this->BasePath = $base_path;
return true;
}
return false;
}
function GetFullPath()
{
return $this->BasePath.'/'.$this->Filename.'.tpl';
}
function LoadTemplate($silent=0)
{
$filename = $this->GetFullPath();
if(file_exists($filename)) {
$handle = fopen ($filename, "r");
$contents = fread ($handle, filesize ($filename));
$this->SetBody($contents);
fclose ($handle);
return true;
}
else {
if (!$silent) echo "File or block not found: $filename ($filename)
";
return false;
}
}
function SetBody($body)
{
$this->Body = $body;
}
function GetBody()
{
return $this->Body;
}
}
class TemplatesCache extends kBase {
var $Templates = Array();
var $BasePath;
function TemplatesCache()
{
parent::kBase();
$this->BasePath = DOC_ROOT.BASE_PATH.THEMES_PATH;
}
function LoadTemplate($filename, $title=NULL)
{
$template =& new Template($this->BasePath, $filename);
if (!isset($title)) $title = $filename;
$this->SetTemplate($title, $template);
}
function SetTemplate($title, &$template)
{
$this->Templates[$title] = $template;
}
function &GetTemplate($title)
{
if (!isset($this->Templates[$title])) {
$this->LoadTemplate($title);
}
return $this->Templates[$title];
}
function GetTemplateBody($title)
{
$template =& $this->GetTemplate($title);
return $template->GetBody();
}
function SetTemplateBody($title, $body)
{
$template =& new Template();
$template->SetBody($body);
$this->SetTemplate($title, $template);
}
function ParseTemplate($template_name)
{
$Parser =& new TemplateParser($this->Application);
return $Parser->Parse( $this->GetTemplateBody($template_name) );
}
function TemplateExists($filename)
{
$template =& new Template($this->BasePath);
$template->Filename = $filename;
return $template->LoadTemplate(1) !== false;
}
}
?>