La verdad es q no ando muy bien de tiempo y no deberia hacer estas cosas, pero ya sabeis si te picas con algo... :D
Bueno, si teneis tiempo y le echais un ojo os lo agradeceria eternamente.
Código PHP:
<?
/********************************************************************************/
/* NOMBRE: SpynTPL (Clase) */
/* AUTOR: Andrés Nieto Porras */
/* FECHA: 8/6/05 */
/* DESCRIPCION: */
/* Clase que te permite crear un objeto template para reemplazar */
/* valores de variables insertadas en ficheros HTML. */
/* MODIFICACIONES: */
/* - 8/6/05 Creacion del Fichero */
/* FUNCIONAMIENTO: */
/* fichero.html */
/* <head> */
/* <title>[$titulo]</title> */
/* </head> */
/* fichero.php */
/* include('class-tpl.php'); */
/* $html = new SpynTPL(); */
/* $html->asigna('titulo','TITULO DE LA PAGINA'); */
/* $html->Muestra(); */
/********************************************************************************/
class SpynTPL
{
// -- Variables -- //
// -- V. de Configuración
var $Tini; //Tag de Inicio.
var $Tfin; //Tag de Fin.
var $directorio; //Directorio del template.
//Sistema de Cache
var $cache = false; //Cache por defecto desactivada.
var $cache_dir;
var $cache_time = 60; //Seg.
// -- V. de Template -- //
var $variables = array(); //Variables dentro del template
var $fichero; //Fichero.
// -- Constructor -- //
function SpynTPL($_dir)
{
$this->directorio = $_dir;
$this->Tini = "["; //Asignamos los tags por defecto.
$this->Tfin = "]";
}
// -- Cambiamos el directorio de la cache -- //
function CmbCacheDir($dir)
{
if (file_exists($dir))
if (!is_writable($dir))
if (!chmod($dir,0666))
die("No se puede usar el sistema de cache<br>Compruebe el sistema de directorios");
$this->cache_dir = $dir;
$this->cache = true;
}
// -- Cambiamos los tags donde meteremos las variables -- //
function CmbTags($ini,$fin)
{
$this->Tini = $ini; //Cambiamos los Tags por los que el usuario nos pasa.
$this->Tfin = $fin;
}
// -- Asignamos un valor a las variables -- //
function asigna($nombre,$valor)
{
$this->variables[$nombre] = $valor; //Asignamos valor.
}
// -- Concatena Fichero con fichero anterior -- //
function fichero ($fichero)
{
if (!$this->cache)
{
if (file_exists($this->directorio.$fichero))
$this->fichero .= $this->TrataFichero(implode("",file($this->directorio.$fichero)));
}
else
$this->fichero .= $this->FichCache($fichero);
}
// -- Comprobamos el fichero de la cache -- //
function FichCache($fichero)
{
//Creamos el fichero
$creado = time() - $this->cache_time;
echo "Ahora = ".time()."<br>Tiempo de cache: ".$this->cache_time." seg.<br>Creado: ".$creado."<br>Creacion del fichero: ";
if (file_exists($this->cache_dir.$fichero))
{
echo filemtime($this->cache_dir.$fichero);
if (filemtime($this->cache_dir.$fichero) < $creado)
{
$this->cFichCache($fichero);
echo "<br><b>Creamos el fichero</b>";
}
}
else
$this->cFichCache($fichero);
return implode("",file($this->cache_dir.$fichero));
}
function cFichCache ($fichero)
{
$fp = fopen($this->cache_dir.$fichero,"w+");
fwrite($fp,$this->TrataFichero(implode("",file($this->directorio.$fichero))));
fclose($fp);
}
// -- Muestra el template -- //
function Muestra ()
{
extract($this->variables);
eval("?>".$this->fichero."<?");
}
// -- Tratamos el fichero -- //
function TrataFichero($fichero)
{
$tmp_file = $this->TrataFile($fichero);
//$tmp_file = $this->TrataBloque($tmp_file);
$tmp_file = str_replace($this->Tini,"<?=",$tmp_file);
$tmp_file = str_replace($this->Tfin,"?>",$tmp_file);
return $tmp_file;
}
// -- Tratamos la opcion {file} -- //
function TrataFile ($fichero)
{
// -- Tratamos las inclusiones de ficheros en el template -- //
$tmp_file = $this->TagFile($fichero);
while (eregi($this->Tini."file".$this->Tfin,$tmp_file))
$tmp_file = $this->TagFile($tmp_file);
return $tmp_file;
}
// -- Importamos el fichero en caso haber un {file} -- //
function TagFile($fichero)
{
$tag = 'file';
eregi($this->Tini."$tag".$this->Tfin."[a-zA-Z0-9/\.]*".$this->Tini."/$tag".$this->Tfin,$fichero,$array);
$ini = strlen($this->Tini) + strlen($tag) + strlen($this->Tfin);
$fin = strlen($this->Tini) + strlen("/$tag") + strlen($this->Tfin);
$cuanto = strlen($array[0]) - $ini - $fin;
$file = substr($array[0],$ini,$cuanto);
return str_replace($array[0], implode("",file($this->directorio.$file)) ,$fichero);
}
// -- Importamos el fichero en caso haber un {file} -- //
function TagBloq($fichero)
{
$tag = 'bloq';
eregi($this->Tini."$tag".$this->Tfin."[a-zA-Z0-9/\.]*".$this->Tini."/$tag".$this->Tfin,$fichero,$array);
$ini = strlen($this->Tini) + strlen($tag) + strlen($this->Tfin);
$fin = strlen($this->Tini) + strlen("/$tag") + strlen($this->Tfin);
$cuanto = strlen($array[0]) - $ini - $fin;
$bloq = substr($array[0],$ini,$cuanto);
}
}
?>
Y no hace falta decir q lo podeis usar "si os sirve para algo" (lo dudo :D), sin ningun problema.
Un saludo.