Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class simple_template
- {
- var $pages = array();
- var $page = '';
- var $path_to_templates = '';
- var $last_template_used = '';
- var $debug = 0;
- function __construct($path_to_templates, $debug=0){
- $this->set_path_to_templates($path_to_templates);
- $this->set_debug($debug);
- }
- function return_parsed_file($template_file, $tags, $email=false, $path_to_templates='', $inc_avail_tags=false){
- $this->load($template_file, $path_to_templates);
- $this->replace_tags($tags, $template_file);
- return $this->return_output($email, $inc_avail_tags);
- }
- function echo_parsed_file($template_file, $tags, $path_to_templates=''){
- $this->load($template_file, $path_to_templates);
- $this->replace_tags($tags, $template_file);
- $this->echo_output();
- }
- function load($template='', $path_to_templates='') {
- $template = $this->determine_template($template);
- if($path_to_templates != ''){
- $this->set_path_to_templates($path_to_templates);
- }
- if(array_key_exists($template, $this->pages)){
- return true;
- }elseif(file_exists($this->path_to_templates.'/'.$template)){
- if($this->pages[$template] = file_get_contents($this->path_to_templates.'/'.$template)){
- return true;
- }else{
- die("Unable to open template file ".$this->path_to_templates."/$template.");
- }
- }else{
- die("Template file ".$this->path_to_templates."/$template not found.");
- }
- }
- function replace_tags($tags = array(), $template='') {
- $template = $this->determine_template($template);
- if (count($tags) > 0){
- $this->page = $this->pages[$template];
- foreach ($tags as $tag => $data) {
- $data = (file_exists($this->path_to_templates.'/'.$data)) ? $this->parse($data) : $data;
- $this->page = preg_replace('/{'.$tag.'}/', $data, $this->page);
- }
- }else{
- die("No tags designated for replacement.");
- }
- }
- function echo_output() {
- echo $this->page;
- }
- function return_output($email=false, $inc_avail_tags=false) {
- if($email){
- $email_data = array();
- if(preg_match('/SUBJECT=\[(.+)\]=SUBJECT.+BODY=\[(.+)\]=BODY/s', $this->page, $m)){
- $email_data['subject'] = $m[1];
- $email_data['body'] = $m[2];
- if($inc_avail_tags){
- if(preg_match('/TOKEN_S=\[(.+)\]=TOKEN_S/s', $this->page, $m)){
- $email_data['tokens'] = $m[1];
- }else{
- $email_data['tokens'] = 'FYI: File Contains No "TOKEN_S=[ ... ]=TOKEN_S" Section (This is ok)';
- }
- }
- return $email_data;
- }else{
- die("Invalid Syntax. Template file syntax: SUBJECT=[Your subject here]=SUBJECT\nBODY=[\nbody of email here\n]=BODY");
- }
- }else{
- $content_data = array();
- if(preg_match('/(.*)TOKEN_S=\[(.+)\]=TOKEN_S(.*)/s', $this->page, $m)){
- $content_data['content'] = $m[1].$m[3];
- $content_data['tokens'] = $m[2];
- }else{
- $content_data['content'] = $this->page;
- $content_data['tokens'] = 'FYI: File Contains No "TOKEN_S=[ ... ]=TOKEN_S" Section (This is ok)';
- }
- if($inc_avail_tags){
- return $content_data;
- }else{
- return $content_data['content'];
- }
- }
- }
- function set_path_to_templates($path_to_templates){
- // ensure no trailing slash
- $path_to_templates = preg_replace('/\/$/', '', $path_to_templates);
- $path_to_templates = preg_replace('/\\$/', '', $path_to_templates);
- $this->path_to_templates = $path_to_templates;
- return true;
- }
- function set_debug($debug){
- $this->debug = $debug?$debug:0;
- return true;
- }
- private function determine_template($template){
- if($template != ''){
- $this->last_template_used = $template;
- return $template;
- }elseif($this->last_template_used != ''){
- return $this->last_template_used;
- }else{
- die("No template file name given!");
- }
- }
- private function parse($file) {
- if($file==''){
- // why is this here? because of empty tag values ($data) in the 'replace_tags' method. Trust me, just leave it be.
- return '';
- }
- ob_start();
- include($this->path_to_templates.'/'.$file);
- $buffer = ob_get_contents();
- ob_end_clean();
- return $buffer;
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement