[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/var/www/se3/includes/ -> fonc_outils.inc.php (source)

   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&#233;j&#224; 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 &#233;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 &#233;teint avec l'action <b>".$action."</b> le poste <b>".$name."</b> : <br>\n";
 237             echo "<b>Attention, arr&#234;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 &#224; 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 &#224; 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 &#224; 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 &#224; 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&#233;cembre"),1=>gettext("Janvier"),2=>gettext("F&#233;vrier"),3=>gettext("Mars"),4=>gettext("Avril"),5=>gettext("Mai"),6=>gettext("Juin"),7=>gettext("Juillet"),8=>gettext("Ao&#251;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&#233;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  ?>


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1