<?php
/**
* @author Jan Kudlacek
*
*/
class Themizer
{
var $template;
var $template_path = "blocks/";
var $suffix = ".html";
var $tag_pattern = '!\{\{(\w+)\}\}!';
var $replace_values;
function __construct($theme,$vars = null)
{
$file_path = $this->template_path.$theme.$this->suffix;
{
$this->replace_values = $vars;
}
else
throw new Exception("template file doesn't exists");
}
function isMultipleResult()
{
return @is_array($this->replace_values[0]); }
function getResult()
{
$result="";
if($this->isMultipleResult())
{
$array = $this->replace_values;
foreach($array as $value)
{
$this->replace_values = $value;
}
}
else
return $result;
}
function replace_value($matches) {
return $this->replace_values[$matches[1]];
else
return "";
}
function getResultFromArray($keys)
{
$i = 0; $result= array(); foreach($biggest as $value)
{
foreach($keys as $key => $val)
{
$result[$i][$val] = $args[$key][$i];
}
$i++;
}
$this->replace_values = $result;
return $this->getResult();
}
}
PD9waHAKCi8qKgogKiBAYXV0aG9yIEphbiBLdWRsYWNlawogKgoqLwoKY2xhc3MgVGhlbWl6ZXIKewoKdmFyICR0ZW1wbGF0ZTsKdmFyICR0ZW1wbGF0ZV9wYXRoID0gImJsb2Nrcy8iOwp2YXIgJHN1ZmZpeCA9ICIuaHRtbCI7Cgp2YXIgJHRhZ19wYXR0ZXJuID0gJyFce1x7KFx3KylcfVx9ISc7Cgp2YXIgJHJlcGxhY2VfdmFsdWVzOwoKZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHRoZW1lLCR2YXJzID0gbnVsbCkKewoKCSRmaWxlX3BhdGggPSAkdGhpcy0+dGVtcGxhdGVfcGF0aC4kdGhlbWUuJHRoaXMtPnN1ZmZpeDsKCglpZihmaWxlX2V4aXN0cygkZmlsZV9wYXRoKSkKCXsKCQkkdGhpcy0+dGVtcGxhdGUgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZV9wYXRoKTsKCQkKCQkkdGhpcy0+cmVwbGFjZV92YWx1ZXMgPSAkdmFyczsKCX0KCWVsc2UKCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCJ0ZW1wbGF0ZSBmaWxlIGRvZXNuJ3QgZXhpc3RzIik7Cn0KCmZ1bmN0aW9uIGlzTXVsdGlwbGVSZXN1bHQoKQp7CglyZXR1cm4gQGlzX2FycmF5KCR0aGlzLT5yZXBsYWNlX3ZhbHVlc1swXSk7Cn0KCmZ1bmN0aW9uIGdldFJlc3VsdCgpCnsKCiRyZXN1bHQ9IiI7CgppZigkdGhpcy0+aXNNdWx0aXBsZVJlc3VsdCgpKQp7CgoJJGFycmF5ID0gJHRoaXMtPnJlcGxhY2VfdmFsdWVzOwoKZm9yZWFjaCgkYXJyYXkgYXMgJHZhbHVlKQp7CgkkdGhpcy0+cmVwbGFjZV92YWx1ZXMgPSAkdmFsdWU7CgoJJHJlc3VsdCAuPSBwcmVnX3JlcGxhY2VfY2FsbGJhY2soJHRoaXMtPnRhZ19wYXR0ZXJuLCBhcnJheSgkdGhpcywncmVwbGFjZV92YWx1ZScpLCAkdGhpcy0+dGVtcGxhdGUpOwkKfQoKfQplbHNlCiRyZXN1bHQgPSBwcmVnX3JlcGxhY2VfY2FsbGJhY2soJHRoaXMtPnRhZ19wYXR0ZXJuLCBhcnJheSgkdGhpcywncmVwbGFjZV92YWx1ZScpLCAkdGhpcy0+dGVtcGxhdGUpOwoKcmV0dXJuICRyZXN1bHQ7Cn0KCmZ1bmN0aW9uIHJlcGxhY2VfdmFsdWUoJG1hdGNoZXMpIHsKICBpZihhcnJheV9rZXlfZXhpc3RzKCRtYXRjaGVzWzFdLCR0aGlzLT5yZXBsYWNlX3ZhbHVlcykpCiAgcmV0dXJuICR0aGlzLT5yZXBsYWNlX3ZhbHVlc1skbWF0Y2hlc1sxXV07CiAgZWxzZQogIHJldHVybiAiIjsKfQoKZnVuY3Rpb24gZ2V0UmVzdWx0RnJvbUFycmF5KCRrZXlzKQp7CgkkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsKCQoJdW5zZXQoJGFyZ3NbMF0pOwoJJGFyZ3MgPSBhcnJheV92YWx1ZXMoJGFyZ3MpOwoJCgkKCSRiaWdnZXN0ID0gbWF4KCRhcmdzKTsKCQoKCQoJJGkgPSAwOyAkcmVzdWx0PSBhcnJheSgpOwoJZm9yZWFjaCgkYmlnZ2VzdCBhcyAkdmFsdWUpCgl7CgkKCQkkcmVzdWx0WyRpXSA9IGFycmF5KCk7CgkKCQlmb3JlYWNoKCRrZXlzIGFzICRrZXkgPT4gJHZhbCkKCQl7CgkJCSRyZXN1bHRbJGldWyR2YWxdID0gJGFyZ3NbJGtleV1bJGldOwoJCX0JCQoJCSRpKys7Cgl9IAoJJHRoaXMtPnJlcGxhY2VfdmFsdWVzID0gJHJlc3VsdDsKCXJldHVybiAkdGhpcy0+Z2V0UmVzdWx0KCk7Cn0KCgp9