PageRenderTime 49ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/includes/view.php

https://gitlab.com/theinfra/equatroLMS
PHP | 220 lines | 172 code | 46 blank | 2 comment | 34 complexity | 7e06e7ed813042cf7e2c61a315fca6fe MD5 | raw file
  1. <?php
  2. class CLASS_VIEW {
  3. private $tplData = '';
  4. private $tplName = '';
  5. function printdebug($debug){
  6. print "**********************************<br>";
  7. print $debug;
  8. print "**********************************<br>";
  9. }
  10. function parseView($tplname = '', $return = false){
  11. if(trim($tplname) == ''){
  12. if ($return) {
  13. return '';
  14. } else {
  15. echo '';
  16. }
  17. }
  18. $tplClientFile = APP_BASE_PATH.DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR."Templates".DIRECTORY_SEPARATOR."client".DIRECTORY_SEPARATOR.$tplname.'.tpl';
  19. $tplBaseFile = APP_BASE_PATH.DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR."Templates".DIRECTORY_SEPARATOR."base".DIRECTORY_SEPARATOR.$tplname.'.tpl';
  20. $tplEngineFile = APP_BASE_PATH.DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR."Templates".DIRECTORY_SEPARATOR."engine".DIRECTORY_SEPARATOR.$tplname.'.tpl';
  21. if(file_exists($tplClientFile)){
  22. $this->tplData = file_get_contents($tplClientFile);
  23. }
  24. else if(file_exists($tplBaseFile)){
  25. $this->tplData = file_get_contents($tplBaseFile);
  26. }
  27. else if(file_exists($tplEngineFile)){
  28. $this->tplData = file_get_contents($tplEngineFile);
  29. }
  30. else {
  31. AddLog(sprintf(GetLang("WarnNoTplFileFound"), $tplname), APP_SEVERITY_WARNING);
  32. $this->tplData = "";
  33. }
  34. $this->tplData = $this->parsePanels();
  35. $this->tplData = $this->parseMustaches();
  36. $this->tplData = $this->ParseGL($this->tplData);
  37. if ($return) {
  38. return $this->tplData;
  39. } else {
  40. echo $this->tplData;
  41. }
  42. }
  43. public function ParseGL($ViewData)
  44. {
  45. preg_match_all("/(?siU)(%%LNG_[a-zA-Z0-9_]{1,}%%)/", $ViewData, $matches);
  46. foreach ($matches[0] as $key => $k) {
  47. $pattern1 = $k;
  48. $pattern2 = str_replace("%", "", $pattern1);
  49. $pattern2 = str_replace("LNG_", "", $pattern2);
  50. $lang = GetLang($pattern2);
  51. if ($lang != '') {
  52. $ViewData = str_replace($pattern1, $lang, $ViewData);
  53. }
  54. }
  55. $ViewData = $this->Parse("GLOBAL_", $ViewData, $GLOBALS);
  56. return $ViewData;
  57. }
  58. public function GetPanelContent($PanelId)
  59. {
  60. $panelData = "";
  61. $panelView = APP_BASE_PATH.DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR.'Panels'.DIRECTORY_SEPARATOR.$PanelId.'.tpl';
  62. $panelLogic = APP_BASE_PATH.DIRECTORY_SEPARATOR.'display'.DIRECTORY_SEPARATOR.'panel.'.$PanelId.'.php';
  63. include_once(APP_BASE_PATH.DIRECTORY_SEPARATOR.'includes'.DIRECTORY_SEPARATOR.'panel.php');
  64. if (file_exists ( $panelLogic )) {
  65. $panelClass = strtoupper('PANEL_'.$PanelId);
  66. // Parse the PHP panel if it exists
  67. include_once ($panelLogic);
  68. $objPanel = new $panelClass ();
  69. $objPanel->SetHTMLFile ( $panelView );
  70. // Otherwise we have to parse the actual panel
  71. $panelData = $objPanel->ParsePanel ();
  72. } else {
  73. $panelData = file_get_contents ( $panelView );
  74. }
  75. $panelData = $this->Parse('Panel.', $panelData, 'GetPanelContent');
  76. $panelData = $this->ParseGL($panelData);
  77. return $panelData;
  78. }
  79. function getMustacheContent($mustacheName){
  80. $mustacheData = "";
  81. $mustacheFile = APP_BASE_PATH.DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR.'Mustaches'.DIRECTORY_SEPARATOR.$mustacheName.'.html';
  82. if(file_exists($mustacheFile)){
  83. $mustacheData = "<script id=\"tpl".$mustacheName."\" type=\"x-tmpl-mustache\">\n".
  84. $this->ParseGL(file_get_contents($mustacheFile)).
  85. "\n</script>\n";
  86. }
  87. return $mustacheData;
  88. }
  89. function Parse($prefix, $text, $replace){
  90. $matches = array();
  91. $output = $text;
  92. preg_match_all('/(?siU)(%%'.preg_quote($prefix).'[a-zA-Z0-9_\.]+%%)/', $text, $matches);
  93. foreach ($matches[0] as $key => $k) {
  94. $pattern1 = $k;
  95. $pattern2 = str_replace('%', '', $pattern1);
  96. $pattern2 = str_replace($prefix.'', '', $pattern2);
  97. if (is_array ( $replace ) && isset ( $replace [$pattern2] )) {
  98. $output = str_replace ( $pattern1, $replace [$pattern2], $output );
  99. } elseif (is_string ( $replace ) && method_exists ( $this, $replace )) {
  100. $result = $this->$replace ( $pattern2 );
  101. $output = str_replace ( $pattern1, $result, $output );
  102. } else {
  103. $output = str_replace ( $pattern1, '', $output );
  104. }
  105. }
  106. return $output;
  107. }
  108. function parsePanels(){
  109. return $this->Parse('Panel.', $this->tplData, 'GetPanelContent');
  110. }
  111. function parseMustaches(){
  112. return $this->Parse('Mustache.', $this->tplData, 'getMustacheContent');
  113. }
  114. public function GetSnippet($SnippetId)
  115. {
  116. $snippetFile = APP_BASE_PATH.DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR.'Snippets'.DIRECTORY_SEPARATOR.$SnippetId.'.tpl';
  117. if(!$snippetFile) {
  118. return "<div>[Snippet not found: '" . $PanelId . "']</div>";
  119. }
  120. $snippetData = file_get_contents($snippetFile);
  121. return $this->ParseGL($snippetData);
  122. }
  123. public function GetMustache($MustacheName)
  124. {
  125. $mustacheFile = APP_BASE_PATH.DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR.'Mustaches'.DIRECTORY_SEPARATOR.$MustacheName.'.html';
  126. if(!$mustacheFile) {
  127. return "<div>[Mustache not found: '" . $PanelId . "']</div>";
  128. }
  129. $mustacheData = file_get_contents($mustacheFile);
  130. return $this->ParseGL($mustacheData);
  131. }
  132. public function getTplViewName($controller, $action){
  133. if(trim($controller) == ""){
  134. return false;
  135. }
  136. $tplClientFile = APP_BASE_PATH.DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR."Templates".DIRECTORY_SEPARATOR."client".DIRECTORY_SEPARATOR.$controller.'.'.$action.'.tpl';
  137. $tplClientViewFile = APP_BASE_PATH.DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR."Templates".DIRECTORY_SEPARATOR."client".DIRECTORY_SEPARATOR.$controller.'view.tpl';
  138. $tplClientControllerFile = APP_BASE_PATH.DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR."Templates".DIRECTORY_SEPARATOR."client".DIRECTORY_SEPARATOR.$controller.'.tpl';
  139. $tplBaseFile = APP_BASE_PATH.DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR."Templates".DIRECTORY_SEPARATOR."base".DIRECTORY_SEPARATOR.$controller.'.'.$action.'.tpl';
  140. $tplBaseViewFile = APP_BASE_PATH.DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR."Templates".DIRECTORY_SEPARATOR."base".DIRECTORY_SEPARATOR.$controller.'view.tpl';
  141. $tplBaseControllerFile = APP_BASE_PATH.DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR."Templates".DIRECTORY_SEPARATOR."base".DIRECTORY_SEPARATOR.$controller.'.tpl';
  142. $tplEngineFile = APP_BASE_PATH.DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR."Templates".DIRECTORY_SEPARATOR."engine".DIRECTORY_SEPARATOR.$controller.'.'.$action.'.tpl';
  143. $tplEngineControllerBaseFile = APP_BASE_PATH.DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR."Templates".DIRECTORY_SEPARATOR."engine".DIRECTORY_SEPARATOR.$controller.'.tpl';
  144. $tplEngineViewBaseFile = APP_BASE_PATH.DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR."Templates".DIRECTORY_SEPARATOR."engine".DIRECTORY_SEPARATOR.$controller.'view.tpl';
  145. if(file_exists($tplClientFile)){
  146. return $controller.".".$action;
  147. }
  148. if(file_exists($tplClientViewFile)){
  149. return $controller."view";
  150. }
  151. if(file_exists($tplClientControllerFile)){
  152. return $controller;
  153. }
  154. if(file_exists($tplBaseFile)){
  155. return $controller.".".$action;
  156. }
  157. if(file_exists($tplBaseViewFile)){
  158. return $controller."view";
  159. }
  160. if(file_exists($tplBaseControllerFile)){
  161. return $controller;
  162. }
  163. if(file_exists($tplEngineFile)){
  164. return $controller.".".$action;
  165. }
  166. if(file_exists($tplEngineControllerBaseFile)){
  167. return $controller.".view";
  168. }
  169. if(file_exists($tplEngineViewBaseFile)){
  170. return $controller;
  171. }
  172. }
  173. }
  174. ?>