');
// Esta clase aportará el contenido a la plantilla
class AportaContenido {
/**
*
* @var boolean Aporta información sobre si el usuario está registrado o no.
*/
private $registrado;
/**
* @var string Nombre del usuario
*/
private $usuario=NULL;
/**
* @var Menu Menú de la página.
*/
private $miMenu;
/**
* @var database Controlador de la base de datos
*/
private $bdd;
/**
* @var string Opción elegida por el usuario
*/
private $opcionActual;
/**
* @var boolean Usuario y clave incorrectos?
*/
private $usuario_inc=false;
/**
* @var array Permisos del usuario
*/
private $perfil;
// El constructor necesita saber cuál es la opción actual
/**
* Constructor de la clase.
* @param BaseDatos $baseDatos Manejador de la base de datos
* @param boolean $registrado usuario registrado si/no
* @param String $usuario Nombre del usuario
* @param array $perfil Permisos de acceso del usuario
* @param String $opcion Opción elegida por el usuario
*/
public function __construct($baseDatos,$registrado,$usuario,$perfil,$opcion)
{
$this->bdd=$baseDatos;
$this->miMenu=new Menu('inc/inventario.menu');
$this->registrado=$registrado;
$this->usuario=$usuario;
$this->perfil=$perfil;
$this->opcionActual=$opcion;
}
/**
* Devuelve la fecha actual
* @param string $formato formato de devolución de la fecha
* @param string $idioma idioma para formatear la fecha, p.ej. es_ES
* @return string
*/
public function fechaActual($formato='',$idioma='es_ES')
{
if ($formato=='')
$formato="%d-%b-%Y %H:%M";
setlocale(LC_TIME,$idioma);
return strftime($formato);
}
/**
*
* @return string Mensaje el usuario debe registrarse.
*/
private function mensajeRegistro()
{
/**
* @todo: tarea de prueba
*/
return 'Debe registrarse para acceder a este apartado';
}
// Procesaremos todas las invocaciones a métodos en
// la función __call()
/**
* Procesa las peticiones de contenido de la plantilla.
* @param string $metodo Método a ejecutar
* @param string $parametros Parámetros del método
* @return string Contenido devuelto por el método
*/
public function __call($metodo,$parametros)
{
switch($metodo) { // Dependiendo del método invocado
case 'titulo': // devolvemos el título
return APLICACION;
case 'usuario':
if ($this->registrado)
return "Usuario=$this->usuario";
else
return '';
case 'fecha': return $this->fechaActual();
case 'aplicacion': return APLICACION;
case 'menu': // el menú
if ($this->registrado) {
return $this->miMenu->insertaMenu();
} else {
$salida=FORMULARIO_ACCESO;
if ($this->usuario_inc) {
$salida.=USUARIO_INCORRECTO;
}
$salida.=MENSAJE_DEMO;
return $salida;
}
case 'opcion':
list($opcion,$parametro)=explode("&",$this->opcionActual);
switch($opcion) {
case 'bienvenido':
return "Menú Principal";
case 'principal':
return "Pantalla Inicial";
case 'elementos':
case 'articulos':
case 'ubicaciones':
case 'usuarios':
case 'test':
return "Mantenimiento de ".ucfirst($opcion).".";
case 'configuracion':
return 'Configuración y Preferencias.';
case 'informeInventario':return "Informe de Inventario";
case 'descuadres':return 'Informe de descuadres';
}
return '';
case 'control':
if ($this->registrado)
return 'Cerrar Sesión';
else
return '';
// Para incluir el contenido central de la página
case 'contenido':
// tendremos en cuenta cuál es la opción actual
/*echo "opcActual=$this->opcActual ";
echo "Metodo=$Metodo ";
print_r($Parametros);*/
// if (!$this->registrado) {
// return $this->mensajeRegistro();
// }
list($opcion,$parametro)=explode("&",$this->opcionActual);
switch($opcion) {
case 'principal': // contenido inicial
return '
'.
'
'.PIE;
case 'articulos':
case 'ubicaciones':
case 'test':
case 'elementos':
if ($this->perfil['Consulta']) {
$ele=new Mantenimiento($this->bdd,$this->perfil,$opcion);
return $ele->ejecuta();
} else {
return $this->mensajePermisos(ucfirst($opcion));
}
case 'usuarios':
if ($this->perfil['Usuarios']) {
$ele=new Mantenimiento($this->bdd,$this->perfil,$opcion);
return $ele->ejecuta();
} else {
return $this->mensajePermisos('Usuarios');
}
case 'bienvenido': // El usuario quiere iniciar sesión
return 'Bienvenido '.$this->usuario.'
'.
'
'.PIE;
case 'configuracion':
if ($this->perfil['Config']) {
$conf=new Configuracion();
return $conf->ejecuta();
} else {
return $this->mensajePermisos('Configuracion');
}
case 'informeInventario':
if ($this->perfil['Informe']) {
$info=new InformeInventario($this->bdd);
return $info->ejecuta();
} else {
return $this->mensajePermisos('Informes');
}
case 'descuadres':
if ($this->perfil['Informe']) {
$enlace='xml/informe'.ucfirst($opcion).'.xml';
$informe=new InformePDF($this->bdd,$enlace,$this->registrado);
$informe->imprimeInforme();
return;
} else {
return $this->mensajePermisos('Informes');
}
} // Fin del contenido
case 'usuario_incorrecto':
$this->usuario_inc=true;
return;
case 'registro': // Si está registrado mostrar bienvenida
// si no, un enlace
if($this->bEstaRegistrado) {
return "Bienvenido $this->sUsuario".
'Cerrar sesión';
} else {
return '';
}
default: // Si es cualquier otra marca
return "Marca {$metodo} queda sin procesar";
}
}
/**
*
* @param string $tipo
* @return string
*/
public function mensajePermisos($tipo)
{
return "