');
// 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() {
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 "