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 }
public static function save() { $res = false; if (self::$cargada) { $archivo = self::filename(); if (is_writable($archivo) || !file_exists($archivo) && is_writable(dirname($archivo))) { $datos = empty(self::$datos) ? array() : self::$datos; file_put_contents($archivo, '<?php' . "\r\n" . '//Configuración del Sistema actualizada el ' . date('Y-m-d H:i:s') . "\r\n" . 'return ' . var_export($datos, true) . ';' . "\r\n"); $res = true; } else { error_grave('No es posible guardar la configuración de la aplicación.'); } //if } //if return $res; }
protected static function generarArchivo($_x_archivo, $_x_parametros, $_x_devolver = false) { if ($_x_devolver) { ob_start(); } if (is_readable($_x_archivo)) { //Preparar los parametros como variables locales antes de ejecutar //el archivo de la vista. Descomentar la linea "extract" que interese //segun se deseen extraer solo parametros con nombre de variable //valido (primera linea), o todos, pero poniendo un prefijo de variable //en los nombres de indice que no sean validos o numericos (segunda //linea) quedando como "$indice_N"... extract($_x_parametros); //--extract( $parametros, EXTR_OVERWRITE || EXTR_PREFIX_INVALID, 'indice_'); //Ejecutar la vista cargando el archivo PHP calculado. require $_x_archivo; } else { error_grave('vista no disponible (' . $_x_archivo . ').'); } //if if ($_x_devolver) { $res = ob_get_clean(); return $res; } //if }
public static function usar($modelos) { if (!is_array($modelos)) { $modelos = array((string) $modelos); } foreach ($modelos as $modelo) { $archivo = self::$rutaModelos . '/' . $modelo . '.php'; if (is_readable($archivo)) { //Los archivos de modelos se deben cargar una sola vez porque definen //una clase de objeto y no puede redefinirse una segunda vez. require_once $archivo; } else { error_grave('modelo no disponible (' . $archivo . ').'); } //if } //foreach }