sorbetcms/classes/templates.class.php

148 lines
4.9 KiB
PHP
Executable File

<?php
if (!defined('entry') || !entry) {
die('Not a valid page');
}
/* ===========================
Sorbet CMS - A PHP based tumblelog CMS forked from Gelato CMS
Sorbet CMS is a free software licensed under the GPL 3.0
=========================== */
class plantillas
{
public $plantilla;
public $plantilla_cargada;
public $texto_plantilla;
public $antesBloque;
public $bloque;
public $despuesBloque;
public $bloqueFinal="";
public function __construct($plantilla)
{
$this->plantilla = ($plantilla == "") ? "tumblr" : $plantilla;
}
public function cargarPlantilla($entrada, $salida, $plantilla_usar)
{
$plantilla_usar = "themes/".$this->plantilla."/".$plantilla_usar.".htm";
if (!file_exists($plantilla_usar)) {
die("No se encuentra la plantilla :".$plantilla_usar);
} else {
if (!$fd = fopen($plantilla_usar, "r")) {
die("Error en la plantilla");
} else {
$salida_xhtml = fread($fd, filesize($plantilla_usar));
fclose($fd);
$salida_xhtml = stripslashes($salida_xhtml);
$this->texto_plantilla = $salida_xhtml;
for ($i = 0; $i < count($entrada); $i++) {
$salida_xhtml = str_replace($entrada[$i], $salida[$i], $salida_xhtml);
}
$this->plantilla_cargada = $salida_xhtml;
}
}
}
public function precargarPlantillaConBloque($entrada, $salida, $plantilla_usar, $nombreBloque)
{
$plantilla_usar = "themes/".$this->plantilla."/".$plantilla_usar.".htm";
if (!file_exists($plantilla_usar)) {
die("No se encuentra la plantilla :".$plantilla_usar);
} else {
if (!$fd = fopen($plantilla_usar, "r")) {
die("Error en la plantilla");
} else {
$salida_xhtml = fread($fd, filesize($plantilla_usar));
fclose($fd);
$salida_xhtml = stripslashes($salida_xhtml);
$this->texto_plantilla = $salida_xhtml;
$this->cargaAntesBloque($nombreBloque);
$this->cargaDespuesBloque($nombreBloque);
$this->antesBloque = $this->procesaBloque($entrada, $salida, $this->antesBloque);
$this->despuesBloque = $this->procesaBloque($entrada, $salida, $this->despuesBloque);
}
}
}
public function cargarPlantillaConBloque($entrada, $salida, $plantilla_usar, $nombreBloque)
{
$plantilla_usar = "themes/".$this->plantilla."/".$plantilla_usar.".htm";
if (!file_exists($plantilla_usar)) {
die("No se encuentra la plantilla :".$plantilla_usar);
} else {
if (!$fd = fopen($plantilla_usar, "r")) {
die("Error en la plantilla");
} else {
$salida_xhtml = fread($fd, filesize($plantilla_usar));
fclose($fd);
$salida_xhtml = stripslashes($salida_xhtml);
$this->texto_plantilla = $salida_xhtml;
$this->cargaBloque($nombreBloque);
$this->bloqueFinal .= $this->procesaBloque($entrada, $salida, $this->bloque);
}
}
}
public function procesaBloque($entrada, $salida, $bloque)
{
for ($i = 0; $i < count($entrada); $i++) {
$bloque = str_replace($entrada[$i], $salida[$i], $bloque);
}
return $bloque;
}
public function cargaBloque($nombreBloque)
{
$inicioBloque = "[bloque: ".$nombreBloque."]";
$finBloque = "[/bloque: ".$nombreBloque."]";
$ini = strpos($this->texto_plantilla, $inicioBloque)+strlen($inicioBloque);
$fin = strpos($this->texto_plantilla, $finBloque);
$this->bloque = substr($this->texto_plantilla, $ini, ($fin-$ini));
}
public function cargaAntesBloque($nombreBloque)
{
$inicioBloque = "[bloque: ".$nombreBloque."]";
$ini = strpos($this->texto_plantilla, $inicioBloque);
$this->antesBloque = substr($this->texto_plantilla, 0, $ini);
}
public function cargaDespuesBloque($nombreBloque)
{
$finBloque = "[/bloque: ".$nombreBloque."]";
$fin = strpos($this->texto_plantilla, $finBloque);
$this->despuesBloque = substr($this->texto_plantilla, ($fin+strlen($finBloque)), strlen($this->texto_plantilla));
}
public function mostrarPlantillaConBloque()
{
echo $this->antesBloque.$this->bloqueFinal.$this->despuesBloque;
}
public function mostrarPlantilla()
{
echo $this->plantilla_cargada;
}
public function renderizaEtiqueta($texto="", $etiquetaHtml="p", $claseCss="")
{
echo "<".$etiquetaHtml." class=\"".$claseCss."\">".$texto."</".$etiquetaHtml.">";
}
public function renderizaTexto($texto="")
{
echo $texto;
}
}