<?php
/*
* Copyright 2017-08-31 Cámara de Comercio de Santa Marta para el Magdalena.
* Autor: Luis Montoya <lmontoya@ccsm.org.co at www.ccsm.org.co>.
* Archivo: Conexion.
*
* Licenciado bajo la Licencia Apache, Versión 2.0;
* Usted no puede usar este archivo excepto en conformidad con la Licencia.
* Usted puede obtener una copia de la Licencia en
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* A menos que sea requerido por la ley aplicable o acordado por escrito, el software
* Distribuido bajo la licencia se distribuye en una "AS IS" o "COMO ESTA" BASE,
* SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, expresas o implícitas.
* Consulte la Licencia para los permisos y Limitaciones bajo la Licencia.
*/
/**
* Description of Conexion
*
* @author Luis Montoya <lmontoya@ccsm.org.co at www.ccsm.org.co>
*/
class SicamDB extends Conexiones {
public function __construct() {
switch( VERSION_SICAM_EJECUCION ){
case 'PRODUCCION':
$this->bdProduccion();
break;
case 'PREPRODUCCION':
$this->bdDesarrollo();
break;
case 'DESARROLLO':
default:
$this->bdDesarrollo();
break;
}
$this->dsn = 'mysql:host=' . $this->HOST . ';dbname=' . $this->BD_NAME;
$this->username = $this->BD_USER;
$this->password = $this->BD_PASSWORD;
$this->options = array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8", PDO::ATTR_PERSISTENT => false );
try {
parent::__construct($this->dsn, $this->username, $this->password, $this->options);
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'ERROR: ' . $e->getMessage() ."<br />";
echo "Conexion desde la IP:". getHostByName(getHostName());
die();
}
}
public static function singleton() {
if (!isset(self::$instancia)) {
$miclase = __CLASS__;
self::$instancia = new $miclase;
}
return self::$instancia;
}
private function bdDesarrollo() {
$this->HOST = '192.185.163.242';
$this->BD_NAME = 'palmsoft_ccsm';
$this->BD_USER = 'palmsoft_ccsm';
$this->BD_PASSWORD = 'h6OCwyhh%B_)';
}
private function bdPreProduccion() {
$this->HOST = '192.185.163.242';
$this->BD_NAME = 'palmsoft_ccsm';
$this->BD_USER = 'palmsoft_ccsm';
$this->BD_PASSWORD = 'h6OCwyhh%B_)';
}
private function bdProduccion() {
$this->HOST = '190.8.177.126';
$this->BD_NAME = 'ccsm_sicam';
$this->BD_USER = 'ccsm_sicam_prod';
$this->BD_PASSWORD = 'Tu93175JJ#&@';
}
public static function iniciarTransaccion(){
$conexion = self::singleton();
if( !$conexion->inTransaction() ){
$conexion->beginTransaction();
}
}
public static function grabarTransaccion(){
$conexion = self::singleton();
if( $conexion->inTransaction() ){
$conexion->commit();
}
}
public static function cancelarTransaccion(){
$conexion = self::singleton();
if( $conexion->inTransaction() ){
$conexion->rollBack();
}
}
public static function selectUnaFila($sqlQuery, $datosQuery = array() ) {
$conexion = self::singleton();
try {
//$conexion->beginTransaction();
$sentenciaSql = $conexion->prepare($sqlQuery);
$sentenciaSql->execute($datosQuery);
$datos = $sentenciaSql->fetch(PDO::FETCH_OBJ);
//$conexion->commit();
if (!empty($datos)) {
return $datos;
}
return NULL;
} catch (PDOException $error) {
if( $conexion->inTransaction() ){
$conexion->rollBack();
}
throw $error;
}
}
public static function selectVariasFilas($sqlQuery, $datosQuery = array() ) {
$conexion = self::singleton();
try {
// $conexion->beginTransaction();
$sentenciaSql = $conexion->prepare($sqlQuery);
$sentenciaSql->execute($datosQuery);
$datos = $sentenciaSql->fetchAll(PDO::FETCH_OBJ);
// $conexion->commit();
if (!is_null($datos)) {
return $datos;
}
return NULL;
} catch (PDOException $error) {
if( $conexion->inTransaction() ){
$conexion->rollBack();
}
throw $error;
}
}
public static function insertFila($sqlQuery, $datosQuery = array() ) {
$conexion = self::singleton();
try {
//$conexion->beginTransaction();
$sentenciaSql = $conexion->prepare($sqlQuery);
$sentenciaSql->execute($datosQuery);
$ultimoInsert = $conexion->lastInsertId();
//$conexion->commit();
if (!is_null($ultimoInsert)) {
return $ultimoInsert;
}
return NULL;
} catch (PDOException $error) {
if( $conexion->inTransaction() ){
$conexion->rollBack();
}
throw $error;
}
}
public static function actualizarFila($sqlQuery, $datosQuery = array() ) {
$conexion = self::singleton();
try {
//$conexion->beginTransaction();
$sentenciaSql = $conexion->prepare($sqlQuery);
$sentenciaSql->execute($datosQuery);
$modificados = $sentenciaSql->rowCount();
//$conexion->commit();
if (!is_null($modificados)) {
return $modificados;
}
return NULL;
} catch (PDOException $error) {
if( $conexion->inTransaction() ){
$conexion->rollBack();
}
throw $error;
}
}
}