define("TITULO_PAGINA", $tituloPagina); define("SKIN", $skin); define("KEY_GOOGLE_ANALYTICS", $keyApiGoogleAnalitycs); define("USUARIO_AUTENTICADO", "usuario_autenticado"); define("ACCESO_SUPER_ADMIN", 30); define("ACCESO_ADMIN", 20); define("ACCESO_USER", 10); define("ID_ROL_ADMIN_GLOBAL", 1); /************************************************************** * 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 ***************************************************************/ 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))){ die("Error conectando a la base de datos."); } } else { if(!($link = @mysqli_connect($host, $usuario, $password))){ die("Error conectando a la base de datos."); } if(!@mysqli_select_db($link, $basedatos)){ die("Error seleccionando la base de datos."); } if(!mysqli_set_charset($link, $encoding)){ 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) { 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); } } /************************************************************** * 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 ***************************************************************/ function iniciaSession($nombreDeSesion) { if(!sessionAvailable()) { return false; } session_name($nombreDeSesion); session_start(); return sessionId(); } function finalizaSession() { if(sessionAvailable()) { session_regenerate_id(); session_destroy(); } } 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 setSessionTimeout($tiempoEnSeg = 3600) { ini_set("session.cookie_lifetime", $tiempoEnSeg); session_set_cookie_params($tiempoEnSeg); } 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 ***************************************************************/ function setUsuarioAutenticado($user) { global $usuarioAutenticado; $usuarioAutenticado = $user; setObjSession(USUARIO_AUTENTICADO, $usuarioAutenticado); } function unsetUsuarioAutenticado() { global $usuarioAutenticado; unset($usuarioAutenticado); unsetVarSession(USUARIO_AUTENTICADO); } function getUsuarioAutenticado(){ if(hayUsuarioAutenticado()){ return getObjSession(USUARIO_AUTENTICADO); }else{ return false; } } function hayUsuarioAutenticado() { return existeVarSession(USUARIO_AUTENTICADO); } function estaReg(){ $usuarioAutenticado = getUsuarioAutenticado(); if($usuarioAutenticado){ return $usuarioAutenticado->getUsuario(); }else{ return 0; } } function usuarioNivel(){ $usuarioAutenticado = getUsuarioAutenticado(); if($usuarioAutenticado){ return $usuarioAutenticado->getNivelAcceso(); }else{ return 0; } } function usuarioNombre(){ $usuarioAutenticado = getUsuarioAutenticado(); if($usuarioAutenticado){ return $usuarioAutenticado->getNombre()." ".$usuarioAutenticado->getApellidos(); }else{ return estaReg(); } } function compruebaNivel($nivel_acceso, $numError = 4){ global $urlPaginaLogin; if(!estaReg() || usuarioNivel() < $nivel_acceso){ redirecciona($urlPaginaLogin."?error1=".$numError); } } function tienePermiso($permiso){ $usuarioAutenticado = getUsuarioAutenticado(); if($usuarioAutenticado){ return $usuarioAutenticado->tienePermiso($permiso); }else{ return false; } } function compruebaPermisos($permisos, $numError = 4){ global $urlPaginaLogin; $enco = tieneAlgunPermiso($permisos); if(!$enco){ redirecciona($urlPaginaLogin."?error1=".$numError); } } function tieneAlgunPermiso($permisos){ global $urlPaginaLogin; $usuarioAutenticado = getUsuarioAutenticado(); $permisosArray = preg_split("/,/", $permisos); if($usuarioAutenticado){ foreach($permisosArray AS $permiso){ if(tienePermiso($permiso)){ return true; } } } return false; } function compruebaRol($idRol, $numError = 4){ global $urlPaginaLogin; $usuarioAutenticado = getUsuarioAutenticado(); if(!$usuarioAutenticado || !$usuarioAutenticado->tieneRol($idRol)){ redirecciona($urlPaginaLogin."?error1=".$numError); } } function compruebaAlgunRol($roles, $numError = 4){ global $urlPaginaLogin; $usuarioAutenticado = getUsuarioAutenticado(); $encontradoRol = false; if($usuarioAutenticado && is_array($roles)){ foreach($roles AS $idRol){ if($usuarioAutenticado->tieneRol($idRol)){ $encontradoRol = true; break; } } } if(!$encontradoRol){ redirecciona($urlPaginaLogin."?error1=".$numError); } } function compruebaAutenticado($numError = 3){ global $urlPaginaLogin; $usuarioAutenticado = getUsuarioAutenticado(); if(!$usuarioAutenticado){ redirecciona($urlPaginaLogin."?error1=".$numError); } } /* Funcion para generar passwords desde la web o desde el admin */ function nuevoPassword($len=6){ $i=0; srand(date("s")); while($i<$len){ $str.=chr((rand()%26)+97); $i++; } return $str; } function generaIdentificador(){ return session_id().time(); } /************************************************************** * 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==""); }