PageRenderTime 56ms CodeModel.GetById 28ms RepoModel.GetById 0ms app.codeStats 0ms

/leaf/core/lib/lib_html.php

https://github.com/ivansoriasolis/Vidali
PHP | 210 lines | 117 code | 72 blank | 21 comment | 28 complexity | ab3bf7e865c4dcd8496a9ab35a7d1078 MD5 | raw file
Possible License(s): AGPL-3.0
  1. <?php
  2. /***********************************************************************
  3. * LeafWork 2.0
  4. * ---------------------------------------------------------------------
  5. * File: lib_html.php
  6. * Author: Moisés Lodeiro <moises.lodeiro@gmail.com>
  7. * Licence: GPLv3
  8. * ---------------------------------------------------------------------
  9. * El módulo html pretende servir de herramienta para no tener que estar
  10. * mezclando la capa de código HTML con la capa de código en PHP en un
  11. * documento haciendo que así pueda utilizarse a modo de sistema de
  12. * templates HTML.
  13. * ---------------------------------------------------------------------
  14. * Dependencias: Ninguna.
  15. * ---------------------------------------------------------------------
  16. * 09/12/11 - La clase html ( antes llamada parser ) ha sido reprogramada
  17. * 09/01/12 - Se ha separado el concepto de "página" del de parser por
  18. * módulo.
  19. * 09/01/12 - Se ha implementado la función "get" que devuelve un archivo
  20. * de template ( .tpl ) si no se le especifica una extensión ó un archivo
  21. * con extensión de la carpeta leaf/pages. Si es PHP se parsea.
  22. **********************************************************************/
  23. class html {
  24. public function __construct(){
  25. header ('Pragma: no-cache');
  26. header ('Content-Type: text/html');
  27. if( trim(lw('config')->get( 'template' )) != '' )
  28. $content = file_get_contents( lw('config')->get('template') );
  29. else
  30. $content = '';
  31. if( lw('config')->get('dynamic_template') == true && isset( $_SERVER['REDIRECT_URL'] )){
  32. $base = substr( $_SERVER['REDIRECT_URL'] , 0 , strlen( lw('config')->get('base_url')) );
  33. if( lw('config')->get('base_url') == $base )
  34. $base = substr( $_SERVER['REDIRECT_URL'] , strlen( lw('config')->get('base_url')) , ((strlen( $_SERVER['REDIRECT_URL'] ) - strlen( $base ))-1) ); // -1 para eliminar la última barra
  35. if( is_file( lw('config')->get('template_path').$base.'.tpl' ))
  36. $content = file_get_contents( lw('config')->get('template_path').$base.'.tpl' );
  37. elseif( is_file( lw('config')->get('template_path').$base.'.html' ))
  38. $content = file_get_contents( lw('config')->get('template_path').$base.'.html' );
  39. elseif( is_file( lw('config')->get('template_path').$base.'.htm' ))
  40. $content = file_get_contents( lw('config')->get('template_path').$base.'.htm' );
  41. else{
  42. $path = explode( '/' , $base );
  43. do {
  44. array_pop( $path );
  45. if( count( $path ) > 0 ){
  46. if( is_file( lw('config')->get('template_path').join( '/' , $path ).'.tpl' )){
  47. $content = file_get_contents( lw('config')->get('template_path').join( '/' , $path ).'.tpl' );
  48. break;
  49. }elseif( is_file( lw('config')->get('template_path').join( '/' , $path ).'.html' )){
  50. $content = file_get_contents( lw('config')->get('template_path').join( '/' , $path ).'.html' );
  51. break;
  52. }elseif( is_file( lw('config')->get('template_path').join( '/' , $path ).'.htm' )){
  53. $content = file_get_contents( lw('config')->get('template_path').join( '/' , $path ).'.htm' );
  54. break;
  55. }
  56. }else{
  57. if( trim(lw('config')->get( 'template' )) != '' )
  58. $content = file_get_contents( lw('config')->get('template') );
  59. else
  60. $content = '';
  61. break;
  62. }
  63. } while ( true );
  64. }
  65. }
  66. $content = preg_replace_callback( '/\$CFG\{(.*)\}/' , function ( $match ) {
  67. $match[1] = trim( $match[1] );
  68. $partes = explode( ',' , $match[1] );
  69. if( count( $partes ) == 1 ){
  70. if( lw('config')->get( $partes[1] ) != '' )
  71. return lw('config')->get( $partes[1] );
  72. else
  73. return 'NULL';
  74. }else
  75. return lw('config')->get( implode( ',' , $partes ));
  76. }, $content );
  77. preg_match_all( '/{{([A-Z_a-z0-9-]*)}}/', $content , $get_all_parts );
  78. $validas = explode( ',' , lw('config')->get( 'page_extensions' ));
  79. $f = scandir( 'leaf/pages/' );
  80. foreach( $get_all_parts[0] as $seccion ){
  81. $pa = strtolower( substr( $seccion , 2 , strlen( $seccion )-4 ));
  82. if( is_file( 'leaf/parser/'.$pa.'.php' )){
  83. ob_start();
  84. include( 'leaf/parser/'.$pa.'.php' );
  85. $cont = ob_get_contents();
  86. ob_end_clean();
  87. $content = preg_replace( '/{{'.strtoupper( $pa ).'}}/' , $cont , $content );
  88. ob_clean();
  89. }else{
  90. foreach( $validas as $ext ){
  91. if( is_file( 'leaf/pages/'.strtolower( $pa ).'.'.trim( $ext )) ){
  92. if( strtolower( trim( $ext )) == 'php' ){
  93. ob_start();
  94. include( 'leaf/parser/'.strtolower( $pa ).'.php' );
  95. $cont = ob_get_contents();
  96. ob_end_clean();
  97. $content = preg_replace( '/{{'.strtoupper( $pa ).'}}/' , $cont , $content );
  98. }else
  99. $content = preg_replace( '/{{'.strtoupper( $pa ).'}}/' , file_get_contents( 'leaf/pages/'.strtolower( $pa ).'.'.trim( $ext )) , $content );
  100. break;
  101. }
  102. } // foreach
  103. } // else
  104. } // foreach
  105. if( lw('config')->get('allocate_path') ){
  106. $b = lw('config')->get('url').lw('config')->get('base_url').lw('config')->get('template_path');
  107. if( preg_match( '/\<\/head>/i' , $content ))
  108. $content = preg_replace( '/\<\/head>/i' , '<base href="'.$b.'" />'."\n".'</head>' , $content );
  109. }
  110. echo $content;
  111. }
  112. public function init(){
  113. self::__construct();
  114. }
  115. public function get( $name ){
  116. $name = trim( $name );
  117. $cont = '';
  118. if( strpos( $name , '.' ) == '' )
  119. $ext = 'tpl';
  120. else{
  121. $ext = explode( '.' , $name );
  122. $ext = $ext[count($ext)-1];
  123. $name = substr( $name , 0 , strpos( $name , '.' ));
  124. }
  125. if( is_file( 'leaf/pages/'.$name.'.'.$ext ))
  126. if( $ext == 'php' ){
  127. ob_start();
  128. include( 'leaf/pages/'.$name.'.php' );
  129. $cont = ob_get_contents();
  130. ob_end_clean();
  131. }else
  132. $cont = file_get_contents( 'leaf/pages/'.$name.'.'.$ext );
  133. else
  134. $cont = 'Error, no existe el archivo '.$name.'.'.$ext;
  135. return $cont;
  136. }
  137. }
  138. ?>