You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
1.9 KiB
PHTML
113 lines
1.9 KiB
PHTML
13 years ago
|
<?php
|
||
|
if($_CPHP !== true) { die(); }
|
||
|
|
||
|
$template_cache = array();
|
||
|
|
||
|
class Templater
|
||
|
{
|
||
|
private $basedir = "templates/";
|
||
|
private $extension = ".tpl";
|
||
|
private $tpl = NULL;
|
||
|
private $tpl_rendered = NULL;
|
||
|
|
||
|
public function Load($template)
|
||
|
{
|
||
|
global $template_cache;
|
||
|
|
||
|
if(isset($template_cache[$template]))
|
||
|
{
|
||
|
$tpl_contents = $template_cache[$template];
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$tpl_contents = file_get_contents($this->basedir . $template . $this->extension);
|
||
|
$template_cache[$template] = $tpl_contents;
|
||
|
}
|
||
|
|
||
|
if($tpl_contents !== false)
|
||
|
{
|
||
|
$this->tpl = $tpl_contents;
|
||
|
$this->tpl_rendered = $tpl_contents;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
Throw new Exception("Failed to load template {$template}.");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function Reset()
|
||
|
{
|
||
|
if(!is_null($this->tpl))
|
||
|
{
|
||
|
$this->tpl_rendered = $this->tpl;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
Throw new Exception("No template loaded.");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function Localize($strings)
|
||
|
{
|
||
|
if(!is_null($this->tpl))
|
||
|
{
|
||
|
preg_match_all("/<%!([a-zA-Z0-9_-]+)>/", $this->tpl_rendered, $strlist);
|
||
|
foreach($strlist[1] as $str)
|
||
|
{
|
||
|
if(isset($strings[$str]))
|
||
|
{
|
||
|
$this->tpl_rendered = str_replace("<%!{$str}>", $strings[$str], $this->tpl_rendered);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
Throw new Exception("No template loaded.");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function Compile($strings)
|
||
|
{
|
||
|
if(!is_null($this->tpl))
|
||
|
{
|
||
|
preg_match_all("/<%\?([a-zA-Z0-9_-]+)>/", $this->tpl_rendered, $strlist);
|
||
|
foreach($strlist[1] as $str)
|
||
|
{
|
||
|
if(isset($strings[$str]))
|
||
|
{
|
||
|
$this->tpl_rendered = str_replace("<%?{$str}>", $strings[$str], $this->tpl_rendered);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
Throw new Exception("No template loaded.");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function Render()
|
||
|
{
|
||
|
if(!is_null($this->tpl))
|
||
|
{
|
||
|
return $this->tpl_rendered;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
Throw new Exception("No template loaded.");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function Output()
|
||
|
{
|
||
|
if(!is_null($this->tpl))
|
||
|
{
|
||
|
echo($this->tpl_rendered);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
Throw new Exception("No template loaded.");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
?>
|