[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 3 4 /** 5 * Fonctions utiles 6 7 * @Version $Id: fonc_outils.inc.php 8379 2015-01-14 22:38:08Z keyser $ 8 9 * @Projet LCS / SambaEdu 10 * Fonctions Interface Homme/Machine 11 12 * @Auteurs Equipe Tice academie de Caen 13 * @Auteurs Philippe chadefaux 14 * @Auteurs Jean Gourdin 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: fonc_outils.inc.php 24 * @Repertoire: includes/ 25 */ 26 27 28 /** 29 30 * Fonctions qui retourne vrai si l'inventaire (ocs) est actif 31 32 * @Parametres 33 * @Return 1 ou 0 34 35 */ 36 37 function inventaire_actif() { 38 include("config.inc.php"); 39 return $inventaire; 40 } 41 42 43 44 /** 45 46 * Fonctions qui Ping une machine Return 1 si Ok 0 pas de ping 47 48 * @Parametres Adresse IP de la machine a pinguer 49 50 * @Return 1 si le ping repond - 0 si pas de reponse 51 52 */ 53 /* 54 function fping($ip) { // Ping une machine Return 1 si Ok 0 pas de ping 55 return exec("ping ".$ip." -c 1 -w 1 | grep received | awk '{print $4}'"); 56 } 57 */ 58 59 60 /** 61 62 * Fonctions qui retourne l'adresse IP d'une machine en fonction de son nom ou 0 si pas d'IP 63 64 * @Parametres Nom de la machine 65 66 * @Return L'adresse IP 67 68 */ 69 70 function avoir_ip($mpenc) { // Retourne l'adresse IP d'une machine en fonction de son nom ou 0 si pas d'IP 71 72 $mp_curr=search_machines("(&(cn=$mpenc)(objectClass=ipHost))","computers"); 73 if (isset($mp_curr[0]["ipHostNumber"])) { 74 $iphost=$mp_curr[0]["ipHostNumber"]; 75 return $iphost; 76 } else { 77 return 0; 78 } 79 } 80 81 82 83 /** 84 85 * Fonctions qui retourne le nom d'une machine en fonction de son adresse IP 86 87 * @Parametres Adresse IP de la machine 88 89 * @Return Le nom de la machine 90 91 */ 92 93 function avoir_nom($ipHost) { // Retourne le nom d'une machine a partir de l'adresse IP ou 0 si pas 94 95 $mp_curr=search_machines("(&(ipHostNumber=$ipHost)(objectClass=ipHost))","computers"); 96 if (isset($mp_curr[0]["cn"])) { 97 $mpenc=$mp_curr[0]['cn']; 98 return $mpenc; 99 } else { 100 return 0; 101 } 102 } 103 104 /** 105 106 * Fonctions qui retourne l'adresse mac d'une machine en fonction de son nom 107 108 * @Parametres nom de la machnie 109 110 * @Return adresse mac 111 112 */ 113 114 function avoir_mac($mpenc) { 115 116 require_once ("ldap.inc.php"); 117 118 $mp_curr=search_machines("(&(cn=$mpenc)(objectClass=ipHost))","computers"); 119 // echo "mac:".$mp_curr[0]['macAddress']."<br>"; 120 if (isset($mp_curr[0]['macAddress'])) { 121 $ret=$mp_curr[0]['macAddress']; 122 return $ret; 123 } else { 124 return 0; 125 } 126 } 127 128 129 /** 130 * Retourne la config de l'interface serveur 131 132 * @Parametres 133 134 * @Return tableau des caractéristiques reseau 135 136 */ 137 138 function ifconfig() 139 { 140 include ("config.inc.php"); 141 require_once ("ihm.inc.php"); 142 $reseau['mask']=exec("/sbin/ifconfig | grep ".$se3ip." | awk '{print $4}' | sed 's/Masque://;s/Mask://'"); 143 $reseau['broadcast']=exec("/sbin/ifconfig | grep ".$se3ip." | awk '{print $3}' | sed 's/Bcast://'"); 144 $reseau['network']=long2ip( ip2long($reseau['broadcast']) & ip2long($reseau['mask'])); 145 $reseau['interface']=exec("route -n | grep ".$reseau['network']." | awk '{print $8}'" ); 146 $reseau['gateway']=exec("route -n | grep UG | awk '{print $2}'" ); 147 return $reseau; 148 } 149 150 /** 151 * Demarre, eteint ou reboote un poste 152 153 * @Parametres action: wol, reboot, shutdown 154 * nom : nom du poste 155 156 * @Return 157 158 */ 159 160 function start_poste($action, $name) 161 { 162 include ("config.inc.php"); 163 require_once ("ihm.inc.php"); 164 require_once ("ldap.inc.php"); 165 require_once ("fonc_parc.inc.php"); 166 $ip=avoir_ip($name); 167 $mac=avoir_mac($name); 168 if (! is_printer($name)) { 169 switch ($action) { 170 case "wol": 171 exec("/usr/share/se3/sbin/tcpcheck 1 $ip:445 | grep alive",$arrval,$return_value); 172 if ($return_value != "1") { 173 174 echo "$name est déjà en fonctionnement <br>"; 175 } 176 177 178 179 elseif ($dhcp == 1 ) { 180 require_once ("dhcp/dhcpd.inc.php"); 181 $reseau=get_vlan($ip); 182 echo "Mise en marche de la machine <b>$name</b> : "; 183 system ( "/usr/bin/wakeonlan -i ".long2ip($reseau['broadcast'])." ".$mac ); 184 echo "<br>"; 185 } 186 else { 187 $reseau=ifconfig(); 188 echo "Mise en marche de la machine <b>$name</b> : "; 189 system ( "/usr/bin/wakeonlan -i ".$reseau['broadcast']." ".$mac ); 190 echo "<br>"; 191 } 192 break; 193 194 case "reboot": 195 if(fping($ip)) { 196 // J ai SVN qui veut pas envoyer ma modification cosmetique... 197 echo "On reboote avec l'action <b>".$action."</b> le poste <b>".$name."</b> :<br>\n"; 198 if (search_samba($name)) { 199 // machine windows 200 system ("/usr/bin/net rpc shutdown -t 2 -f -r -C 'Reboot demande par le serveur sambaEdu3' -I ".$ip." -U \"".$name."\adminse3%".$xppass."\""); 201 // system ( "/usr/bin/ssh -o StrictHostKeyChecking=no root@".$ip." reboot"); 202 echo "<br><br>"; 203 } 204 else { 205 // poste linux : ne marchera pas, mais on verra plus tard... 206 system ( "/usr/bin/ssh -o StrictHostKeyChecking=no root@".$ip." reboot"); 207 echo "<br><br>"; 208 } 209 } 210 else 211 { 212 echo "On reboote avec l'action <b>".$action."</b> le poste <b>".$name."</b> :<br>\n"; 213 echo "<b>Attention, reboot impossible</b>, la machine est injoignable ! <br><br>"; 214 } 215 216 break; 217 218 case "shutdown": 219 if(fping($ip)) { 220 echo "On éteint avec l'action <b>".$action."</b> le poste <b>".$name."</b> : <br>\n"; 221 if (search_samba($name)) { 222 // machine windows 223 $ret.=system ("/usr/bin/net rpc shutdown -t 30 -f -C 'Arret demande par le serveur sambaEdu3' -I ".$ip." -U \"".$name."\adminse3%".$xppass."\""); 224 // system ( "/usr/bin/ssh -o StrictHostKeyChecking=no root@".$ip." halt"); 225 echo "<br><br>"; 226 //$ret.="/usr/bin/net rpc shutdown -t 2 -f -C 'Arret demande par le serveur sambaEdu3' -S ".$name." -U \"".$name."\adminse3%".$xppass."\"<br>"; 227 } 228 else { 229 // poste linux : ne marchera pas, mais on verra plus tard... 230 system ( "/usr/bin/ssh -o StrictHostKeyChecking=no root@".$ip." halt"); 231 echo "<br><br>"; 232 } 233 } 234 else 235 { 236 echo "On éteint avec l'action <b>".$action."</b> le poste <b>".$name."</b> : <br>\n"; 237 echo "<b>Attention, arrêt impossible</b>, la machine est injoignable ! <br><br>"; 238 } 239 return $ret; 240 break; 241 } 242 } 243 244 // if ("$action" == "wol") { 245 // 246 // 247 //// echo "/usr/bin/wakeonlan -i ".long2ip($reseau['broadcast'])." ".$mac."<br>"; 248 //// system ( "/usr/bin/wakeonlan -i ".long2ip($reseau['broadcast'])." ".$mac ); 249 // } 250 // else { 251 // // J ai SVN qui veut pas envoyer ma modification cosmetique... 252 // echo "On eteint avec l action <b>".$action."</b> le poste <b>".$name."</b>.<br>\n"; 253 // if (search_samba($name)) { 254 // // machine windows 255 // if ("$action" == "shutdown") {$switch="";} else {$switch="-r";} 256 //// $ret.="/usr/bin/net rpc shutdown -t 2 -f ".$switch." -C 'Arret demande par le serveur sambaEdu3' -S ".$name." -U \"".$name."\adminse3%".$xppass."\"<br>"; 257 // $ret.=system ("/usr/bin/net rpc shutdown -t 2 -f ".$switch." -C 'Arret demande par le serveur sambaEdu3' -S ".$name." -U \"".$name."\adminse3%".$xppass."\""); 258 // } 259 // else { 260 // // poste linux : ne marchera pas, mais on verra plus tard... 261 // system ( "/usr/bin/ssh -o StrictHostKeyChecking=no ".$name." halt"); 262 // } 263 // } 264 // return $ret; 265 } 266 267 /** 268 * Demarre, eteint ou reboote un parc 269 270 * @Parametres action: wol, reboot, shutdown 271 * parc : nom du parc 272 273 * @Return 274 275 */ 276 277 function start_parc($action, $parc) 278 { 279 include ("config.inc.php"); 280 require_once ("ldap.inc.php"); 281 require_once ("ihm.inc.php"); 282 $liste=liste_parc($parc); 283 foreach( $liste['computers'] as $key=>$value ) { 284 start_poste($action, $value); 285 } 286 } 287 /** 288 289 * Fonction qui retourne si une machine a une demande de maintenance et le type 290 291 * @Parametres Nom de la machine 292 293 * @Return Le type de la demande de maintenance de la machine 294 295 */ 296 297 function testMaintenance($mpenc) { // Retourne si une machine a une demande de maintenance et le type 298 $dbnameinvent="ocsweb"; 299 include("dbconfig.inc.php"); 300 $authlink_invent=@mysql_connect($_SESSION["SERVEUR_SQL"],$_SESSION["COMPTE_BASE"],$_SESSION["PSWD_BASE"]); 301 @mysql_select_db($dbnameinvent) or die("Impossible de se connecter à la base $dbnameinvent."); 302 $query="select * from repairs where (STATUT='2' or STATUT='0') and NAME='$mpenc'"; 303 $result = mysql_query($query,$authlink_invent); 304 $ligne=mysql_num_rows($result); 305 if ($ligne > 0) { 306 while ($row = mysql_fetch_array($result)) { 307 return $row["PRIORITE"]; 308 } 309 } 310 } 311 312 313 314 /** 315 316 * Fonctions qui retourne le login de la connexion en cours ou 0 317 318 * @Parametres Nom de la machine 319 320 * @Return Le login de la connexion en cours sur la machine ou 0 si pas de connexion 321 322 */ 323 324 function connexion_smb($mpenc) { //Retourne le login de la connexion en cours ou 0 325 $ip=avoir_ip($mpenc); 326 $connect_smb = exec("smbstatus | grep '($ip)' | cut -d' ' -f5"); 327 if ($connect_smb!="") { return $connect_smb; } 328 } 329 330 331 332 /** 333 334 Fonctions qui retourne la date du dernier inventaire 335 336 * @Parametres Nom de la machine 337 338 * @Return Date du dernier inventaire 339 340 */ 341 342 function der_inventaire($nom_machine) { // retourne la date du dernier inventaire a partir de hardware 343 include "dbconfig.inc.php"; 344 $dbnameinvent="ocsweb"; 345 346 $authlink_invent=@mysql_connect($_SESSION["SERVEUR_SQL"],$_SESSION["COMPTE_BASE"],$_SESSION["PSWD_BASE"]); 347 @mysql_select_db($dbnameinvent) or die("Impossible de se connecter à la base $dbnameinvent."); 348 349 $query="select OSNAME,WORKGROUP,PROCESSORS,MEMORY,IPADDR,LASTDATE from hardware where NAME='$nom_machine'"; 350 $result = mysql_query($query,$authlink_invent); 351 if ($result) { 352 $ligne=mysql_num_rows($result); 353 if ($ligne > 0) { 354 while ($res = mysql_fetch_array($result)) { 355 $retour = $res["OSNAME"]." WG : ".$res["WORKGROUP"]." P : ".$res["PROCESSORS"]." Mem : ".$res["MEMORY"]." DI : "; 356 if ($res["LASTDATE"]) { 357 $retour .= date('d M Y',strtotime($res["LOGDATE"])); 358 } 359 } 360 } else { 361 $retour=0; 362 } 363 364 return $retour; 365 } else { // Pas d'inventaire a ce nom 366 return 0; 367 } 368 } 369 370 371 372 /** 373 374 * Fonctions qui retourne l'ID de $nom_machine ou 0 a partir de la table hardware 375 376 * @Parametres Nom de la machine 377 378 * @Return ID de la machine pour ocs 379 380 */ 381 382 383 384 /* 385 function avoir_systemid($nom_machine) { // retourne l'ID de $nom_machine ou 0 a partir de la table hardware 386 387 include "dbconfig.inc.php"; 388 $dbnameinvent="ocsweb"; 389 390 $authlink_invent=@mysql_connect($_SESSION["SERVEUR_SQL"],$_SESSION["COMPTE_BASE"],$_SESSION["PSWD_BASE"]); 391 @mysql_select_db($dbnameinvent) or die("Impossible de se connecter à la base $dbnameinvent."); 392 393 $query="select ID from hardware where NAME='$nom_machine'"; 394 $result = mysql_query($query,$authlink_invent); 395 if ($result) { 396 $ligne=mysql_num_rows($result); 397 if ($ligne > 0) { 398 while ($res = mysql_fetch_array($result)) { 399 $retour=$res["ID"]; 400 } 401 } else { 402 $retour=0; 403 } 404 405 return $retour; 406 } else { // Pas d'inventaire a ce nom 407 return 0; 408 } 409 } 410 */ 411 412 413 /** 414 415 * Fonctions qui retourne l'os de la machine 416 417 * @Parametres Nom de la machine 418 419 * @Return Le type de la machine 420 421 */ 422 423 function type_os($nom_machine) { // retourne l'os de la machine 424 include "dbconfig.inc.php"; 425 $dbnameinvent="ocsweb"; 426 427 $authlink_invent=@mysql_connect($_SESSION["SERVEUR_SQL"],$_SESSION["COMPTE_BASE"],$_SESSION["PSWD_BASE"]); 428 @mysql_select_db($dbnameinvent) or die("Impossible de se connecter à la base $dbnameinvent."); 429 430 $query="select OSNAME from hardware where NAME='$nom_machine' order by LASTDATE DESC limit 0,1"; 431 $result = mysql_query($query,$authlink_invent); 432 if ($result) { 433 $ligne=mysql_num_rows($result); 434 if ($ligne > 0) { 435 while ($res = mysql_fetch_array($result)) { 436 $retour = $res["OSNAME"]; 437 if (preg_match('/XP/i',$retour)) { // 4 types d'icones 98 / XP / 7 / Linux 438 $retour="XP"; 439 return $retour; 440 } elseif (preg_match('/2000/i',$retour)) { 441 $retour="XP"; 442 return $retour; 443 } elseif (preg_match('/2003/i',$retour)) { 444 $retour="XP"; 445 return $retour; 446 } elseif (preg_match('/Linux/i',$retour)) { 447 $retour="Linux"; 448 return $retour; 449 } elseif (preg_match('/7/i',$retour)) { 450 $retour="7"; 451 return $retour; 452 } else return 0; 453 454 } 455 } else { 456 return 0; 457 } 458 459 } else { // Pas d'inventaire a ce nom 460 return 0; 461 } 462 } 463 464 465 466 /** 467 468 * Fonctions qui supprime une machine d'un parc 469 470 * @Parametres Nom du parc - Nom de la machine 471 472 * @Return: 473 474 */ 475 476 function move_computer_parc($parc,$computer) { // Supprime une machine d'un parc 477 // Suppression des machines dans le parc 478 include ("config.inc.php"); 479 $cDn = "cn=".$computer.",".$computersRdn.",".$ldap_base_dn; 480 $pDn = "cn=".$parc.",".$parcsRdn.",".$ldap_base_dn; 481 exec ("/usr/share/se3/sbin/groupDelEntry.pl \"$cDn\" \"$pDn\""); 482 exec ("/usr/share/se3/sbin/printers_group.pl"); 483 484 } 485 486 /** 487 * Fonction supprime un parc si celui-ci est vide 488 489 * @Parametres Nom du parc 490 * @Return 491 492 */ 493 494 function move_parc($parc) { 495 include ("config.inc.php"); 496 $cDn = "cn=".$parc.",".$parcsRdn.",".$ldap_base_dn; 497 exec ("/usr/share/se3/sbin/entryDel.pl \"$cDn\""); 498 exec ("/usr/share/se3/sbin/printers_group.pl"); 499 } 500 501 502 /** 503 504 * Fonctions qui teste si cups tourne 505 506 * @Parametres 507 508 * @Return 1 si cups tourne - 0 si tourne pas 509 */ 510 511 function test_cups() { //test si cups tourne 512 $status_cups=exec("/usr/bin/lpstat -r"); 513 if ($status_cups=="scheduler is running") { 514 return 1; 515 // $icone_cups="enabled.png"; 516 } else { 517 return 0; 518 // $icone_cups="disabled.png"; 519 } 520 } 521 522 523 /** 524 525 * Fonctions qui demarre cups 526 527 * @Parametres 528 529 * @Return 530 */ 531 532 533 function start_cups() { //demarre ou stop cups 534 if (test_cups()==0) { 535 exec ("sudo /etc/init.d/cupsys start"); 536 } else { 537 exec ("sudo /etc/init.d/cupsys stop"); 538 } 539 } 540 541 /** 542 543 * Fonctions qui supprime une imprimante d'un parc (sans la supprimer de l'annuaire) 544 545 * @Parametres parc : Nom du parc - printer : Nom de l'imprimante 546 547 * @Return 548 549 */ 550 551 function move_printer_parc($parc,$printer) { // Sort une imprimante $printer du parc $parc 552 if ($parc !="" && $printer != "") { 553 exec ("/usr/share/se3/sbin/printerDelPark.pl $printer $parc",$AllOutPutValue,$ReturnValue); 554 } 555 } 556 557 /** 558 559 * Fonctions qui supprime une imprimante definitivement 560 561 * @Parametres printer : Nom de l'imprimante 562 563 * @Return 564 565 */ 566 567 function move_printer($printer) { // Supprime une imprimante definitivement 568 exec ("/usr/share/se3/sbin/printerDel.pl $printer",$AllOutPutValue,$ReturnValue); 569 } 570 571 572 /** 573 574 * Fonctions qui stop ou start une imprimante 575 576 * @Parametres printer : Nom de l'imprimante - status : etat de l'imprimante 577 578 * @Return 579 580 */ 581 582 function stop_start_printer($printer,$status) { //Stop ou start une imprimante 583 if (isset($printer)){ 584 exec ("/usr/bin/$status $printer"); 585 } 586 } 587 588 589 /** 590 * Affiche la date dans le format j/m/a 591 592 * @Parametres la date 593 594 * @Return la date au format j/m/a 595 */ 596 597 function affiche_date($date) { 598 list($a,$m,$j)=preg_split("/-/",$date); 599 return "$j/$m/$a"; 600 } 601 602 /** 603 * Retourne une liste sous forme d'un tableau 604 605 * @Parametres $liste 606 607 * @Return la tableau 608 */ 609 610 611 function liste_tab($liste) { 612 $t= preg_split("/\|/",$liste); 613 for ($i=0; $i< count($t) ; $i=$i+2) { 614 $cle=$t[$i]; 615 $val=$t[$i+1]; 616 $tab[$cle]=$val; 617 } 618 return $tab; 619 } 620 621 /** 622 * Retourne la classe de l'eleve a partir de son uid 623 624 * @Parametres $login 625 626 * @Return la classe 627 */ 628 629 function classe_eleve($login) { 630 list($user, $groups)=people_get_variables($login, true); 631 $nb_groupes= count($groups); 632 for ($g=0; $g< $nb_groupes; $g++) { 633 if (preg_match("/^Classe/", $groups[$g]["cn"] ) ) { 634 $classe = $groups[$g]["cn"] ; 635 return $classe; 636 break; 637 } 638 } 639 if(isset($classe)) {return $classe;} 640 } 641 642 643 /** 644 * a partir du tab d'uid fournit un tableau associatif uid-eleve => classe 645 * @Parametres $tab tableau 646 647 * @Return tabeau uid eleve => classe 648 */ 649 650 function classe_eleves($tab) { 651 $nb = sizeof($tab); 652 $tab_eleves_classe= array(); 653 for ($p=0; $p < $nb; $p++) { 654 $uid=$tab[$p]; 655 $tab_eleves_classe[$uid] = classe_eleve($uid); 656 } 657 return $tab_eleves_classe; 658 } 659 660 /** 661 662 * fournit la classe, le fullname et le sexe d'un eleve a partir de son uid (tableau) 663 664 * @Parametres $login de l'eleve 665 666 * @Return Retourne la classe, le fullname et le sexe 667 668 */ 669 function params_eleve($login) { 670 list($user, $groups)=people_get_variables($login, true); 671 $nb_groupes= count($groups); 672 // oblige de faire une boucle parmi tous les groupes !! 673 for ($g=0; $g< $nb_groupes; $g++) { 674 if (preg_match("/^Classe/", $groups[$g]["cn"] ) ) { 675 $classe = $groups[$g]["cn"] ; 676 break; 677 } 678 } 679 return array('classe'=>$classe, 'sexe'=>$user["sexe"], 'nom'=>$user["fullname"]) ; 680 } 681 682 /** 683 * Retourne un select pour choisir la date 684 685 * @Parametres date et param 686 * @Return un select au sens HTML 687 688 */ 689 690 function choix_date($date,$param) { 691 $tab_mois =array(9=>gettext("Septembre"),10=>gettext("Octobre"),11=>gettext("Novembre"),12=>gettext("Décembre"),1=>gettext("Janvier"),2=>gettext("Février"),3=>gettext("Mars"),4=>gettext("Avril"),5=>gettext("Mai"),6=>gettext("Juin"),7=>gettext("Juillet"),8=>gettext("Août")); 692 list($an,$mois,$jour)=preg_split("/-/",$date); 693 echo "<select name=\"jour_$param\">"; 694 // <option value=\"jour\"> jour</option>"; 695 for ($i=1; $i<=31;$i++) { 696 $ii= ($i<10 ?"0$i":$i); 697 echo "<option value=\"$ii\" ".($ii==$jour?"selected":"")."> $ii</option>"; 698 } 699 echo "</select>"; 700 echo "<select name=\"mois_$param\"> "; 701 // <option value=\"mois\"> mois</option>"; 702 for ($i=1; $i<=12;$i++) { 703 $ii= ($i<10 ?"0$i":$i); 704 echo "<option value=\"$ii\" ".($ii==$mois?"selected":"")."> $tab_mois[$i]</option>"; 705 } 706 echo "</select>"; 707 echo "<select name=\"an_$param\"> "; 708 // <option value=\"an\"> année</option>"; 709 echo "<option value=\"$an\" selected> $an</option>"; 710 $an_suivant=$an+1; 711 echo "<option value=\"$an_suivant\" > $an_suivant</option>"; 712 echo "</select>"; 713 } 714 715 /** 716 * Test si uid est prof 717 * @Parametres uid 718 * @Return 1 su oui 0 si non 719 */ 720 721 function est_prof($uid) { 722 $groupes=search_groups("memberUid=$uid"); 723 $prof=0; 724 $n=count ($groupes); 725 if ($n >0) 726 for ($i=0; $i < $n; $i++) 727 if ($groupes[$i]["cn"]=="Profs") { 728 $prof=1; break; 729 } 730 return $prof; 731 } 732 733 /** 734 735 * fournit la liste des classes d'un prof 736 * modif : inclut aussi les groupes auxquels le prof appartient 737 * prevoir un tableau gid => cn 738 739 * @Parametres login du prof 740 * @return un tableau avec les classes 741 */ 742 function classes_prof($login) { 743 $classes = array(); 744 list($user, $groups)=people_get_variables($login, true); 745 $nb_groupes= count($groups); 746 for ($g=0; $g< $nb_groupes; $g++) { 747 if (preg_match("/^Equipe/", $groups[$g]["cn"] ) ) 748 $classes[]= preg_replace("/^Equipe/", "Classe", $groups[$g]["cn"]) ; 749 elseif (preg_match("/^Matiere/", $groups[$g]["cn"] ) ) continue; 750 elseif (preg_match("/^Cours/", $groups[$g]["cn"] ) ) continue; 751 elseif (preg_match("/^Profs/", $groups[$g]["cn"] ) ) continue; 752 elseif (preg_match("/^admins/", $groups[$g]["cn"] ) ) continue; 753 else $classes[] = $groups[$g]["cn"]; 754 } 755 return $classes; 756 } 757 758 /** 759 760 * retourne une liste a partir d'un tableau 761 762 * @Parametres tab le tableau a transformer 763 * @Return une liste 764 765 */ 766 767 function tab_liste($tab) { 768 $liste=""; 769 foreach ($tab as $cle => $val) { 770 if ($val != "" and $val != "#") 771 $liste .= $cle.'|'.$val.'|'; 772 } 773 $liste=preg_replace("/|$/","",$liste); 774 return $liste; 775 } 776 777 778 /** 779 * Fonctions: Test la presence d'une entree dans la table params et en retourne la valeur 780 781 * @Parametres $dhcp_vlan_valeur : Contenu de dhcp_vlan 782 * @Return - 783 * Ex : entree_table_param_exist("savbandactiv","0","5","sauvegarde sur bande"); 784 */ 785 786 function entree_table_param_exist($nom,$valeur,$cat,$comment) { 787 // include ("config.inc.php"); 788 // si la variable $nom n'est pas definie on cree l'entree dans la base sql 789 if ($$nom == "") { 790 $resultat=mysql_query("INSERT into params set id='NULL', name='$nom', value='$valeur', srv_id='0',descr='$comment',cat='$cat'"); 791 return 0; 792 } 793 } 794 795 /** 796 * a partir d'un uid d'élève fournit le nom inversé de son répertoire classe 797 * en cas de login prenom.nom, renvoie nom.prenom, sinon renvoie le login 798 * @Parametres $uid 799 800 * @Return $rep 801 */ 802 803 function inverse_login($login) { 804 $tab=preg_split('/\./', $login); 805 if (count($tab)==2) { 806 $rep=$tab[1].".".$tab[0]; 807 }else{ 808 $rep=$login; 809 } 810 return $rep; 811 } 812 813 814 ?>
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 |