define("TITULO_PAGINA", $tituloPagina); define("SKIN", $skin); define("KEY_GOOGLE_ANALYTICS", $keyApiGoogleAnalitycs); define("DOCUMENTS_API_URL", $viafirmaUrl); define("DOCUMENTS_CONSUMER_KEY", $viafirmaConsumerKey); define("DOCUMENTS_CONSUMER_SECRET", $viafirmaConsumerSecret); define("BASEDATOS_MOTOR_MYSQL", "mysql"); define("BASEDATOS_MOTOR_POSTGRESQL", "postgresql"); function conectarBBDD($host = null, $basedatos = null, $usuario = null, $password = null, $port = null, $encoding = null) { global $motorBBDD,$usuarioBBDD,$passwordBBDD,$nombreBBDD,$hostBBDD,$portBBDD,$encodingBBDD; $host = (is_null($host) ? $hostBBDD : $host); $basedatos = (is_null($basedatos) ? $nombreBBDD : $basedatos); $usuario = (is_null($usuario) ? $usuarioBBDD : $usuario); $password = (is_null($password) ? $passwordBBDD : $password); $port = (is_null($port) ? $portBBDD : $port); $encoding = (is_null($encoding) ? $encodingBBDD : $encoding); if(esMotorPostgreSqlBBDD()) { $port = (is_null($port) ? "5433" : $port); $connectionString = "host=$host port=$port dbname=$basedatos user=$usuario password=$password"; if(!($link = pg_connect($connectionString))){ http_response_code(400); die("Error conectando a la base de datos."); } } else { if(!($link = @mysqli_connect($host, $usuario, $password))){ http_response_code(400); die("Error conectando a la base de datos."); } if(!@mysqli_select_db($link, $basedatos)){ http_response_code(400); die("Error seleccionando la base de datos."); } if(!mysqli_set_charset($link, $encoding)){ http_response_code(400); die("Error estableciendo encoding (".$encoding.") la base de datos."); } } return $link; } function desconectarBBDD($lnk = null){ global $link; $lnk = (is_null($lnk) ? $link : $lnk); if(isset($lnk)) { if(esMotorPostgreSqlBBDD()) { pg_close($lnk); } unset($lnk); } } function queryBBDD($query, $muestraError = false){ if(esMotorPostgreSqlBBDD()) { $res = pg_query($query); } else { global $link; $res = mysqli_query($link, $query); } if(!$res) { error_log("ERROR AL EJECUTAR: '$query' ".mysql_error()); if($muestraError) { echo "
".mysql_error().""; } return false; } return $res; } function realScapeStringBBDD($campo, $esDeForm = false){ if(esMotorPostgreSqlBBDD()) { return pg_escape_string(($esDeForm ? $_POST[$campo] : $campo)); } else { global $link; if(get_magic_quotes_gpc()) { return mysqli_real_escape_string($link, mysqli_escape_string($link, $esDeForm ? $_POST[$campo] : $campo)); }else{ return mysqli_real_escape_string($link, ($esDeForm ? $_POST[$campo] : $campo)); } } } function fetchArrayBBDD($q){ if(esMotorPostgreSqlBBDD()) { return pg_fetch_array($q); } else { return mysqli_fetch_array($q); } } function freeResultBBDD($q){ if(esMotorPostgreSqlBBDD()) { return pg_free_result($q); } else { return mysqli_free_result($q); } } function insertIdBBDD(){ if(esMotorPostgreSqlBBDD()) { return pg_las_oid(); } else { global $link; return mysqli_insert_id($link); } } function numRowsBBDD($q){ if(esMotorPostgreSqlBBDD()) { return pg_num_rows($q); } else { return mysql_num_rows($q); } } function beginTransaction(){ if(esMotorPostgreSqlBBDD()) { return @pg_query("BEGIN"); } else { global $link; return @mysqli_query($link, "BEGIN"); } } function commitTransaction(){ if(esMotorPostgreSqlBBDD()) { return @pg_query("COMMIT"); } else { global $link; return @mysqli_query($link, "COMMIT"); } } function rollbackTransaction(){ if(esMotorPostgreSqlBBDD()) { return @pg_query("ROLLBACK"); } else { global $link; return @mysqli_query($link, "ROLLBACK"); } } /* * Para que funcione el export a CSV es necesario que el usuario de MySql tenga el permiso de file: * GRANT FILE ON *.* TO 'john'@'localhost';flush privileges; */ function exportToCsvBBDD($tableName, $fileOutputName, $headers = null, $tableColsFrom = "", $tmpDir = "") { includeInc("archivos"); if(!esMotorMySqlBBDD()) { exit("BASEDATOS: Solo se puede exportar a CVS con BBDD MySql"); } if($tmpDir == "") { //Miramos el directorio de MySql $sql = "SELECT @@secure_file_priv AS tmpDir;"; $sqlQ = queryBBDD($sql); $sqlA = fetchArrayBBDD($sqlQ); freeResultBBDD($sqlQ); if(!is_null($sqlA['tmpDir']) && $sqlA['tmpDir'] != "NULL" && $sqlA['tmpDir'] != "") { $tmpDir = $sqlA['tmpDir']; } else { $tmpDir = sys_get_temp_dir(); } } else { $tmpDir = (is_dir($tmpDir) && file_exists($tmpDir) ? $tmpDir : sys_get_temp_dir()); } $tableColsFrom = ($tableColsFrom == "" ? "*" : $tableColsFrom); $tmpDir = str_replace("\\", "/", $tmpDir); $tmpDir .= (substr($tmpDir, -1, strlen(1)) === "/" ? "" : "/"); $exportTmpFile = $tmpDir.time()."csv.tmp"; $sql = "SELECT ".$tableColsFrom." INTO OUTFILE '".$exportTmpFile."' FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '".PHP_EOL."' FROM ".$tableName; //Borramos el fichero temporal si ya existía if(file_exists($exportTmpFile)) { eliminarArchivo($exportTmpFile); } //Ejecutamos la consulta if(!queryBBDD($sql)) { exit("BASEDATOS: Error al generar el CSV MySql (".mysql_error()."). SQL: ".$sql); } if(!file_exists($exportTmpFile)) { exit("BASEDATOS: PHP no existe el fichero: ".$exportTmpFile); } if(!is_readable($exportTmpFile)) { exit("BASEDATOS: PHP no tiene permisos para leer el fichero: ".$exportTmpFile); } //Descargamos el CSV if(file_exists($exportTmpFile)) { //descargarArchivo($exportTmpFile, $fileOutputName.".csv"); header('Content-Type: application/csv'); header('Content-Disposition: attachment; filename='.$fileOutputName.'.csv'); header('Pragma: no-cache'); if(!is_null($headers) && is_array($headers)) { echo utf8_decode('"=""'.implode('""";"=""', $headers).'"""'.PHP_EOL); } $fp = fopen($exportTmpFile, 'r'); if($fp){ while(($line = fgets($fp)) !== false) { if($line != "") { $line = str_replace(PHP_EOL, '', $line); $line = str_replace('"', '', $line); $line = str_replace(';', '""";"=""', $line); //$line = str_replace(';"', '"";"="', $line); //$line = str_replace('";', '"";"="', $line); echo utf8_decode('"=""'.$line.'"""'.PHP_EOL); //echo utf8_decode($line.PHP_EOL); } } fclose($fp); eliminarArchivo($exportTmpFile); } return true; } else{ return false; } } function getMotorBBDD() { global $motorBBDD; if(isset($motorBBDD)) { return $motorBBDD; } else { return BASEDATOS_MOTOR_MYSQL; } } function esMotorPostgreSqlBBDD() { return (getMotorBBDD() == BASEDATOS_MOTOR_POSTGRESQL); } function esMotorMySqlBBDD() { return (getMotorBBDD() == BASEDATOS_MOTOR_MYSQL); } if(!function_exists('mysqli_set_charset')) { function mysqli_set_charset($dbh, $charset) { return mysqli_query($dbh, "set names $charset", $dbh); } } /** * @param $nombreDeSesion * @param int $maxlifetimeMin * @param int $maxTiempoInactividadMin * @param bool $secure * @param bool $httponly * @param string $samesite None|Strict|Lax * @return bool|string */ function iniciaSession($nombreDeSesion, $maxlifetimeMin = 0, $maxTiempoInactividadMin = 0, $secure = false, $httponly = true, $samesite = '') { if(!sessionAvailable()) { return false; } $currentParams = session_get_cookie_params(); $maxlifetimeSecs = ($maxlifetimeMin <= 0 ? $currentParams["lifetime"] : $maxlifetimeMin * 60); $maxTiempoInactividadSecs = $maxTiempoInactividadMin * 60; if(!session_id()) { session_name($nombreDeSesion); if(PHP_VERSION_ID < 70300) { session_set_cookie_params($maxlifetimeSecs, ($samesite != "" ? "/;SameSite=$samesite" : "/"), $currentParams["domain"], $secure, $httponly); } else { $sessionParams = [ 'lifetime' => $maxlifetimeSecs, 'path' => '/', 'domain' => $currentParams["domain"], 'secure' => $secure, 'httponly' => $httponly, ]; if($samesite != "") { $sessionParams['samesite'] = $samesite; } session_set_cookie_params($sessionParams); } session_start(); } /** Si lleva mas de $maxTiempoInactividad segundos de inactividad */ if($maxTiempoInactividadSecs > 0 && isset($_SESSION['ultima_actividad']) && (time() - $_SESSION['ultima_actividad'] > $maxTiempoInactividadSecs)) { session_unset(); session_destroy(); session_regenerate_id(true); } $_SESSION['ultima_actividad'] = time(); return sessionId(); } function finalizaSession() { if(sessionAvailable()) { session_destroy(); session_regenerate_id(); } } function sessionId() { return session_id(); } function sessionStarted() { //return (session_status() != PHP_SESSION_NONE); return (sessionId() != ''); } function existeVarSession($nombreVar) { return (sessionAvailable() && isset($_SESSION[$nombreVar])); } function getVarSession($nombreVar, $valorDefecto = null) { if(sessionAvailable() && existeVarSession($nombreVar)) { return $_SESSION[$nombreVar]; } else { return $valorDefecto; } } function setVarSession($nombreVar, $nuevoValor) { if(sessionAvailable()) { $_SESSION[$nombreVar] = $nuevoValor; } } function getObjSession($nombreVar, $valorDefecto = null) { if(sessionAvailable() && existeVarSession($nombreVar)) { return unserialize($_SESSION[$nombreVar]); } else { return $valorDefecto; } } function setObjSession($nombreVar, $nuevoValor) { if(sessionAvailable()) { $_SESSION[$nombreVar] = serialize($nuevoValor); } } function unsetVarSession($nombreVar) { if(sessionAvailable()) { unset($_SESSION[$nombreVar]); } } function sessionAvailable() { global $argc; return !isset($argc); } /************************************************************** * VERSIÓN UTILIZADA: Versión 2.2.3 * PROGRAMADO POR: Javier Rico Motos y Sergio Santos Belmonte * EMAIL: info@zuinqstudio.com * WEB: http://www.zuinqstudio.com * © Todos los derechos reservados ***************************************************************/ include_once("../includes/clases/utils/includes.inc.php"); function includeClases($clases = "", $pathBase = "../includes/clases"){ $todos = ($clases==""); $clases = explode(",",strtolower($clases)); if(in_array("convocatoria",$clases) || $todos){ include_once($pathBase."/convocatoria.class.php"); } if(in_array("etiqueta",$clases) || $todos){ include_once($pathBase."/etiqueta.class.php"); } if(in_array("solicitud",$clases) || $todos){ include_once($pathBase."/solicitud.class.php"); } }