/** * * @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())); }
/** * 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; }