Advertisement
Guest User

class_simple_template.php

a guest
Jun 26th, 2013
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.41 KB | None | 0 0
  1. <?php
  2. class simple_template
  3. {
  4.  
  5. var $pages = array();
  6. var $page = '';
  7. var $path_to_templates = '';
  8. var $last_template_used = '';
  9. var $debug = 0;
  10.  
  11. function __construct($path_to_templates, $debug=0){
  12. $this->set_path_to_templates($path_to_templates);
  13. $this->set_debug($debug);
  14. }
  15.  
  16.  
  17. function return_parsed_file($template_file, $tags, $email=false, $path_to_templates='', $inc_avail_tags=false){
  18. $this->load($template_file, $path_to_templates);
  19. $this->replace_tags($tags, $template_file);
  20. return $this->return_output($email, $inc_avail_tags);
  21. }
  22.  
  23.  
  24. function echo_parsed_file($template_file, $tags, $path_to_templates=''){
  25. $this->load($template_file, $path_to_templates);
  26. $this->replace_tags($tags, $template_file);
  27. $this->echo_output();
  28. }
  29.  
  30.  
  31. function load($template='', $path_to_templates='') {
  32.  
  33. $template = $this->determine_template($template);
  34.  
  35. if($path_to_templates != ''){
  36. $this->set_path_to_templates($path_to_templates);
  37. }
  38.  
  39. if(array_key_exists($template, $this->pages)){
  40. return true;
  41. }elseif(file_exists($this->path_to_templates.'/'.$template)){
  42. if($this->pages[$template] = file_get_contents($this->path_to_templates.'/'.$template)){
  43. return true;
  44. }else{
  45. die("Unable to open template file ".$this->path_to_templates."/$template.");
  46. }
  47. }else{
  48. die("Template file ".$this->path_to_templates."/$template not found.");
  49. }
  50. }
  51.  
  52. function replace_tags($tags = array(), $template='') {
  53.  
  54. $template = $this->determine_template($template);
  55.  
  56. if (count($tags) > 0){
  57. $this->page = $this->pages[$template];
  58. foreach ($tags as $tag => $data) {
  59. $data = (file_exists($this->path_to_templates.'/'.$data)) ? $this->parse($data) : $data;
  60. $this->page = preg_replace('/{'.$tag.'}/', $data, $this->page);
  61. }
  62. }else{
  63. die("No tags designated for replacement.");
  64. }
  65. }
  66.  
  67. function echo_output() {
  68. echo $this->page;
  69. }
  70.  
  71. function return_output($email=false, $inc_avail_tags=false) {
  72. if($email){
  73. $email_data = array();
  74. if(preg_match('/SUBJECT=\[(.+)\]=SUBJECT.+BODY=\[(.+)\]=BODY/s', $this->page, $m)){
  75. $email_data['subject'] = $m[1];
  76. $email_data['body'] = $m[2];
  77. if($inc_avail_tags){
  78. if(preg_match('/TOKEN_S=\[(.+)\]=TOKEN_S/s', $this->page, $m)){
  79. $email_data['tokens'] = $m[1];
  80. }else{
  81. $email_data['tokens'] = 'FYI: File Contains No "TOKEN_S=[ ... ]=TOKEN_S" Section (This is ok)';
  82. }
  83. }
  84. return $email_data;
  85. }else{
  86. die("Invalid Syntax. Template file syntax: SUBJECT=[Your subject here]=SUBJECT\nBODY=[\nbody of email here\n]=BODY");
  87. }
  88. }else{
  89. $content_data = array();
  90. if(preg_match('/(.*)TOKEN_S=\[(.+)\]=TOKEN_S(.*)/s', $this->page, $m)){
  91. $content_data['content'] = $m[1].$m[3];
  92. $content_data['tokens'] = $m[2];
  93. }else{
  94. $content_data['content'] = $this->page;
  95. $content_data['tokens'] = 'FYI: File Contains No "TOKEN_S=[ ... ]=TOKEN_S" Section (This is ok)';
  96. }
  97. if($inc_avail_tags){
  98. return $content_data;
  99. }else{
  100. return $content_data['content'];
  101. }
  102. }
  103. }
  104.  
  105.  
  106. function set_path_to_templates($path_to_templates){
  107. // ensure no trailing slash
  108. $path_to_templates = preg_replace('/\/$/', '', $path_to_templates);
  109. $path_to_templates = preg_replace('/\\$/', '', $path_to_templates);
  110. $this->path_to_templates = $path_to_templates;
  111. return true;
  112. }
  113.  
  114. function set_debug($debug){
  115. $this->debug = $debug?$debug:0;
  116. return true;
  117. }
  118.  
  119. private function determine_template($template){
  120. if($template != ''){
  121. $this->last_template_used = $template;
  122. return $template;
  123. }elseif($this->last_template_used != ''){
  124. return $this->last_template_used;
  125. }else{
  126. die("No template file name given!");
  127. }
  128. }
  129.  
  130.  
  131. private function parse($file) {
  132. if($file==''){
  133. // why is this here? because of empty tag values ($data) in the 'replace_tags' method. Trust me, just leave it be.
  134. return '';
  135. }
  136. ob_start();
  137. include($this->path_to_templates.'/'.$file);
  138. $buffer = ob_get_contents();
  139. ob_end_clean();
  140. return $buffer;
  141. }
  142.  
  143.  
  144. }
  145. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement