| 
<?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;
 }
 
 }
 ?>
 
 |