{token1} {token2} <--! tokanname end -->
*
*
* tokens are replace by parseTokens($data) function
*
* special tokens:
* {tokenname_dt} = timestamp token converted to datetime based on string
* {tokenname_d} = timestamp token converted to date string
* {tokenname_t} = timestamp token converted to time string
* {_ic_} = internal counter token
*
*
*/
class my_tt
{
public $fn = '';
private $templatebody = '';
public $output = '';
private $tokens = false;
public $clearunparsedtags = true;
public $unparsedtagsreplacement = '';
public $datetimeformatstring = "d-m-Y H:i:s";
public $dateformatstring = "d-m-Y";
public $timeformatstring = "H:i:s";
function loadTemplateFile($fn)
{
if ((!$fn) )
{
return false;
}
if (file_exists($fn))
$this->templatebody = @file_get_contents($fn);
else if (file_exists(getcwd()."/".$fn))
$this->templatebody = @file_get_contents(getcwd()."/".$fn);
else return false;
if ((!$this->templatebody) or (strlen($this->templatebody) < 1) )
return false;
$this->output = $this->templatebody;
return true;
}
function my_tt($fn)
{
if ($this->loadTemplateFile($fn))
$this->extractTokens();
else
throw new Exception("Cannot open template $fn");
}
function doClearUnparsedTags()
{
$this->output = preg_replace('/\(\%(.*?)\%\)/is',$this->unparsedtagsreplacement,$this->output);
// staro: $this->output = preg_replace("/\{[^\s](.*)[^\s]%\)/i",$this->unparsedtagsreplacement,$this->output);
}
function extractTokens()
{
unset ($this->tokens);
$this->tokens = array();
preg_match_all("/(.*?)/is",$this->templatebody,$token_bodies);
//preg_match_all("//is",$this->templatebody,$token_names);
if ( (is_array($token_bodies)) && (isset($token_bodies[3])) )
{
$token_names = $token_bodies[3];
$token_bodies = $token_bodies[2];
foreach ($token_bodies as $k => $v)
{
$this->tokens[$token_names[$k]] = $v;
}
}
return (sizeof($this->tokens) > 0);
}
function _replaceOneTokenPlaceholderWithValue(&$tokentext,$n,$v)
{
if ( ! stristr($n,"_dt_") === false)
{
if ($v > 0) // show datetime only if its valid
$tokentext = str_replace("{".$n."}",date($this->datetimeformatstring,$v),$tokentext);
}
else if ( ! stristr($n,"_d_") === false)
{
if ($v > 0) // show date only if its valid
$tokentext = str_replace("{%".$n."%}",date($this->dateformatstring,$v),$tokentext);
}
else if ( ! stristr($n,"_t_") === false)
{
if ($v > 0) // show time only if its valid
$tokentext = str_replace("{".$n."}",date($this->timeformatstring,$v),$tokentext);
}
else
$tokentext = str_replace("{".$n."}",$v,$tokentext);
}
function parseOneToken($tagname,$tagvalue)
{
if (is_array($tagvalue))
{
$output = '';
$internalcounter = 1;
$tmp = '';
$tokentext = ( (isset($this->tokens[$tagname])) && (strlen($this->tokens[$tagname])>0) ) ? $this->tokens[$tagname] : ' ';
foreach ($tagvalue as $names => $values)
{
if (is_array($values))
{
$tmp = $tokentext;
foreach ($values as $n => $v)
{
$this->_replaceOneTokenPlaceholderWithValue($tmp,$n,$v);
/*
if ( ! stristr($n,"_dt_") === false)
{
if ($v > 0) // show datetime only if its valid
$tokentext = str_replace("{".$n."}",date($this->datetimeformatstring,$v),$tokentext);
}
else if ( ! stristr($n,"_d_") === false)
{
if ($v > 0) // show date only if its valid
$tokentext = str_replace("{".$n."}",date($this->dateformatstring,$v),$tokentext);
}
else if ( ! stristr($n,"_t_") === false)
{
if ($v > 0) // show time only if its valid
$tokentext = str_replace("{".$n."}",date($this->timeformatstring,$v),$tokentext);
}
else
$tokentext = str_replace("{".$n."}",$v,$tokentext);
*/
}
$output .= $tmp;
}
else
{
$this->_replaceOneTokenPlaceholderWithValue($tokentext,$names,$values);
}
}
if (isset($values) && (is_array($values)))
{
$output = str_replace("{_ic_}",$internalcounter++,$output);
}
else
$output = $tokentext;
// now replace that instead of token in output text
$this->output = preg_replace("/(.*?)/is",$output,$this->output);
}
else
{
if ( ! stristr($tagname,"_ts") === false)
{
if ($tagvalue > 0) // show date only if its valid
$this->output = str_replace("{".$tagname."}",date("d-m-Y H:i:s",$tagvalue),$this->output);
}
else
$this->output = str_replace("{".$tagname."}",$tagvalue,$this->output);
}
}
function parseTokens($data)
{
if ((isset($data)) && (is_array($data)) && (sizeof($data)>0) )
{
foreach ($data as $k => $v)
$this->parseOneToken($k,$v);
}
}
function replaceCompleteCommentToken($tokenname, $value = " ")
{
$this->output = preg_replace("/(.*?)/is",$value,$this->output);
}
function show()
{
if ($this->clearunparsedtags)
$this->doClearUnparsedTags();
print($this->output);
}
} // class end
?>