Exemplo n.º 1
0
 /**
  * Abre una conexion en base a la configuracion de la BD
  * @return \PDO
  */
 protected function getConexion($nameDB = NULL)
 {
     //Leo archivo de configuracion de BD si es la primera vez
     if (self::$config_db == NULL) {
         if (defined('JSON_CONFIG_BD')) {
             $json_basededatos = file_get_contents(PATHAPP . CONFIGURATION . JSON_CONFIG_BD);
         } else {
             general_error('Data Base', 'The configuration file of the Data Base is not especified', 'error_bd');
         }
         self::$config_db = json_decode($json_basededatos, TRUE);
     }
     //Consulta la bd actual si no se indico opcion
     if ($nameDB == NULL) {
         $nameDB = self::$config_db['actual_db'];
     }
     //Cargo las opciones de la bd actual
     $cbd = self::$config_db[$nameDB];
     $this->currentDB = $nameDB;
     $this->currentConfiguration =& self::$config_db[$nameDB];
     //Abro una conexion
     try {
         // 5.3.5 o < y luego 5.3.6 o >
         //Cuidado que charset=utf8 puede no funcar para versiones viejas y luego en opciones
         //superiores habria q usar PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
         //Por ahora uso las 2 y anda la que anda
         //Creo el dsn
         $dsn = $cbd['driverbd'] . ':host=' . $cbd['hostname'] . ';dbname=' . $cbd['database'] . ';charset=' . $cbd['charset'];
         //Abro la conexion
         $gbd = new PDO($dsn, $cbd['user'], $cbd['pass'], array(PDO::ATTR_PERSISTENT => $cbd['persistent'], PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES ' . $cbd['charset']));
         if (ENVIRONMENT == 'development') {
             $gbd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
         } else {
             $gbd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
         }
         //Retorno la conexion
         return $gbd;
     } catch (PDOException $e) {
         throw new PDOException($e->getMessage(), $e->getCode());
     }
 }
Exemplo n.º 2
0
/**
 * Ejecuta el cron indicado en el primer parametro pasado al cron
 */
function execute_cron_controller($params)
{
    //Quito guiones iniciales
    $cronClass = ltrim($params[1], '-');
    $dir = PATHAPP . 'source/crons/' . $cronClass . '.php';
    //Analiza si existe el archivo
    if (file_exists($dir)) {
        require $dir;
        $dir = explode("/", $cronClass);
        $class = $dir[count($dir) - 1];
        $cron = new $class();
        $method = 'index';
        //El segundo parametro puede ser el metodo a ejecutar o una variable
        if (isset($params[2])) {
            //Quito posibles guiones iniciales y si el primer caracter es '?' indica que es metodo
            $arg2 = ltrim($params[2], '-');
            if (substr($arg2, 0, 1) == '?') {
                $method = substr($arg2, 1);
            }
        }
        //Analiza si existe el metodo indicado
        if (method_exists($cron, $method)) {
            //Seteo los parametros, los parametros limpiados(los no usados aca) y ejecuto el metodo
            $cron->setParams($params);
            $ini = 2;
            if ($method != 'index') {
                $ini = 3;
            }
            $cron->setCleanParams(array_slice($params, $ini));
            $cron->{$method}();
        } else {
            general_error('Cron Controller Error', 'The Cron Controller ' . $cronClass . ' dont implement the method ' . $method . '()');
        }
    } else {
        general_error('Cron Controller Error', 'The Cron Controller ' . $cronClass . ' dont exist');
    }
}
Exemplo n.º 3
0
 /**
  * Realiza una comprobacion de identidad
  * Analiza que no se este suplantando la identidad del verdadero usuario
  */
 private function checkIdentity()
 {
     if (isset($_SESSION['REMOTE_ADDR']) && isset($_SESSION['HTTP_USER_AGENT'])) {
         if ($_SESSION['REMOTE_ADDR'] != $_SERVER['REMOTE_ADDR'] || $_SESSION['HTTP_USER_AGENT'] != $_SERVER['HTTP_USER_AGENT']) {
             general_error('Session - Identity', 'There are a proble with the Sesion identity');
         }
     } else {
         $_SESSION['REMOTE_ADDR'] = $_SERVER['REMOTE_ADDR'];
         $_SESSION['HTTP_USER_AGENT'] = $_SERVER['HTTP_USER_AGENT'];
     }
 }
Exemplo n.º 4
0
/**
 * Ejecuta el metodo renderizar de un componente
 * @param type $nombre
 * @param type $parametros
 * @param type url
 */
function execute_component($nombre, $parametros = NULL, $action = NULL)
{
    $componente = NULL;
    if (isset($GLOBALS['componentes'][$nombre])) {
        $comp = $GLOBALS['componentes'][$nombre];
        $dir = "";
        if (!isset($comp['location'])) {
            $dir = PATHAPP . 'source/components/' . $comp['class'] . '.php';
        } else {
            $dir = PATHAPP . $comp['location'] . '/' . $comp['class'] . '.php';
        }
        require_once $dir;
        $dir = explode("/", $comp['class']);
        $class = $dir[count($dir) - 1];
        $componente = new $class();
    }
    if ($componente != NULL) {
        //Analiza si existe el metodo render
        if (method_exists($componente, 'rendering')) {
            if ($action != NULL) {
                if (method_exists($componente, $action)) {
                    $componente->{$action}($parametros);
                } else {
                    general_error('Component Error', 'The component ' . $nombre . ' dont implement the action ' . $action . '()');
                }
            }
            return $componente->rendering($parametros);
        } else {
            general_error('Component Error', 'The component ' . $nombre . ' dont implement the method rendering()');
        }
    } else {
        general_error('Component Error', "The component {$nombre} dont exists");
    }
}
Exemplo n.º 5
0
 /**
  * Devuelve el valor segun el archivo de internacionalizacion que se encuentre cargado
  * @param string $val_key
  * @param array $params
  * @return string
  */
 function i18n_value($val_key, $params = NULL)
 {
     if (isset($this->i18nContent)) {
         if (isset($this->i18nContent[$val_key])) {
             $mensaje = $this->i18nContent[$val_key];
             //Analiza si se pasaron parametros y si se pasaron cambia los valores correspondientes
             if ($params != NULL) {
                 foreach ($params as $key => $valor) {
                     $mensaje = str_replace(":{$key}", $valor, $mensaje);
                 }
             }
             return $mensaje;
         }
     } else {
         general_error('I18n Error', 'Not specified any I18n file to make it run the i18n function');
     }
 }
Exemplo n.º 6
0
/**
 * Funcion para setear el codigo del header HTTP
 * @param int $codigo
 * @param string $text
 */
function set_estado_header($codigo = 200, $text = '')
{
    //Arreglo con todos los codigos y su respectivo texto
    $estados = array(100 => 'Continue', 101 => 'Switching Protocols', 103 => 'Checkpoint', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 306 => 'Switch Proxy', 307 => 'Temporary Redirect', 308 => 'Resume Incomplete', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Timeout', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-URI Too Long', 415 => 'Unsupported Media Type', 416 => 'Requested Range Not Satisfiable', 417 => 'Expectation Failed', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Timeout', 505 => 'HTTP Version Not Supported', 511 => 'Network Authentication Required');
    //Me fijo que el codigo no sea un string
    if ($codigo == '' or !is_numeric($codigo)) {
        general_error('Error Estado HTTP', 'El codigo de estado debe ser numerico');
    }
    //Veo si se paso o no texto y si no, le asigo el del codigo
    if (isset($estados[$codigo]) and $text == '') {
        $text = $estados[$codigo];
    }
    //Me fijo que el texto no este vacio
    if ($text == '') {
        general_error('Error Estado HTTP', 'No status text available.  Please check your status code number or supply your own message text.');
    }
    //Cargo el protocolo
    $server_protocol = isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : FALSE;
    //Segun el protocolo modifico el header HTTP
    if (substr(php_sapi_name(), 0, 3) == 'cgi') {
        header("Status: {$codigo} {$text}", TRUE);
    } elseif ($server_protocol == 'HTTP/1.1' or $server_protocol == 'HTTP/1.0') {
        header($server_protocol . " {$codigo} {$text}", TRUE, $codigo);
    } else {
        header("HTTP/1.1 {$codigo} {$text}", TRUE, $codigo);
    }
}
Exemplo n.º 7
0
    /**
     *Ejecuto el controlador correspondiente 
     */
    execute_controller($actual_controller);
    /**
     * Lee los filtros que se deben ejecutar despues del procesamiento de la variable config y delega trabajo a archivo filtros.php
     * En caso de que no haya filtros asignados no delega ningun trabajo
     */
    if (count($filtros_despues) > 0) {
        execute_filters($filtros_despues);
    }
} else {
    //Analizo si se pasa por lo menos un parametros (nombre cron), el primer parametros es el nombre del archivo por eso
    //pregunta por >= 2
    if ($argc >= 2) {
        require PATHFRA . 'modules/cron.php';
        execute_cron_controller($argv);
    } else {
        general_error('Cron Controller', 'There isent define any cron controller name');
    }
}
/*
 * Si se esta calculando el tiempo, realiza el calculo y envia la respuesta
 */
if ($performance != NULL) {
    $performance->terminate();
    $mensaje = 'The execution time of the APP is: ' . $performance->elapsed();
    $titulo = 'Performance';
    //Muestra la informacion al usuario
    display_information($titulo, $mensaje);
}
Exemplo n.º 8
0
/**
 * Ejecuta el controlador que mapeo anteriormente
 * @param type $controlador_esp 
 */
function execute_controller($controlador_esp, $uriapp = NULL)
{
    $dir = "";
    if (!isset($controlador_esp['location'])) {
        $dir = PATHAPP . 'source/controllers/' . $controlador_esp['class'] . '.php';
    } else {
        $dir = PATHAPP . $controlador_esp['location'] . '/' . $controlador_esp['class'] . '.php';
    }
    $controlador = NULL;
    $dinamic_method = FALSE;
    $method = NULL;
    //Analiza si existe el archivo
    if (file_exists($dir)) {
        require_once $dir;
        $dir = explode("/", $controlador_esp['class']);
        $class = $dir[count($dir) - 1];
        $controlador = new $class();
        //Agrego los parametros URI
        $uri_params = uri_params($controlador_esp['url'], $uriapp);
        $dinamic_method = $uri_params['dinamic'];
        $method = $uri_params['method'];
        $controlador->setUriParams($uri_params['params']);
        //Analizo si hay parametros en la configuracion
        if (isset($controlador_esp['params'])) {
            foreach ($controlador_esp['params'] as $key => $value) {
                $controlador->{$key} = $value;
            }
        }
    } else {
        //Avisa que el archivo no existe
        general_error('Controller Error', 'The controller ' . $controlador_esp['class'] . ' dont exists');
    }
    //Saca el metodo HTPP y en base a eso hace una llamada al metodo correspondiente
    $metodo = $_SERVER['REQUEST_METHOD'];
    if ($dinamic_method) {
        if (method_exists($controlador, $method)) {
            $controlador->{$method}();
        } else {
            general_error('HTTP Method Error', "The HTTP method {$method} is not supported");
        }
    } else {
        switch ($metodo) {
            case 'GET':
                $controlador->doGet();
                break;
            case 'POST':
                $controlador->doPost();
                break;
            case 'UPDATE':
                $controlador->doUpdate();
                break;
            case 'DELETE':
                $controlador->doDelete();
                break;
            case 'HEAD':
                $controlador->doHead();
                break;
            case 'TRACE':
                $controlador->doTrace();
                break;
            case 'URI':
                $controlador->doUri();
                break;
            case "OPTIONS":
                $controlador->doOptions();
                break;
            case 'CONNECT':
                $controlador->doConnect();
                break;
            default:
                general_error('HTTP Method Error', "The HTTP method {$metodo} is not supported");
        }
    }
}
Exemplo n.º 9
0
/**
 * Analiza si se envia a traves de un parametro get un error HTTP
 */
function catch_server_error()
{
    if (isset($_GET['error_apache_enola'])) {
        //Cargo el archivo con los errores
        $errores = load_framework_file('information/errorsHTTP.ini');
        $errores = parse_properties($errores);
        //Escribo el Log
        write_log('error_http', $errores[$_GET['error_apache_enola']]);
        //Muestro el error correspondiente
        general_error('Error ' . $_GET['error_apache_enola'], $errores[$_GET['error_apache_enola']], 'general_error', $_GET['error_apache_enola']);
        //No continuo la ejecucion
        exit;
    }
}