fichier * @desc Permet de tester si le fichier possede une extension **/ function file_has_extension($file) { return eregi('.*\.[a-z]*$',$file); } /** * @return string extension du fichier * @param $file => fichier * @desc Recupere l'extension d'un fichier **/ function file_get_extension($file) { $parts = pathinfo($file); if (isset($parts['extension'])) { return ($parts['extension']); } return (false); } /** * @return booleen : Transfert ok ou Array liste erreur * @param array $folder : Chemin d'accès au fichier * @param array $fichier : Fichier à uploader $_FILES['nom_champ'] * @param array $nom : Nom du fichier final avec extension ! (facultatif : nom du fichier uploadé) * @param array $only_accept_extens : Defini les extensions autorisés (facultatif : nom du fichier uploadé) * @desc Telecharge un fichier sur le serveur => Necessite la bibliotheque "string"; **/ function file_upload($folder,$fichier,$nom=false,$only_accept_extens=array()) { $Erreur = array(); /* dossier sera déplacé par defaut à la racine */ if(string_is_null($folder)){ $folder = ""; } ///nom du fichier $tmp_file = $fichier['tmp_name']; //test si fichier bien uploadé if(!is_uploaded_file($tmp_file) ) {$Erreur[] = "Le fichier ".$tmp_file." est introuvable"; } // on vérifie maintenant l'extension $type_file = $fichier['type']; // on copie le fichier dans le dossier de destination $name_file = filename_convert($fichier['name']); if(!$nom) $nom=$name_file; if(!move_uploaded_file($tmp_file, $folder.$nom)) { $Erreur[] = "Impossible de copier le fichier ".$name_file." dans ".$folder.""; } @chmod($folder.$nom,0777); return sizeof($Erreur)>0?$Erreur:true; } /////////////// //POUR INFO /* "application/x-gzip-compressed" => ".tar.gz, .tgz", "application/x-zip-compressed" => ".zip", "application/x-tar" => ".tar", "text/plain" => ".txt, .inc", "text/html" => ".html, .htm, .php", "image/bmp" => ".bmp, .ico", "image/gif" => ".gif", "image/pjpeg" => ".jpg, .jpeg", "image/jpeg" => ".jpg, .jpeg", "application/notepad" "application/x-shockwave-flash" => ".swf", "application/msword" => ".doc, .rtf", "application/vnd.ms-excel" => ".xls", "application/octet-stream" => ".exe, .fla", "application/pdf" => ".pdf", "application/vnd.ms-powerpoint" => ".ppt" //*/ /** * @return booleen * @param string folder : Chemin ou l'on doit créer le fichier * @param string fileName : Nom du fichier final * @param string text : Texte à insérer * @param string ChMod : Droit du fichier (défaut : tous les droits) * @desc Crée un fichier fileName dans folder avec text à l'intérieur (Créera le répertoire si n'existe pas) **/ function file_texte_create($folder,$fileName,$text,$ChMod = "0777"){ $text = stripslashes($text); if(!is_dir($folder)){ if(folder_create($folder)){ return false; } } $fp = fopen($folder.$fileName,"w+"); fputs($fp,$text); fclose($fp); chmod($folder.$fileName,$ChMod); } /** * @return booleen * @param string folder : Chemin ou l'on doit créer le fichier * @param string ChMod : Droit du dossier (défaut : tous les droits) * @desc Crée un dossier folder **/ function folder_create($folder,$ChMod = "0777"){ return mkdir($folder,$ChMod); } function filename_convert($fileName){ ##Enleve les espaces $fileName = trim($fileName); ##ENLEVE Tous les caractères a la con $fileName = strtr($fileName, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); $fileName = preg_replace('/([^.a-z0-9]+)/i', '_', $fileName); return $fileName; } function file_size($file){ $taille = filesize($file)/1000; $unite = "Ko"; if($taille>1000){ $taille/=1000; $unite = "Mo"; } return number_format($taille,1,",","")." ".$unite; } ?>$v){ if(!isset($tab_ori[$k]) || $tab_ori[$k]=="") $tab_ori[$k] = $tab_defaut[$k]; } return $tab_ori; } /** * @return array * @param array 1 : Tableau à traiter * @param array autre : Tableau(x) * @desc Permet de supprimer les cles du tableau 1 avec les valeurs des autres tableaux **/ function array_intersect_assoc_value() { $args = func_get_args(); $res = $args[0]; for ($i=1;$i $data) { if ( in_array($key, $args[$i]) ) { unset($res[$key]); } } } return $res; } /** * @return string * @param array $g * @param array $exclu tableau exclusion de clé * @desc String pouvant etre utilisé en get **/ function array_to_get($g,$exclu=array()) { $a = array(); foreach ($g as $k => $v) { if(!in_array($k,$exclu)) $a[] = $k .'='. $v; } return join('&',$a); } /** * Retourne la somme d'un tableau multidimensionnel * * @param array $tab * @param float $Somme * @return float $Somme */ function array_dim_sum($tab = array(),$Somme = 0){ foreach($tab as $k=>$v){ if(is_array($v)) $Somme = array_dim_sum($v,$Somme); else $Somme+=$v; } return $Somme; } /** * Retourne le maximum et le minimum des valeurs d'un tableau multidimensionnels * * @param array $tab * @param bool $new * @return array ('min','max') */ function array_dim_extreme($tab = array(),$new = true){ static $Min=0; static $Max=0; if($new){ $Min=0; $Max=0; } foreach($tab as $k=>$v){ if(is_array($v)) array_dim_extreme($v,false); else{ if($v>$Max) $Max = $v; if($v<$Min) $Min = $v; } } return array('min'=>$Min,'max'=>$Max); } ?>$v){ $temp[$k] = $v; } $GLOBALS[$VarCache][$Obj->GetId()] = $temp; return true; break; case "test": if(isset($GLOBALS[$VarCache][$Obj->GetId()])){ return true; }else{ return false; } break; case "load": if(!CacheFile($Obj,"test")){ return false; } // echobr("Chargement"); foreach($GLOBALS[$VarCache][$Obj->GetId()] as $k=>$v){ $k = "Set".ucfirst($k); // echobr($k); $Obj->{$k}($v); // echobr("-".$k); } return true; break; case "show": break; } } /** * @return booleen * @param $Obj : Objet pour le cache Necessite la presence de la methode GetId() renvoyant l'identifiant de l'objet * @param $type : Type de traitement de cache a effectuer ("save","load","test") * @desc Traitement du cache memoire **/ function Cache(&$Obj,$type = "load"){ static $CacheTab; switch($type){ case "save": $temp = array(); foreach($Obj as $k=>$v){ $temp[$k] = $v; } $CacheTab[get_class($Obj)][$Obj->GetId()] = $temp; return true; break; case "test": if(isset($CacheTab[get_class($Obj)][$Obj->GetId()])){ return true; }else{ return false; } break; case "load": if(!Cache($Obj,"test")){ echo "Inconnu
"; return false; } foreach($CacheTab[get_class($Obj)][$Obj->GetId()] as $k=>$v){ $k = ucfirst($k); $Obj->{$k}=$v; } return true; break; case "show": break; } } ?>@,;:\.\\\"\[]"; $atom = "$valid_chars+"; $quoted_user='(\"[^\"]*\")'; $word = "($atom|$quoted_user)"; $user_pat = "^$word(\.$word)*$"; $ip_domain_pat='^\[([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\]$'; $domain_pat = "^$atom(\.$atom)*$"; if (eregi($mail_pat, $email, $components)) { $user = $components[1]; $domain = $components[2]; // validate user if (eregi($user_pat, $user)) { // validate domain if (eregi($ip_domain_pat, $domain, $ip_components)) { // this is an IP address for ($i=1;$i<=4;$i++) { if ($ip_components[$i] > 255) { $valid_address = false; break; } } } else { // Domain is a name, not an IP if (eregi($domain_pat, $domain)) { /* domain name seems valid, but now make sure that it ends in a valid TLD or ccTLD and that there's a hostname preceding the domain or country. */ $domain_components = explode(".", $domain); // Make sure there's a host name preceding the domain. if (sizeof($domain_components) < 2) { $valid_address = false; } else { $top_level_domain = strtolower($domain_components[sizeof($domain_components)-1]); // Allow all 2-letter TLDs (ccTLDs) if (eregi('^[a-z][a-z]$', $top_level_domain) != 1) { $tld_pattern = ''; // Get authorized TLDs from text file $tlds = file( 'tld.txt'); while (list(,$line) = each($tlds)) { // Get rid of comments $words = explode('#', $line); $tld = trim($words[0]); // TLDs should be 3 letters or more if (eregi('^[a-z]{3,}$', $tld) == 1) { $tld_pattern .= '^' . $tld . '$|'; } } // Remove last '|' $tld_pattern = substr($tld_pattern, 0, -1); if (eregi("$tld_pattern", $top_level_domain) == 0) { $valid_address = false; } } } } else { $valid_address = false; } } } else { $valid_address = false; } } else { $valid_address = false; } if ($valid_address && ENTRY_EMAIL_ADDRESS_CHECK == 'true') { if (!checkdnsrr($domain, "MX") && !checkdnsrr($domain, "A")) { $valid_address = false; } } return $valid_address; } /** * @return booleen * @param $var : variable à tester * @desc Verifie que la variable est definie **/ function string_is_null($var) { return in_array($var,array("",null,undefined)); } /** * @return texte reduit * @param $texte : texte à tronquer * @param $taille : taille max * @param $tags : chiande caractère a ajouter à la fin si tronqué (facultatif); * @desc Réduit une chaine de caractères **/ function string_reduc($texte,$taille,$tags = '...') { $texteSize = strlen($texte); $texte=substr($texte,0,$taille); if ($texteSize<=$taille) { return $texte; }elseif ($texteSize>$taille){ return $texte."".$tags; } } /** * @return Rien * @param Tableau à traiter * @desc Permet de traiter un tableau (A l'origine utilisé avec array_walk) **/ function string_encode_csv(&$item){ $item1 = preg_replace("([\n\r])","
",$item1); $item1 = str_replace(";",":",$item1); } /** * @return Texte formaté HTML * @param Tableau à traiter * @desc Permet de traiter un tableau (A l'origine utilisé avec array_walk) **/ function string_decode_bbcode($texte){ $texte=nl2br(StripSlashes($texte)); $array_replace= array( "gras" => "b", "italique" => "i", "souligné" => "u" ); foreach( $array_replace as $k=>$v){ $texte = str_replace("[".$k."]","<".$v.">",$texte); $texte = str_replace("[/".$k."]","",$texte); } $texte = preg_replace("#\[color=(\#[0-9A-F]{6}|[a-z\-]+)\](.*?)\[/color\]#si", "\\2", $texte); $texte = preg_replace("#\[size=([\-\+]?[1-2]?[0-9])\](.*?)\[/size\]#si", "\\2", $texte); return $texte; } /** * @return Texte formaté HTML * @param Tableau à traiter * @desc Permet de traiter un tableau (A l'origine utilisé avec array_walk) **/ function string_sans_accent($texte){ $tofind = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ"; $replac = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn"; return(strtr($texte,$tofind,$replac)); } /** * @return Texte avec retour ligne * @param Texte * @desc Echo avec un
à la fin **/ function echobr($txt = "test",$entities = true){ if(is_array($txt)){ print_r($txt); }elseif($entities){ echo htmlentities($txt)."
"; }else{ echo $txt."
"; } } /** * @return Texte affiché en bas de page * @param Mixed * @desc Affiche le texte en bas de page (supporte les print_r) **/ function echo_r($tab,$level=1){ global $PRINT_R; if(ereg("www.aressy.com",$_SERVER['SERVER_NAME']) || $_SERVER['SERVER_ADDR']=="195.68.9.130"){ define('DEBUG_PRINT_R',1); }else{ define('DEBUG_PRINT_R',true); } $PRINT_R[] = print_r($tab,DEBUG_PRINT_R); } /** * @return Password * @param int length * @desc Permet de générer un mot de passe a peu pres lisible **/ function string_password_lisible($length=5){ $passe = ""; $consonnes = array("b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "z", "bl", "br", "cl", "cr", "ch", "dr", "fl", "fr", "gl", "gr", "pl", "pr", "qu", "sl", "sr"); $voyelles = array("a", "e", "i", "o", "u", "ae", "ai", "au", "eu", "ia", "io", "iu", "oa", "oi", "ou", "ua", "ue", "ui"); $nbrC = count($consonnes) - 1; $nbrV = count($voyelles) - 1; for ($i = 0; $i < $length; $i++) { $passe .= $consonnes[rand(0, $nbrC)] . $voyelles[rand(0, $nbrV)]; } return substr($passe, 0, $length); } ?>