Example #1
0
 /**
  * Constuctor de la clase.
  *
  * @author Cody Roodaka <roodakazo@hotmail.com>
  * @param string $query Consulta SQL.
  * @param mixed $conn Conección al servidor MySQL.
  */
 public function __construct($query, $conn)
 {
     PRODUCTION || Profiler_Profiler::get_instance()->log_query($query);
     $this->query = mysql_query($query, $conn);
     if ($this->query === FALSE) {
         throw new Database_Exception(mysql_error($conn) . ' (error ' . mysql_errno($conn) . ')', mysql_errno($conn));
     }
     PRODUCTION || Profiler_Profiler::get_instance()->log_query($query);
 }
Example #2
0
 /**
  * Realiza una actualización en la base de datos.
  * @param string $query Consulta SQL.
  * @param array $params Arreglo con los parametros a reemplazar.
  * @return bool|int False cuando se produce un error, el numero de filas
  * afectadas si fue correcto.
  * @author Cody Roodaka <roodakazo@hotmail.com>
  * @throws Database_Exception
  */
 public function update($query, $params = array())
 {
     if ($this->is_connected()) {
         $query = $this->parse_query($query, $params);
         PRODUCTION || Profiler_Profiler::get_instance()->log_query($query);
         $rst = mysql_query($query, $this->conn);
         PRODUCTION || Profiler_Profiler::get_instance()->log_query($query);
         if ($rst === TRUE) {
             // Si fue correcto devolvemos las filas afectadas.
             return mysql_affected_rows();
         } else {
             // Generamos una excepción.
             throw new Database_Exception("Error al ejecutar la consulta: '" . mysql_error() . "'", mysql_errno());
             // Devolvemos falso para indicar que no fue correcto.
             return FALSE;
         }
     } else {
         throw new Database_Exception('No hay una conección a la base de datos establecida.', 102);
         return FALSE;
     }
 }
Example #3
0
 /**
  * Obtenemos los datos para visualizar un suceso.
  * @param array|Model_Suceso $informacion Información de un suceso.
  * @param string $class Clase para procesar. No debe ser pasado, solo es a fines de compatibilidad de herencias estáticas.
  * @return array
  */
 public static function procesar($informacion, $class = __CLASS__)
 {
     // Verifico que sea arreglo.
     if (!is_array($informacion)) {
         $informacion = $informacion->as_array();
     }
     // Limpio prefijos de la clase.
     $class = substr($class, 5);
     // ID de la cache del suceso.
     $cache_id = 'suceso_data.' . $informacion['id'] . '-' . Usuario::$usuario_id;
     // Obtenemos elemento a partir de la cache.
     $data = Cache::get_instance()->get($cache_id);
     // Verificamos si existe.
     if ($data === FALSE) {
         // Verificamos si existe.
         if (is_callable($class . '::suceso_' . $informacion['tipo'])) {
             // Procesamos el suceso.
             $data = call_user_func($class . '::suceso_' . $informacion['tipo'], $informacion);
             // Guardamos en la cache.
             Cache::get_instance()->save($cache_id, $data);
         } else {
             PRODUCTION || Profiler_Profiler::get_instance()->log("No se puede parsear '{$informacion['tipo']}' en {$class}");
             return NULL;
         }
     }
     return $data;
 }
Example #4
0
File: pdo.php Project: 4bs4/marifa
 /**
  * Consulta que realiza una modificación en la base de datos.
  *
  * Son consultas que no devuelven un conjunto de datos, simplemente las
  * filas afectadas y si es una inserción, el id del posible campo automático.
  * @param string $query Consulta SQL.
  * @param array $params Arreglo con los parametros a reemplazar.
  * @return bool|int False cuando se produce un error, un arreglo con
  * el id de la inserción y el número de filas afectadas si fue correcto.
  * @throws Database_Exception
  */
 private function write_query($query, $params = array())
 {
     // Cargamos la consulta.
     $sth = $this->make_query($query, $params);
     PRODUCTION || Profiler_Profiler::get_instance()->log_query($sth->queryString);
     // Realizamos la consulta
     $rst = $sth->execute();
     PRODUCTION || Profiler_Profiler::get_instance()->log_query($sth->queryString);
     if ($rst) {
         // Obtenemos el ID.
         try {
             $id = (int) $this->dbh->lastInsertId();
         } catch (PDOException $e) {
             // No esta soportado o no es correcto aplicarlo.
             $id = NULL;
         }
         // Devolvemos las filas afectadas.
         $cols = $sth->rowCount();
         return array($id, $cols);
     } else {
         // Hubo un problema, generamos la excepción.
         $err_data = $sth->errorInfo();
         throw new Database_Exception("Error ejecutando la consulta: '{$err_data[2]}'", $err_data[0]);
         return FALSE;
     }
 }
Example #5
0
 /**
  * Consulta que realiza una modificación en la base de datos.
  *
  * Son consultas que no devuelven un conjunto de datos, simplemente las
  * filas afectadas y si es una inserción, el id del posible campo automático.
  * @param string $query Consulta SQL.
  * @param array $params Arreglo con los parametros a reemplazar.
  * @return bool|int False cuando se produce un error, un arreglo con
  * el id de la inserción y el número de filas afectadas si fue correcto.
  * @throws Database_Exception
  */
 private function write_query($query, $params = array())
 {
     // Armamos la consulta.
     $query = $this->parse_query($query, $params);
     // Creamos la consulta.
     if (!($sth = $this->dbh->prepare($query))) {
         throw new Database_Exception("Error generando la consulta: '{$this->dbh->error}'", $this->dbh->errno);
     }
     PRODUCTION || Profiler_Profiler::get_instance()->log_query($query);
     // Ejecutamos la consulta.
     if ($sth->execute()) {
         PRODUCTION || Profiler_Profiler::get_instance()->log_query($query);
         return array($sth->insert_id, $sth->affected_rows);
     } else {
         PRODUCTION || Profiler_Profiler::get_instance()->log_query($query);
         // Error ejecutando la consulta.
         throw new Database_Exception("Error ejecutando la consulta: '{$sth->error}'", $sth->errno);
         return FALSE;
     }
 }
Example #6
0
/**
 * Directorio de la cache.
 */
define('CACHE_PATH', APP_BASE . DS . 'cache');
/**
 * Directorio de clases de 3ros.
 */
define('VENDOR_PATH', APP_BASE . DS . 'vendor' . DS);
// Cargamos funciones varias.
require_once APP_BASE . DS . 'function.php';
// Iniciamos el proceso de carga automatica de librerias.
spl_autoload_register('installer_loader_load');
spl_autoload_register('loader_load');
/**
 * Defino la URL del sitio.
 */
define('SITE_URL', get_site_url());
// Cargo el tema actual.
define('THEME', 'theme');
define('THEME_URL', SITE_URL . VIEW_PATH . THEME);
// Inicio logs.
Log::setup(APP_BASE . DS . 'log', '%d-%m-%Y.log', PRODUCTION ? Log::INFO : Log::DEBUG);
// Iniciamos el manejo de errores.
Error::get_instance()->start(DEBUG);
// Database profiler.
PRODUCTION || Profiler_Profiler::get_instance()->set_query_explain_callback('Database::explain_profiler');
PRODUCTION || Profiler_Profiler::get_instance()->log_memory('Framework memory');
// Cargamos el despachador y damos el control al controlador correspondiente.
Installer_Dispatcher::dispatch();
PRODUCTION || Profiler_Profiler::get_instance()->display();