[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 3 4 /** 5 * Librairie de fonctions pour controler diverses entrees 6 7 * @Version $Id: ihm.inc.php 8485 2015-02-22 20:49:54Z keyser $ 8 9 * @Projet LCS / SambaEdu 10 11 * @Auteurs Equipe Tice academie de Caen 12 * @Auteurs oluve olivier.le_monnier@crdp.ac-caen.fr 13 * @Auteurs « jLCF >:> » jean-luc.chretien@tice.ac-caen.fr 14 * @Auteurs « wawa » olivier.lecluse@crdp.ac-caen.fr 15 16 * @Note: Ce fichier de fonction doit etre appele par un include 17 18 * @Licence Distribue sous la licence GPL 19 */ 20 21 /** 22 23 * file: functions.inc.php 24 * @Repertoire: includes/ 25 */ 26 27 28 //================================================= 29 /** 30 * Fonction qui test si la chaine est encode en UTF8 31 * @Parametres $chaine la chaine a tester 32 * @Return 33 */ 34 35 function convertUTF8_to_8859($str){ 36 if(is_utf8($str) == 1){ 37 // fonction qui test si la chaine encode en UTF8 contient des caractere francais: Cette fonction ne traite que des chaines en UTF8 38 if(content8859_in_UTF8($str)=="TRUE"){ 39 // On convertit la chaine de UTF8 en ISO8859-1 40 $str = utf8_decode($str); 41 // retourner la chaine converti 42 return($str); 43 }else{ // cas ou la chaine en UTF-8 mais ne contient pas des accents francais : exemple les caracetres chinois encode en UTF8 44 // retourner la chaine non convertit 45 return($str); 46 } 47 }else{ // cas ou la chaine n'est pas encode en UTF8 48 return($str); 49 } 50 } 51 52 53 //================================================= 54 /** 55 * Test si la chaine est en UTF-8 ou pas 56 * @Parametres $chaine la chaine a tester 57 * @Returns true if $string is valid UTF-8 and false otherwise. 58 */ 59 60 function is_utf8($string) { 61 62 return preg_match('%^(?: 63 [\x09\x0A\x0D\x20-\x7E] # ASCII 64 | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte 65 | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs 66 | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte 67 | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates 68 | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3 69 | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15 70 | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16 71 )*$%xs', $string); 72 } // function is_utf8 73 74 75 //================================================= 76 77 /** 78 * fonction qui cherche s'il ya des caractres accentues francais dans une chaine en UTF8 79 * @Parametres $str chaine a tester 80 * @Return true ou false 81 */ 82 83 function content8859_in_UTF8($str){ 84 85 if ( strlen($str) == 0 ) { return; } 86 // cette fonction ne retourne de valeur si la chaine est en UTF8 87 // cette fonction retourne un tableau contenant les chaines accentuees 88 preg_match_all('/.{1}|[^\x00]{1,1}$/us', $str, $ar); 89 $chars = $ar[0]; 90 $str_fr = 0; 91 foreach ( $chars as $i => $c ){ 92 $ud = 0; 93 // Calcul les codes ASCII des chaines en UTF8 94 if (ord($c{0})>=0 && ord($c{0})<=127) { continue; } // ASCII - next please 95 if (ord($c{0})>=192 && ord($c{0})<=223) { $ord = (ord($c{0})-192)*64 + (ord($c{1})-128); } 96 if (ord($c{0})>=224 && ord($c{0})<=239) { $ord = (ord($c{0})-224)*4096 + (ord($c{1})-128)*64 + (ord($c{2})-128); } 97 if (ord($c{0})>=240 && ord($c{0})<=247) { $ord = (ord($c{0})-240)*262144 + (ord($c{1})-128)*4096 + (ord($c{2})-128)*64 + (ord($c{3})-128); } 98 if (ord($c{0})>=248 && ord($c{0})<=251) { $ord = (ord($c{0})-248)*16777216 + (ord($c{1})-128)*262144 + (ord($c{2})-128)*4096 + (ord($c{3})-128)*64 + (ord($c{4})-128); } 99 if (ord($c{0})>=252 && ord($c{0})<=253) { $ord = (ord($c{0})-252)*1073741824 + (ord($c{1})-128)*16777216 + (ord($c{2})-128)*262144 + (ord($c{3})-128)*4096 + (ord($c{4})-128)*64 + (ord($c{5})-128); } 100 if (ord($c{0})>=254 && ord($c{0})<=255) { $chars{$i} = $unknown; continue; } //error 101 //Test si les caracteres contient les accents 102 if(($ord == 224) || ($ord == 226) || ($ord == 235) || ($ord == 249) || ($ord == 250) || ($ord == 252) || ($ord == 251) || ($ord == 233) || ($ord == 234) || ($ord == 232) || ($ord == 231) || ($ord == 228) || ($ord == 256) || ($ord == 128) || ($ord == 156) || ($ord == 230) || ($ord == 231) || ($ord == 244) || ($ord == 225) || ($ord == 236) || ($ord == 227) || ($ord == 237) || ($ord == 238) || ($ord == 249) || ($ord == 239) || ($ord == 257)){ 103 $str_fr =1; 104 } 105 } 106 if($str_fr == 1){ 107 return "TRUE"; 108 }else{ 109 return "FALSE"; 110 } 111 } 112 113 114 //================================================= 115 /** 116 * Remplace les caracteres accentues par leurs equivalents et l'espace par underscore (modifie pour utf-8) 117 118 * @Parametres $chaine a traiter 119 * @Return chaine sans accent 120 */ 121 122 // Remplace les caracteres accentues par leurs equivalents, et les majuscules 123 // et l'espace par underscore (modifie pour utf-8) 124 function enleveaccents($chaine){ 125 126 $chaine=convertUTF8_to_8859($chaine); 127 $chaine = str_replace( 128 array( 129 'à', 'â', 'ä', 'á', 'ã', 'å', 130 'î', 'ï', 'ì', 'í', 131 'ô', 'ö', 'ò', 'ó', 'õ', 'ø', 132 'ù', 'û', 'ü', 'ú', 133 'é', 'è', 'ê', 'ë', 134 'ç', 'ÿ', 'ñ', 135 'À', 'Â', 'Ä', 'Á', 'Ã', 'Å', 136 'Î', 'Ï', 'Ì', 'Í', 137 'Ô', 'Ö', 'Ò', 'Ó', 'Õ', 'Ø', 138 'Ù', 'Û', 'Ü', 'Ú', 139 'É', 'È', 'Ê', 'Ë', 140 'Ç', '¾', 'Ñ', 141 ' ' 142 ), 143 array( 144 'a', 'a', 'a', 'a', 'a', 'a', 145 'i', 'i', 'i', 'i', 146 'o', 'o', 'o', 'o', 'o', 'o', 147 'u', 'u', 'u', 'u', 148 'e', 'e', 'e', 'e', 149 'c', 'y', 'n', 150 'a', 'a', 'a', 'a', 'a', 'a', 151 'i', 'i', 'i', 'i', 152 'o', 'o', 'o', 'o', 'o', 'o', 153 'u', 'u', 'u', 'u', 154 'e', 'e', 'e', 'e', 155 'c', 'y', 'n', 156 '_' 157 ),$chaine); 158 159 return $chaine; 160 } 161 162 163 164 //================================================= 165 166 /** 167 * Verification de l'intitule d'un groupe 168 * L'intitule d'un groupe ne doit pas commencer et finir par les mots : Classe, Cours, Equipe, Matiere 169 170 * @Parametres 171 * @Return 172 */ 173 174 175 function verifIntituleGrp ($intitule) { 176 $motif1 = "#^Classe$#"; 177 $motif2 = "#^Cours$#"; 178 $motif3 = "#^Equipe$#"; 179 $motif4 = "#^Matiere$#"; 180 if ( preg_match($motif1,$intitule)||preg_match($motif2,$intitule)||preg_match($motif3,$intitule)||preg_match($motif4,$intitule) ) { 181 $ret = false; 182 } else $ret = true; 183 return $ret; 184 } 185 186 187 //================================================= 188 189 /** 190 * Verification de la validite d'un mot de passe 191 * longueur de 4 a 20 caracteres 192 * compose de lettre et d'au moins un chiffre ou des caracteres speciaux suivants : _@£%§!?*: 193 194 * @Parametres password a tester 195 * @Return true si Ok false sinon 196 */ 197 198 function verifPwd ($password) { 199 global $char_spec; 200 201 if ( preg_match("/(^[a-zA-Z]*$)|(^[0-9]*$)/", $password) ) 202 return false; 203 elseif ( preg_match("/^[[:alnum:]$char_spec]{4,20}$/", $password) ) 204 return true; else return false; 205 } 206 207 208 //================================================= 209 210 /** 211 * Verification format date de naissance 212 213 * @Parametres date a verifier 214 * @Return true si ok false sinon 215 */ 216 217 function verifDateNaissance ($date) { 218 $motif = "^[0-9]{8}$"; 219 220 if ( preg_match("/$motif/", $date) ) { 221 // Verification de l'annee 222 if ( (date(Y) - substr ($date,0,4) < 75) && (date(Y) - substr ($date,0,4) > 4) ) { 223 // Verification du mois 224 if ( (substr ($date,4,2) > 0) && (substr ($date,4,2) <= 12 ) ) { 225 if ( (substr ($date,6,2) > 0) && (substr ($date,6,2) <= 31) ) { 226 $ret = true; 227 } 228 } 229 } 230 } else { 231 $ret = false; 232 } 233 return $ret; 234 } 235 236 237 238 //================================================= 239 240 /** 241 * Verification d'une entree de type Nom ou Prenom si on a des caracteres etranges 242 243 * @Parametres $entree 244 * @Return true si Ok false sinon. 245 */ 246 247 function verifEntree($entree) { 248 $motif = "#^[_0-9a-zA-Z \'ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ-]{2,20}$#"; 249 250 if ( preg_match($motif, $entree) ) { 251 $ret= true; 252 } else { 253 $ret= false; 254 } 255 return $ret; 256 } 257 258 259 260 //================================================= 261 262 /** 263 * Verification du format du pseudo 264 265 * @Parametres 266 * @Return 267 */ 268 269 function verifPseudo($pseudo) { 270 $motif = "#\|,/ #"; 271 272 if ( preg_match($motif, $pseudo) || strlen ($pseudo) > 20 || strlen ($pseudo) == 0 ) { 273 $ret = false; 274 } else { 275 $ret = true; 276 } 277 return $ret; 278 } 279 280 281 282 //================================================= 283 284 /** 285 * Verification du champ description 286 287 * @Parametres 288 * @Return 289 */ 290 291 function verifDescription($entree) { 292 $motif = "/^[a-zA-Z0-9\s,.;\"\'\/:&ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ-]{0,80}$/"; 293 if ( preg_match($motif, stripslashes($entree)) ) { 294 $ret= true; 295 } else { 296 $ret= false; 297 } 298 return $ret; 299 } 300 301 302 //================================================= 303 304 /** 305 * Verification numero de telephone 306 307 * @Parametres 308 * @Return 309 */ 310 311 function verifTel ($tel) { 312 $motif ="#^[0-9]{10}$#"; 313 314 if ( preg_match($motif, $tel) || strlen ($tel) == 0 ) { 315 $ret = true; 316 } else { 317 $ret = false; 318 } 319 return $ret; 320 } 321 322 323 324 //================================================= 325 326 /** 327 * Affiche le haut des pages avec le login 328 329 * @Parametres 330 * @Return 331 */ 332 333 function header_html() 334 { 335 global $login; 336 ?> 337 <html> 338 <head> 339 <style type='text/css'> 340 body{ 341 background: url(/elements/images/fond_SE3.png) ghostwhite bottom right no-repeat fixed; 342 } 343 </style> 344 <title>Interface d'administration de SambaEdu</title> 345 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 346 <link type='text/css' rel="stylesheet" href="/elements/style_sheets/sambaedu.css" /> 347 </head> 348 <body> 349 <?php 350 print "<h3 align='right'>".gettext("Bonjour")." $login</h3>"; 351 } 352 353 354 //================================================= 355 356 /** 357 * Test si $login a le droit $droit 358 359 * @Parametres $droit droit a tester - $login login a tester 360 * @Return Y si il a le droit, N sinon. 361 */ 362 363 function is_admin ($droit,$login) 364 { 365 if ((ldap_get_right("se3_is_admin",$login)=="Y")||(ldap_get_right($droit,$login)=="Y")) 366 $srch="Y"; 367 else 368 $srch="N"; 369 return $srch; 370 } 371 372 373 //================================================= 374 375 /** 376 * Affiche le menu de recherche dans la partie LDAP 377 378 * @Parametres 379 * @Return 380 */ 381 382 function aff_mnu_search($user_type) 383 { 384 if ($user_type=="Y") { 385 386 387 // keyser modif MC marques 02/06 388 // Affichage menu admin 389 echo" 390 391 <ul> 392 <li><b>".gettext("Rechercher :")."</b> 393 <ul> 394 <li><a href=\"search.php\">".gettext("Effectuer une recherche...")."</a>(".gettext("pour d'eventuelles modifications").")</li> 395 </ul> 396 <br /> 397 </li> 398 399 <li><b>".gettext("Ajouter")." :</b> 400 <ul> 401 <li><a href=\"add_user.php\">".gettext("un utilisateur...")."</a></li> 402 <li><a href=\"add_group.php\">".gettext("un groupe...")."</a></li> 403 <li><a href=\"groupetpe.php\">".gettext("un regroupement...")."</a></li> 404 </ul> 405 <br /> 406 </li> 407 <li><b>".gettext("Import / Export")." :</b> 408 <ul> 409 <li><a href=\"../gepcgi/index.php\">".gettext("Importer les comptes en masse...")."</a></li> 410 <li><a href=\"export_csv.php\">".gettext("Exporter les comptes en format CSV...")." </a></li> 411 </ul> 412 </li> 413 </ul>\n"; 414 415 416 } else { 417 // Affichage menu user 418 echo " 419 <ul> 420 <li><a href=\"search.php\">".gettext("Effectuer une recherche...")."</a></li> 421 </ul>\n"; 422 } 423 } 424 425 426 427 //================================================= 428 429 /** 430 * Affichage de la barre remorquee de haut de page 431 432 * mode 1 : lien Annuaire 433 * mode 2 : lien Annuaire -> Recherche 434 * mode 3 : lien Annuaire -> Lien Recherche 435 * mode 31 : lien Annuaire -> Modification 436 * mode 4 : lien Annuaire -> lien Modification pseudo 437 * mode 5 : lien Annuaire -> lien Modification pwd 438 * mode 6 : lien Annuaire -> lien Ajout groupe 439 * mode 7 : lien Annuaire -> lien Ajout utilisateur 440 441 * @Parametres 442 * @Return 443 */ 444 445 function aff_trailer ($mode) 446 { 447 global $imagespath; 448 echo"<h2><a href=\"annu.php\">".gettext("Annuaire")."</a> "; 449 if ($mode == 1 ) { 450 echo "</h2>"; 451 } elseif ($mode == 2) { 452 echo "-> ".gettext("Recherche")."</h2>"; 453 } elseif ($mode == 3 ) { 454 echo "-> <a href=\"search.php\">".gettext("Recherche")."</a></h2>"; 455 } elseif ($mode == 31 ) { 456 echo "-> <a href=\"search.php\">".gettext("Recherche")."</a> ->".gettext(" Modification")."</h2>"; 457 } elseif ($mode == 4 ) { 458 echo "-> <a href=\"mod_entry.php\">".gettext("Modification")."</a></h2>"; 459 } elseif ($mode == 5 ) { 460 echo "-> <a href=\"mod_pwd.php\">".gettext("Modification")."</a></h2>"; 461 } elseif ($mode == 6 ) { 462 echo "-> <a href=\"add_group.php\">".gettext("Ajout d'un groupe")."</a></h2>"; 463 } elseif ($mode == 7 ) { 464 echo "-> <a href=\"add_user.php\">".gettext("Ajout d'un utilisateur")."</a></h2>"; 465 } elseif ($mode != "") { 466 list($valeur, $filtre) = preg_split ("#_#", $mode); 467 if ($valeur == 8 ) { 468 $mode=preg_replace("#8_#","",$mode); 469 echo "-> <a href=\"search.php\">".gettext("Recherche")."</a> -><a href=\"group.php?filter=$mode\">".gettext(" Modification")."</a> -> $mode</h2>"; 470 } 471 if ($valeur == 9 ) { 472 $mode=preg_replace("#9_#","",$mode); 473 echo "-> <a href=\"search.php\">".gettext("Recherche")."</a> -><a href=\"people.php?uid=$mode\">".gettext(" Modification")."</a> -> $mode</h2>"; 474 } 475 } else { 476 echo "</h2>"; 477 } 478 echo "<hr />\n"; 479 } 480 481 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |