A tumblelog CMS built on AJAX, PHP and MySQL.

templates.class.php 4.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?php
  2. if (!defined('entry') || !entry) {
  3. die('Not a valid page');
  4. }
  5. /* ===========================
  6. gelato CMS - A PHP based tumblelog CMS
  7. development version
  8. http://www.gelatocms.com/
  9. gelato CMS is a free software licensed under the GPL 2.0
  10. Copyright (C) 2007 by Pedro Santana <pecesama at gmail dot com>
  11. =========================== */
  12. class plantillas
  13. {
  14. public $plantilla;
  15. public $plantilla_cargada;
  16. public $texto_plantilla;
  17. public $antesBloque;
  18. public $bloque;
  19. public $despuesBloque;
  20. public $bloqueFinal="";
  21. public function __construct($plantilla)
  22. {
  23. $this->plantilla = ($plantilla == "") ? "tumblr" : $plantilla;
  24. }
  25. public function cargarPlantilla($entrada, $salida, $plantilla_usar)
  26. {
  27. $plantilla_usar = "themes/".$this->plantilla."/".$plantilla_usar.".htm";
  28. if (!file_exists($plantilla_usar)) {
  29. die("No se encuentra la plantilla :".$plantilla_usar);
  30. } else {
  31. if (!$fd = fopen($plantilla_usar, "r")) {
  32. die("Error en la plantilla");
  33. } else {
  34. $salida_xhtml = fread($fd, filesize($plantilla_usar));
  35. fclose($fd);
  36. $salida_xhtml = stripslashes($salida_xhtml);
  37. $this->texto_plantilla = $salida_xhtml;
  38. for ($i = 0; $i < count($entrada); $i++) {
  39. $salida_xhtml = str_replace($entrada[$i], $salida[$i], $salida_xhtml);
  40. }
  41. $this->plantilla_cargada = $salida_xhtml;
  42. }
  43. }
  44. }
  45. public function precargarPlantillaConBloque($entrada, $salida, $plantilla_usar, $nombreBloque)
  46. {
  47. $plantilla_usar = "themes/".$this->plantilla."/".$plantilla_usar.".htm";
  48. if (!file_exists($plantilla_usar)) {
  49. die("No se encuentra la plantilla :".$plantilla_usar);
  50. } else {
  51. if (!$fd = fopen($plantilla_usar, "r")) {
  52. die("Error en la plantilla");
  53. } else {
  54. $salida_xhtml = fread($fd, filesize($plantilla_usar));
  55. fclose($fd);
  56. $salida_xhtml = stripslashes($salida_xhtml);
  57. $this->texto_plantilla = $salida_xhtml;
  58. $this->cargaAntesBloque($nombreBloque);
  59. $this->cargaDespuesBloque($nombreBloque);
  60. $this->antesBloque = $this->procesaBloque($entrada, $salida, $this->antesBloque);
  61. $this->despuesBloque = $this->procesaBloque($entrada, $salida, $this->despuesBloque);
  62. }
  63. }
  64. }
  65. public function cargarPlantillaConBloque($entrada, $salida, $plantilla_usar, $nombreBloque)
  66. {
  67. $plantilla_usar = "themes/".$this->plantilla."/".$plantilla_usar.".htm";
  68. if (!file_exists($plantilla_usar)) {
  69. die("No se encuentra la plantilla :".$plantilla_usar);
  70. } else {
  71. if (!$fd = fopen($plantilla_usar, "r")) {
  72. die("Error en la plantilla");
  73. } else {
  74. $salida_xhtml = fread($fd, filesize($plantilla_usar));
  75. fclose($fd);
  76. $salida_xhtml = stripslashes($salida_xhtml);
  77. $this->texto_plantilla = $salida_xhtml;
  78. $this->cargaBloque($nombreBloque);
  79. $this->bloqueFinal .= $this->procesaBloque($entrada, $salida, $this->bloque);
  80. }
  81. }
  82. }
  83. public function procesaBloque($entrada, $salida, $bloque)
  84. {
  85. for ($i = 0; $i < count($entrada); $i++) {
  86. $bloque = str_replace($entrada[$i], $salida[$i], $bloque);
  87. }
  88. return $bloque;
  89. }
  90. public function cargaBloque($nombreBloque)
  91. {
  92. $inicioBloque = "[bloque: ".$nombreBloque."]";
  93. $finBloque = "[/bloque: ".$nombreBloque."]";
  94. $ini = strpos($this->texto_plantilla, $inicioBloque)+strlen($inicioBloque);
  95. $fin = strpos($this->texto_plantilla, $finBloque);
  96. $this->bloque = substr($this->texto_plantilla, $ini, ($fin-$ini));
  97. }
  98. public function cargaAntesBloque($nombreBloque)
  99. {
  100. $inicioBloque = "[bloque: ".$nombreBloque."]";
  101. $ini = strpos($this->texto_plantilla, $inicioBloque);
  102. $this->antesBloque = substr($this->texto_plantilla, 0, $ini);
  103. }
  104. public function cargaDespuesBloque($nombreBloque)
  105. {
  106. $finBloque = "[/bloque: ".$nombreBloque."]";
  107. $fin = strpos($this->texto_plantilla, $finBloque);
  108. $this->despuesBloque = substr($this->texto_plantilla, ($fin+strlen($finBloque)), strlen($this->texto_plantilla));
  109. }
  110. public function mostrarPlantillaConBloque()
  111. {
  112. echo $this->antesBloque.$this->bloqueFinal.$this->despuesBloque;
  113. }
  114. public function mostrarPlantilla()
  115. {
  116. echo $this->plantilla_cargada;
  117. }
  118. public function renderizaEtiqueta($texto="", $etiquetaHtml="p", $claseCss="")
  119. {
  120. echo "<".$etiquetaHtml." class=\"".$claseCss."\">".$texto."</".$etiquetaHtml.">";
  121. }
  122. public function renderizaTexto($texto="")
  123. {
  124. echo $texto;
  125. }
  126. }