'; 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)) ); } ?>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; } } ?>