public static function ejecutar() { $ejecutar = ''; if (isset($_GET[self::$parametroAccion])) { $ejecutar = trim($_GET[self::$parametroAccion]); } $ejecutar = empty($ejecutar) ? array() : explode(self::$separadorAccion, $ejecutar); self::$id_accion = isset($ejecutar[1]) ? trim($ejecutar[1]) : ''; //echo __METHOD__.'['.__LINE__.']'."<br/>"; self::$id_controlador = isset($ejecutar[0]) ? trim($ejecutar[0]) : config::get('aplicacion.controlador.defecto', ''); //depurar( array( 'ejecutar', $ejecutar)); //echo __METHOD__.'['.__LINE__.']'."<br/>"; if (empty(self::$id_controlador)) { error_grave('No es posible ejecutar la petición,' . ' no hay controlador predefinido.'); } else { self::$id_controlador = strtolower(self::$id_controlador); $archivo = self::$rutaControladores . '/' . self::$id_controlador . '.php'; if (!is_readable($archivo)) { error_grave('No es posible ejecutar la petición,' . ' no existe el archivo para el controlador' . ' "' . self::$id_controlador . '".'); } else { $clase_control = 'controlador_' . self::$id_controlador; require_once $archivo; if (!class_exists($clase_control, false)) { error_grave('No es posible ejecutar la petición,' . ' no existe la clase para el controlador' . ' "' . self::$id_controlador . '".'); } else { self::$controlador = new $clase_control(); if (self::$controlador === null) { error_grave('No es posible ejecutar la petición,' . ' no se ha creado la instancia de control' . ' "' . self::$id_controlador . '".'); } else { if (empty(self::$id_accion)) { self::$id_accion = self::$controlador->accion_defecto; } if (empty(self::$id_accion)) { error_grave('No es posible ejecutar la petición,' . ' no hay accion predefinida para el controlador' . ' "' . self::$id_controlador . '".'); } else { $metodo = 'accion_' . self::$id_accion; if (!method_exists(self::$controlador, $metodo)) { error_grave('No es posible ejecutar la petición,' . ' no existe el metodo para la accion' . ' "' . self::$id_accion . '", en el controlador' . ' "' . self::$id_controlador . '".'); } else { if (!puede_ejecutar(sesion::get('usuario'), self::$id_controlador, self::$id_accion)) { error_grave('No es posible ejecutar la petición,' . ' no tiene permisos suficientes para la accion' . ' "' . self::$id_accion . '", en el controlador' . ' "' . self::$id_controlador . '".'); } else { call_user_func(array(self::$controlador, $metodo)); } } //if } //if } //if } //if } //if } //if }
//simular un usuario //$_SESSION['u']= 'alguien'; $usuario = false; if (isset($_SESSION['u'])) { $usuario = $_SESSION['u']; } $accion = false; if (isset($_GET['a'])) { $accion = $_GET['a']; } //http://localhost/daw2/?a=clientes //http://localhost/daw2/index.php?a=clientes //http://localhost/daw2/?a=articulos //control de accesos por accion... $permisos = array('clientes' => 'alguien', 'articulos' => 'alguien', 'facturas' => 'contable'); if (isset($permisos[$accion]) && puede_ejecutar($usuario, $permisos[$accion])) { if (is_readable('controladores/' . $accion . '.php')) { require 'controladores/' . $accion . '.php'; } else { echo 'acceso no valido a accion de "' . $accion . '"'; } } else { if (is_readable('controladores/' . $accion . '.php')) { require 'controladores/' . $accion . '.php'; } else { echo 'acceso no valido a accion PUBLICA de "' . $accion . '"'; } } /* if ($usuario!==false) &&