/**
 *
 * @param resource $conn        	
 * @param string $tabla        	
 * @param string $param        	
 * @param string $SQLserverNameBack        	
 * @return array
 */
function insertar($conn, $tabla, $param, $SQLserverName)
{
    global $respError;
    $existeTabla = existeTabla($conn, $tabla, COMPOROBAR_TABLA);
    if ($existeTabla === FALSE) {
        // La tabla no existe
        $crearTablaDIS = crearTablaDIS($conn, $tabla);
        /* El resultado de la creación de la tabla nos da igual ya que si hay algún error de creación
         * y el debug está habilitado, se guardará el error en un fichero.*/
    }
    // La tabla existe
    $resultadoInsert = queryInsert($conn, $tabla, $param, $SQLserverName);
    /* El resultado del insert nos da igual, ya que si ha sido correcto está todo OK.
     * Si el resultado es un error, se almacena la query en un fichero de texto,
     * pero no interrumpimos la ejecución del método.*/
    return array(__FUNCTION__ . "Result" => array("resultadoOperacion" => $respError->sinErrores()));
}
Example #2
0
/**
 * Inserta un registro en la tabla de auditoría, si no existe la tabla la crea.
 * Si hay algún error al insertar, crea un fichero log_error.
 * 
 * @param resource $conn
 *        	Recurso que contiene la conexión SQL
 * @param int $farmacia
 *        	Número de farmacia con cuatro dígitos.
 * @param string $pregunta
 *        	Texto request o response a auditar.
 * @param string $tipoPeticion
 *        	Nombre del método que se va a auditar.
 * @param int $tiempoRespuesta
 *        	En el caso que sea una respuesta, el cálculo del tiempo
 *        	transcurrido entre la petición y la respuesta.
 * @return array Error SQL si lo hay, NULL si todo correcto.
 */
function auditar($conn, $farmacia, $pregunta, $tipoPeticion, $tiempoRespuesta = 0)
{
    $pregunta = cambiarComilla(utf8_decode($pregunta));
    $respError = new respuestaError();
    /*require_once 'include/chilkat_9_5_0.php';
    	 $gzip = new CkGzip();
    	 
    	 $success = $gzip->UnlockComponent('ANTONIZIP_C45PQWhK4Pwf');
    	 if ($success != true) {
    	 print $gzip->lastErrorText() . "\n";
    	 exit();
    	 }
    	 //print strlen(base64_encode($pregunta)) . "\n";
    	 //print $pregunta . "\n";
    	 //$preguntaArray = new CkByteData();
    	 //$preguntaArray->appendStr($pregunta);
    	 //$gzip->CompressString($pregunta, "UTF-8", $preguntaArray);
    	 //print $preguntaArray->getSize() . "\n";
    	 //$pregunta2 = $gzip->CompressStringENC($pregunta);
    	 //$pregunta2 = $gzip->uncompressStringENC(base64_encode($pregunta));
    	 //print $pregunta2 . "\n";*/
    //TODO poner en la auditoría de Dephi el deflate para poder ver los resultados, mientras no este hecho hay que dejarlo comentado
    //$pregunta = zlib_encode($pregunta, ZLIB_ENCODING_GZIP);
    //$pregunta = gzcompress($pregunta, 9);
    //$pregunta = gzdeflate($pregunta, 9); // El que más comprime. Este funciona.
    //$pregunta = gzencode($pregunta, 9); // El que menos comprime.
    $tabla = PREFIJO_TABLA_AUDITORIA . date("ym");
    if (!($existeTabla = existeTabla($conn, $tabla, COMPOROBAR_TABLA))) {
        // La tabla no existe
        if ($crearTablaAudi = crearTablaAudi($conn, $tabla) != null) {
            return $crearTablaAudi;
        }
    }
    $CN = CN . " SERIALNUMBER: " . $_SERVER["CERT_SERIALNUMBER"];
    $tiempoRespuesta = intval($tiempoRespuesta);
    $parametros = array($CN, $farmacia, base64_encode($pregunta), $tipoPeticion, $tiempoRespuesta, VERSION, $_SERVER["COMPUTERNAME"]);
    $sql = "insert into {$tabla}\n\t\t(CN\n\t\t,numeroFarmacia\n\t\t,preguntaSOAP\n\t\t,tipoPeticion\n\t\t,tiempoRespuesta\n\t\t,version\n\t\t,nombreServidor)\n\tvalues\n\t\t(?\n\t\t,?\n\t\t,?\n\t\t,?\n\t\t,?\n\t\t,?\n\t\t,?)";
    // Insertar el registro en la tabla
    //////////////////////////////////////////////////////
    if ($farmacia == FARMACIA_DEBUG or strlen(FARMACIA_DEBUG) == 0 or $farmacia == "err") {
        if (DEBUG & DEBUG_QUERY) {
            $mensaje = "--[" . date("c") . "] Farmacia: {$farmacia} \n";
            $mensaje .= "--Query hecha en el fichero: " . __FILE__ . ", en la línea: " . __LINE__ . "\n";
            error_log($mensaje . verQuery($sql, $parametros) . "\r\n", 3, DIRECTORIO_LOG . __FUNCTION__ . "_" . date("YmdH") . ".log");
        }
    }
    $stmt = sqlsrv_query($conn, $sql, $parametros);
    if ($stmt === false) {
        if (($errors = sqlsrv_errors()) != null) {
            $SQLSTATE = $errors[0]["SQLSTATE"];
            $Cerror = $errors[0]["code"];
            $Merror = utf8_encode($errors[0]["message"]);
            if ($farmacia == FARMACIA_DEBUG or strlen(FARMACIA_DEBUG) == 0 or $farmacia == "err") {
                if (DEBUG & DEBUG_ERROR_SQL) {
                    $mensaje = "--[" . date("c") . "] Farmacia: {$farmacia} código: {$Cerror} mensaje: {$Merror}" . "\n";
                    $mensaje .= "--Error en el fichero: " . __FILE__ . ", en la línea: " . __LINE__ . "\n";
                    error_log($mensaje . verQuery($sql, $parametros) . "\r\n", 3, DIRECTORIO_LOG . __FUNCTION__ . "_" . date("YmdH") . ".log");
                }
            }
            sqlsrv_close($conn);
            return $respError->errorSQL($SQLSTATE, $Cerror, $Merror, $tipoPeticion, $farmacia);
        }
    }
    // Salir con el valor de resultado a NULL
    //////////////////////////////////////////////////////
    sqlsrv_free_stmt($stmt);
    //return $respError->errorSQL("SQLSTATE", "Cerror", "Merror", $tipoPeticion, $farmacia);
    return NULL;
}