. * */ 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() { /** * @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 '

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

"; } } ?>