false, //No se puede poner a true porque si no al devolver los resultados de las consultas los devuelve todos como string PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, )); } catch (PDOException $e){ echo "Error al conectar".($debugMode ? " (".$e->getMessage().")" : ""); } return $link; } function bbddQueryFetch($query, $params = null) { return bbddQuery($query, $params, true); } function bbddQuery($query, $params = null, $fetchItems = false) { global $link, $debugMode; try { $res = true; if(is_null($params)) { $stmt = $link->query($query); } else { $stmt = $link->prepare($query); $res = $stmt->execute($params); } return ($fetchItems ? $stmt->fetchAll(\PDO::FETCH_ASSOC) : ($res ? $stmt : false)); } catch(\PDOException $e) { if($debugMode) { echo "

ERROR AL EJECUTAR QUERY:

".$query."

params:".json_encode($params)."

DebugSQL:".bbddComposeDebugSQL($query, $params)."

".$e->getMessage()."
"; exit($e); } else { logMessage("ERROR AL EJECUTAR QUERY: '$query'. Params ".json_encode($params)."."); logMessage("ERROR: ".$e->getMessage()); } } return false; } function bbddComposeDebugSQL($query, $params) { $res = $query; $tmp = array(); preg_match_all("/(\\:\w+)/", $query, $tmp); foreach($tmp[0] AS $k) { if($k != "") { if(is_numeric($params[$k]) || is_null($params[$k])) { $res = str_replace($k, $params[$k], $res); } else { $res = str_replace($k, '"'.$params[$k].'"', $res); } } } return $res; } function bbddLastInsertId(){ global $link; return intval($link->lastInsertId()); } function bbddSingleScalarResult($query, $params = null){ global $link; if(is_null($params)) { $stmt = $link->query($query); } else { $stmt = $link->prepare($query); $stmt->execute($params); } $res = $stmt->fetchColumn(); return (is_numeric($res) ? $res : 0); } function beginTransaction(){ global $link; if(!$link->inTransaction()) { $link->beginTransaction(); } } function commitTransaction(){ global $link; if($link->inTransaction()) { $link->commit(); } } function rollbackTransaction(){ global $link; if($link->inTransaction()) { $link->rollBack(); } } function bbddCloseConnection(){ global $link; $link = null; } function bbddScapeHTMLSpecialChars($str, $encoding = 'UTF-8') { $str = str_replace("<", "<", $str); $str = str_replace(">", ">", $str); return $str; // return htmlspecialchars($str, ENT_NOQUOTES|ENT_HTML401, $encoding, false); //No usamos esta porque codifica el & a & } function bbddUnscapeHTMLSpecialChars($str, $encoding = 'UTF-8') { return htmlentities($str, ENT_COMPAT|ENT_IGNORE, $encoding); } 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(); }