. * */ define('PIE', '
GPL v3' . 'Sitio web creado con Apache' . 'Gestor de bases de datos mySQL' . 'PHP Language
'); define('FORMULARIO_ACCESO', '
' . 'Usuario


Clave
' . '

'); define('MENSAJE_DEMO', 'Puede Iniciar sesión con
usuario demo
contraseña demo
'); define('USUARIO_INCORRECTO', '

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

' . PROGRAMA . '' . '


' . 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 . '

' . PROGRAMA . '' . '


' . 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->crea($enlace); $informe->cierraPDF(); $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 "

No tiene permiso para acceder a " . $tipo . "

"; } } ?>