/*
code
Recibe: un vector de variables, globales (get o post)
Devuelve: una cadena codificada con todos los valores
Tarea: codifica el vector GET o POST para volver al mismo ambiente anterior
*/
function code($array){
return base64_encode(serialize($array));
}
/*
decode
Recibe: un string codificado con code
Devuelve: el vector correspondiente
Tarea: Regenera el vector GET o POST para volver al mismo ambiente anterior
*/
function decode($string){
return unserialize(base64_decode($string));
}
/*
* encripta
* Recibe: un string
* Devuelve: una cadena codificada en base a un numero random
*/
function encripta($cadena){
$array=array();
$c=strlen($cadena);
for($i=0; $i<$c; $i++){
$array[]=chr(ord($cadena[$i])+date("d"));
}
return implode('',$array);
}
/*
* desencripta
* Recibe: un string
* Devuelve: una cadena decodificada en base a un numero random
*/
function desencripta($cadena){
$array=array();
$c=strlen($cadena);
for($i=0; $i<$c; $i++){
$array[]=chr(ord($cadena[$i])-date("d"));
}
return implode('',$array);
}
/*
* extension
* recibe: una cadena de archivo
* devuelve:la extensión del archivo
*/
function extension($cadena){
return substr($cadena,strrpos($cadena,'.')+1,strlen($cadena));
}
/*
* duplicar
* Recibe: un path de una carpeta y un path destino
* Devuelve: nada
* Copia recursivamente una estructura de directorios y archivos
*/
function duplicarDir($folder,$folderDest){
if(!file_exists($folderDest) || !is_dir($folderDest)){
mkdir($folderDest);
}
$dp=opendir($folder);
while($elem=readdir($dp)){
//echo $elem.'
';
if(is_dir($folder.'/'.$elem) && $elem!='.' && $elem!='..'){
duplicarDir($folder.'/'.$elem,$folderDest.'/'.$elem);
}
elseif(!is_dir($folder.'/'.$elem)){
copy($folder.'/'.$elem,$folderDest.'/'.$elem);
}
}
}
/*
* eraseDir
* Recibe: un path de una carpeta
* Devuelve: nada
* Elimina recursivamente una estructura de directorios y archivos
*/
function eraseDir($folder){
if(!file_exists($folder) || !is_dir($folder)){
return false;
}
$dp=opendir($folder);
while($elem=readdir($dp)){
//echo $elem.'
';
if(is_dir($folder.'/'.$elem) && $elem!='.' && $elem!='..'){
eraseDir($folder.'/'.$elem);
}
elseif(!is_dir($folder.'/'.$elem)){
unlink($folder.'/'.$elem);
}
}
closedir($dp);
rmdir($folder);
}
/*
* checkFileType
* Recibe: array de tipos correctos, un type de archivo
* Devuelve: bool
* Indica si el archivo se encuentra dentro de los types especificados
*/
function checkFileType($aTypes,$fileTipe){
$ok=false;
$fileTipe=strtolower($fileTipe);
foreach($aTypes as $item){
if($item=='gifJpg'){
if(ereg('gif',$fileTipe) || ereg('jpeg',$fileTipe) || ereg('pjpeg',$fileTipe) || ereg('jpg',$fileTipe)){
$ok=true;
break;
}
}
if($item=='gif'){
if(ereg('gif',$fileTipe)){
$ok=true;
break;
}
}
if($item=='jpg'){
if(ereg('jpeg',$fileTipe) || ereg('pjpeg',$fileTipe) || ereg('jpg',$fileTipe)){
$ok=true;
break;
}
}
if($item=='video'){
if(ereg('video',$fileTipe)){
$ok=true;
break;
}
}
}
return $ok;
}
/*
* checkmail
* Recibe: string de cadena
* Devuelve: bool
* Indica si el mail es válido
*/
function checkmail($email){
if(!eregi("^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$", $email)) {
return false;
}
else{
return true;
}
}
/*
* cutText
* Permite tomar una porción de una cadena sin danar las palabras
*
*/
function cutText($string, $length) {
if(strlen($string)<=$length){
return $string;
}
while ($string[$length] != " " && $length>0) {
$length--;
}
return substr($string, 0, $length);
}
function cutHtmlText($cadena,$longitud){
return cutText($cadena,$longitud);
/*$cadenaLimpia=strip_tags($cadena);
$subcadenaLimpia=cutText($cadenaLimpia,$longitud);
$ultimaPalabra=substr($subcadenaLimpia,strrpos($subcadenaLimpia,' '));
$cantPalabras=substr_count($subcadenaLimpia, $ultimaPalabra);
$fragmentos=explode($ultimaPalabra,$cadena);
$cadenaFinal='';
for($i=0;$i<$cantPalabras;$i++){
$cadenaFinal.=$fragmentos[$i];
}
return $cadenaFinal;*/
}
function escalarImagen($ruta,$maxW,$maxH){
$medidas=getimagesize($ruta);
if($medidas[0]>$medidas[1]){
$anchoFinal=$maxH;
$altoFinal=($medidas[1]*$maxH)/$medidas[0];
}
else{
$altoFinal=$maxH;
$anchoFinal=($medidas[0]*$altoFinal)/$medidas[1];
}
return array($anchoFinal,$altoFinal);
}
function javascript_decode ($source) {
$decodedStr = "";
$pos = 0;
$len = strlen ($source);
while ($pos < $len) {
$charAt = substr ($source, $pos, 1);
if ($charAt == '%') {
$pos++;
$charAt = substr ($source, $pos, 1);
if ($charAt == 'u') {
// we got a unicode character
$pos++;
$unicodeHexVal = substr ($source, $pos, 4);
$unicode = hexdec ($unicodeHexVal);
$entity = "". $unicode . ';';
$decodedStr .= utf8_encode ($entity);
$pos += 4;
}
else {
// we have an escaped ascii character
$hexVal = substr ($source, $pos, 2);
$decodedStr .= chr (hexdec ($hexVal));
$pos += 2;
}
} else {
$decodedStr .= $charAt;
$pos++;
}
}
return $decodedStr;
}
function anyEmpty(){
$arguments=func_get_args();
foreach($arguments as $item){
if(trim($item)==''){
return true;
}
}
return false;
}
function cleanHtml($sSource, $aAllowedTags = false){
$aAllowedProperties = 'font|font-size|font-weight|color|text-align|text-decoration|margin|margin-left|margin-top|margin-bottom|margin-right|padding|padding-top|padding-left|padding-right|padding-bottom|width|height';
$aDisabledAttributes = array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavaible', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragdrop', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterupdate', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmoveout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload');
$sSource = stripcslashes( $sSource );
$sSource = strip_tags( $sSource, $aAllowedTags );
return preg_replace('/\s(' . implode('|', $aDisabledAttributes) . ').*?([\s\>])/', '\\2', preg_replace('/<(.*?)>/ie', "'<' . preg_replace(array('/javascript:[^\"\']*/i', '/(" . implode('|', $aDisabledAttributes) . ")[ \\t\\n]*=[ \\t\\n]*[\"\'][^\"\']*[\"\']/i', '/\s+/'), array('', '', ' '), stripslashes('\\1')) . '>'", strip_tags($sSource, $aAllowedTags)) );
}
?>
//////////////////////////////////INTERFACE SQL SERVER//////////////////////////
class sqlServerInterface{
/*
* Propiedades Públicas
*/
/*
* Propiedades Privadas
*/
var $con;
var $host;
var $user;
var $pass;
var $base;
var $error;
var $cantQueries;
/**
* Constructor
*
* @param int $tipo
* @param string $host
* @param string $user
* @param string $pass
* @param string $base
* @return mysqlInterface
*/
function sqlServerInterface($host,$user,$pass,$base){
$this->host=$host;
$this->user=$user;
$this->pass=$pass;
$this->base=$base;
$this->cantQueries=0;
}
/**
* Publico: conecta con base de datos
*
* @return bool
*/
function conexion(){
if(!$this->con=mssql_connect($this->host,$this->user,$this->pass)){
$this->error('Error en conexión');
return false;
}
if(!mssql_select_db($this->base,$this->con)){
$this->error('Error en selección de base de datos');
return false;
}
return true;
}
/**
* Público: efectúa un pedido a la base de datos
*
* @param string sentencia $sql
* @return recurso resource
*/
function query($sql){
$this->cantQueries++;
$query=mssql_query($sql,$this->con);
if(!$query){
$this->error(mssql_error());
return false;
}
return $query;
}
/**
* Publico: ejectuta un fetch asociado
*
* @param recurso $query
* @return array
*/
function fetch_assoc($query){
return mssql_fetch_assoc($query);
}
/**
* Publico: ejecuta un fetch no asociado
*
* @param recurso $query
* @return array
*/
function fetch_row($query){
return mssql_fetch_row($query);
}
/**
* Publico: ejecuta un num_rows
*
* @param recurso $query
* @return int
*/
function num_rows($query){
return mssql_num_rows($query);
}
/**
* Publico: ejecuta un num_fields
*
* @param recurso $query
* @return int
*/
function num_fields($query){
return mssql_num_fields($query);
}
/**
* Publico: ejecuta un field_name
*
* @param recurso $query
* @param int $pos
* @return string campo
*/
function field_name($query,$pos){
return mssql_field_name($query,$pos);
}
/**
* Publico: ejectua un result
*
* @param recurso $query
* @param int $row
* @param int $field
* @return mixed valor
*/
function result($query,$row,$field){
if($this->num_rows($query)==0){
return false;
}
return mssql_result($query,$row,$field);
}
/**
* Publico: devuelve el ultimo id insertado
*
* @return primary key
*/
function last_id(){
$query=$this->query('SELECT SCOPE_IDENTITY()');
return $this->result($query,0,0);
}
/**
* Publico: devuelve la cantidad de filas afectadas
*
* @return int
*/
function affected_rows(){
return mssql_rows_affected($this->con);
}
/**
* Publico: Manejo de errores
*
* @param string texto error $string
*/
function error($string){
Error::manage($string);
}
}
////////////////////////////////////INTERFACE MYSQL /////////////////////////////////////////
class mysqlInterface{
/*
* Propiedades Públicas
*/
/*
* Propiedades Privadas
*/
var $con;
var $host;
var $user;
var $pass;
var $base;
var $error;
var $cantQueries;
/**
* Constructor
*
* @param int $tipo
* @param string $host
* @param string $user
* @param string $pass
* @param string $base
* @return mysqlInterface
*/
function mysqlInterface($host,$user,$pass,$base){
$this->host=$host;
$this->user=$user;
$this->pass=$pass;
$this->base=$base;
$this->cantQueries=0;
}
/**
* Publico: conecta con base de datos
*
* @return unknown
*/
function conexion(){
if(!$this->con=mysql_connect($this->host,$this->user,$this->pass)){
$this->error('Error en conexión');
return false;
}
if(!mysql_select_db($this->base,$this->con)){
$this->error('Error en selección de base de datos');
return false;
}
return true;
}
/**
* Público: efectúa un pedido a la base de datos
*
* @param unknown_type $sql
* @return unknown
*/
function query($sql){
$this->cantQueries++;
$query=mysql_query($sql,$this->con);
if(!$query){
$this->error(mysql_error());
return false;
}
return $query;
}
/**
* Publico: ejectuta un fetch asociado
*
* @param recurso $query
* @return array
*/
function fetch_assoc($query){
return mysql_fetch_assoc($query);
}
/**
* Publico: ejecuta un fetch no asociado
*
* @param recurso $query
* @return array
*/
function fetch_row($query){
return mysql_fetch_row($query);
}
/**
* Publico: ejecuta un num_rows
*
* @param recurso $query
* @return int
*/
function num_rows($query){
return mysql_num_rows($query);
}
/**
* Publico: ejecuta un num_fields
*
* @param recurso $query
* @return int
*/
function num_fields($query){
return mysql_num_fields($query);
}
/**
* Publico: ejecuta un field_name
*
* @param recurso $query
* @param int $pos
* @return string campo
*/
function field_name($query,$pos){
return mysql_field_name($query,$pos);
}
/**
* Publico: ejectua un result
*
* @param recurso $query
* @param int $row
* @param int $field
* @return mixed valor
*/
function result($query,$row,$field){
if($this->num_rows($query)==0){
return false;
}
return mysql_result($query,$row,$field);
}
/**
* Publico: devuelve el ultimo id insertado
*
* @return primary key
*/
function last_id(){
$query=$this->query('SELECT LAST_INSERT_ID()');
return $this->result($query,0,0);
}
/**
* Publico: devuelve la cantidad de filas afectadas
*
* @return int
*/
function affected_rows(){
return mysql_affected_rows();
}
/**
* Publico: Manejo de errores
*
* @param string texto error $string
*/
function error($string){
Error::manage($string);
}
}
//////////////////////////////// CONEXION GENERICA ////////////////////////////////////////////
class DBManager{
/*
* Propiedades Públicas
*/
var $error;
/*
* Estático: Devuelve un objeto de interacción con la base
* de datos que corresponda
*
* @param int $tipo
* @param string $host
* @param string $user
* @param string $pass
* @param string $base
* @return object
*/
function nuevaConexion($tipo,$host,$user,$pass,$base){
switch($tipo){
case 'mysql':
$obj=new mysqlInterface($host,$user,$pass,$base);
break;
case 'sqlserver':
$obj=new sqlServerInterface($host,$user,$pass,$base);
break;
default:
$obj=false;
break;
}
if(!$obj->conexion()){
$this->error=$obj->error;
$obj=false;
}
return $obj;
}
/**
* Publico: testea una conexion y una sentencia sql
*
*@param int $tipo
* @param string $host
* @param string $user
* @param string $pass
* @param string $base
* @param string $sql
* @return bool
*/
function testearConexion($tipo,$host,$user,$pass,$base,$sql){
$con=$this->nuevaConexion($tipo,$host,$user,$pass,$base);
if(!$con){
return false;
}
if(!$con->query($sql)){
return false;
}
return true;
}
}
?>