<?php
/**
* Description of TemplateEngine
* Date: Friday, 9 Jul 2010,
* Time: 18:50,
* This is a simple TemplateEngine that helps you to parse php into html
*
* @author Coa
*/
class Template {
protected $_templatefolder;
protected $_extension;
protected $_template;
protected $_text;
/*
__construct here define Templatefolder and Template extension;
example: $tpl = new Template('templates','tpl');
this will look into folder templates which is in that same folder where the file that call loadTemplate;
*/
public function __construct($templatefolder, $extensiton) {
$this->_templatefolder = $templatefolder;
$this->_extension = $extensiton;
}
/*
loadTemplate here set which template to load,
example: $tpl = new Template('templates','tpl');
$tpm->loadTemplate('test');
it will look into folder templates for file called test.tpl, if file doesn't exist,
it will return an error.
*/
public function loadTemplate($template) {
if ($this->_templatefolder == '') {
if (file_exists($template . '.' . $this->_extension)) {
$this->_template = $template . '.' . $this->_extension;
} else {
echo '<span style="color: red">Template ' . $template . '.' . $this->_extension . ' doesn\'t exist.</span>';
}
} else {
if (file_exists($this->_templatefolder . '/' . $template . '.' . $this->_extension)) {
$this->_template = $this->_templatefolder . '/' . $template . '.' . $this->_extension;
} else {
echo '<span style="color: red">Template ' . $template . '.' . $this->_extension . ' in folder ' . $this->_templatefolder . ' doesn\'t exist.</span>';
}
}
return 1;
}
/*
* Function that opens form with given parameters.
* example $tpl->openForm('test', '1', 'post', '');
*/
public function openForm($name, $id, $method, $action) {
echo '<form method=' . $method . ' action=' . $action . ' name=' . $name . ' id=' . $id . '>';
return 1;
}
/*
* Function that close form
*
*/
public function closeForm() {
echo '</form>';
return 1;
}
/*
* Function that make tags with parameters that are given by user
* example $tpl->addTag(array(
* 'input_submit' => arrray(
* 'input' => array(
* 'type' => 'submit',
* 'value' => 'register',
* 'newline' => '1'
* )
* )
* ));
* it will create now this <input type="submit" name="input_submit" id="input_submit" value="register" /><br />
* for textarea: $tpl->addTag(array(
* 'textarea' => array(
* 'textarea1' => array(
* 'cols' => 10,
* 'rows' => 10,
* 'value' => 'test'
* )
* )
* ));
* it will create now this <textarea id="textarea1" name="textarea1" cols=10 rows=10>test</textarea>
* you can create more than one tag by calling only once this function
* example $tpl->addTag(array(
* 'input_text' => array(
* 'input' => array(
* 'type' => 'text',
* 'value' => 'test',
* 'newline' => '1'
* )
* ),
* 'text_area1' => array(
* 'textarea' => array(
* 'cols' => 10,
* 'rows' => 20,
* 'value' => 'test2'
* )
* )
* ));
* it will create now this
* <input type="submit" name="input_submit" id="input_submit" value="register" /><br />
* <textarea id="text_area1" name="text_area1" cols=10 rows=10>test2</textarea>
*/
public function addTag($infos) {
foreach ($infos as $key => $value) {
$new_line = '';
$show = '';
$data = '';
$id = $key;
foreach ($value as $key => $value) {
$tag = $key;
foreach ($value as $key => $value) {
if ($key == 'newline' && $value == '1') {
$new_line = '<br />';
} else if ($key == 'newline') {
$data .= '';
} else if ($key == 'value') {
$show = 'value="' . $value . '"';
} else {
$data .= $key . '="' . $value . '" ';
}
}
}
switch ($tag) {
case 'textarea':
$to_return = '<textarea ' . $data . ' id="' . $id . '" name="' . $id . '" >' . substr($show, 7, -1) . '</textarea>' . $new_line;
break;
default :
$to_return = '<' . $tag . ' ' . $data . ' ' . $show . ' id="' . $id . '" name="' . $id . '" />' . $new_line;
}
echo $to_return;
}
return 0;
}
/*
set here replace the text in tpl file that is loaded,
example
test.tpl content:
[hello]<br />
[name]<br />
[time]
to replace the text write $tmp->set(array(
'hello' => 'Hello World',
'name' => 'John Smith',
'time' => date("H:i",time())
));
after this we call for output function
*/
public function set($replace = array()) {
$what = array();
$with = array();
foreach ($replace as $key => $value) {
$what[] .= '[' . $key . ']';
$with[] .= $value;
}
$this->_text = str_replace($what, $with, file_get_contents($this->_template));
return 1;
}
/*
output show html content in this case that we used in set webbrowser will show
Hello World
John Smith
19:05
*/
public function output() {
echo $this->_text;
return 1;
}
}
?>
|