[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

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

   1  <?php
   2  
   3     /**
   4     * Librairie de fonctions utilisees dans l'interface d'administration
   5  
   6     * @Version $Id: functions.inc.php 7329 2012-06-30 19:16:38Z plouf $
   7  
   8     * @Projet LCS / SambaEdu
   9  
  10     * @Auteurs Equipe Tice academie de Caen
  11     * @Auteurs oluve olivier.le_monnier@crdp.ac-caen.fr
  12  
  13     * @Note: Ce fichier de fonction doit etre appele par un include
  14  
  15     * @Licence Distribue sous la licence GPL
  16     */
  17  
  18     /**
  19  
  20     * file: functions.inc.php
  21     * @Repertoire: includes/
  22     */
  23  
  24  
  25  
  26  
  27  
  28  //=================================================
  29  
  30  /**
  31  * Affichage du menu lateral (OBSOLETE)
  32  
  33  * @Parametres $login
  34  * @Return
  35  */
  36  
  37  function menuprint($login) {
  38      global $liens,$menu;
  39      for ($idmenu=0; $idmenu<count($liens); $idmenu++)
  40      {
  41          echo "<div id=\"menu$idmenu\" style=\"position:absolute; left:10px; top:12px; width:200px; z-index:" . $idmenu ." ";
  42          if ($idmenu!=$menu) {
  43              echo "; visibility: hidden";
  44          }
  45          echo "\">\n";
  46  
  47          echo "
  48          <table width=\"200\" border=\"0\" cellspacing=\"3\" cellpadding=\"6\">\n";
  49          $ldapright["se3_is_admin"]=ldap_get_right("se3_is_admin",$login);
  50      $getintlevel = getintlevel();
  51          for ($menunbr=1; $menunbr<count($liens); $menunbr++)
  52          {
  53          // Test des droits pour affichage
  54              #if ($menunbr==1) $menutarget="_top";
  55              #else $menutarget="main";
  56              $menutarget="main";
  57              $afftest=$ldapright["se3_is_admin"]=="Y";
  58              $rightname=$liens[$menunbr][1];
  59              $level=$liens[$menunbr][2];
  60              if (($rightname=="") or ($afftest)) $afftest=1==1;
  61              else {
  62                  //if ($ldapright["$rightname"]=="") $ldapright["$rightname"]=ldap_get_right($rightname,$login);
  63                  if ((!isset($ldapright["$rightname"]))||($ldapright["$rightname"]=="")) { $ldapright["$rightname"]=ldap_get_right($rightname,$login);}
  64                  $afftest=($ldapright["$rightname"]=="Y");
  65              }
  66              if ($level > $getintlevel) $afftest=0;
  67              if ($afftest)
  68              if (($idmenu==$menunbr)&&($idmenu!=0)) {
  69                  echo "
  70                  <tr>
  71                      <td class=\"menuheader\">
  72                          <p style='margin:2px; padding-top:2px; padding-bottom:2px'><a href=\"javascript:;\" onClick=\"P7_autoLayers('menu0');return false\"><img src=\"elements/images/arrow-up.png\" width=\"20\" height=\"12\" border=\"0\" alt=\"Up\"></a>
  73                          <a href=\"javascript:;\" onClick=\"P7_autoLayers('menu" . $menunbr .  "');return false\">" . $liens[$menunbr][0] . "</a></p>
  74                      </td>
  75                      </tr>
  76                      <tr>
  77                      <td class=\"menucell\">";
  78                  for ($i=3; $i<count($liens[$menunbr]); $i+=4) {
  79                      // Test des droits pour affichage
  80                      $afftest=$ldapright["se3_is_admin"]=="Y";
  81                      $rightname=$liens[$menunbr][$i+2];
  82                      $level=$liens[$menunbr][$i+3];
  83                      if (($rightname=="") or ($afftest)) $afftest=1==1;
  84                      else {
  85                          if ((!isset($ldapright["$rightname"]))||($ldapright["$rightname"]=="")) {$ldapright["$rightname"]=ldap_get_right($rightname,$login);}
  86                          $afftest=($ldapright[$rightname]=="Y");
  87                      }
  88                      if ($level > $getintlevel ) $afftest=0;
  89                      if ($afftest) {
  90                          echo "<img src=\"elements/images/typebullet.png\" width=\"30\" height=\"11\" alt=\"\">";
  91                  // Traite yala pour ne pas avoir deux target
  92                  if (preg_match('#yala#',$liens[$menunbr][$i+1])) {
  93                              echo "<a href=\"" . $liens[$menunbr][$i+1] . "\">" . $liens[$menunbr][$i]  . "</a><br>\n";
  94                         } else {
  95                              echo "<a href=\"" . $liens[$menunbr][$i+1] . "\" TARGET='$menutarget'>" . $liens[$menunbr][$i]  . "</a><br>\n";
  96                 }
  97             }
  98                  } // for i : bouche d'affichage des entrees de sous-menu
  99                  echo "
 100                      </td></tr>\n";
 101              } else
 102              {
 103                  echo "
 104                  <tr>
 105                      <td class=\"menuheader\">
 106                      <p style='margin:2px; padding-top:2px; padding-bottom:2px'><a href=\"javascript:;\" onClick=\"P7_autoLayers('menu" . $menunbr .  "');return false\">
 107                      <img src=\"elements/images/arrow-down.png\" width=\"20\" height=\"12\" border=\"0\" alt=\"Down\">". $liens[$menunbr][0] ."</a></p>
 108                      </td></tr>\n";
 109              }
 110          } //for menunbr : boucle d'affichage des entrees de menu principales
 111  
 112          echo "
 113          </table>
 114  </div>\n";
 115      } // for idmenu : boucle d'affichage des differents calques
 116  } // function menuprint
 117  
 118  
 119  
 120  
 121  //=================================================
 122  
 123  /**
 124  * Affichage d'un cadre de texte
 125  
 126  * @Parametres
 127  * @Return
 128  */
 129  
 130  /*
 131  function mktable ($title, $content)
 132  {
 133      global $HEADERCOLOR, $BACKCOLOR;
 134  
 135      echo "<table border='0' cellpadding='0' cellspacing='0' bgcolor='#000000' align= 'center' width='70%'>\n";
 136      echo "<TR><TD>\n";
 137      echo "<table width='100%' border='0' cellspacing='1' cellpadding='1'>\n";
 138  //    echo "<TR><TD  bgcolor=$HEADERCOLOR>\n";
 139      echo "<TR><TD CLASS=\"menuheader\">\n";
 140      echo "<DIV CLASS='titre'>$title</DIV>\n";
 141  //    echo "</td></tr><tr><td colspan='1' bgcolor='$BACKCOLOR'>\n";
 142      echo "</td></tr><tr><td CLASS=\"menucell\">\n";
 143      echo "<table border='0' cellspacing='0' cellpadding='2' width='100%'>\n";
 144      echo "<TR><TD>\n";
 145      echo "$content\n";
 146      echo "<BR></TD></TR>\n";
 147      echo "</table>\n";
 148      echo "</TD></TR>\n";
 149      echo "</table>\n";
 150      echo "</TD></TR>\n";
 151      echo "</table>\n";
 152  }*/
 153  
 154  function mktable ($title, $content)
 155  {
 156      echo "<H3>$title</H3>";
 157      echo $content;
 158  }
 159  
 160  
 161  //=================================================
 162  
 163  /**
 164  * Affichage du menu d'aide (OBSOLETE)
 165  
 166  * @Parametres
 167  * @Return
 168  */
 169  
 170  function mkhelp($titre,$content)
 171  {
 172    $fp=fopen("/tmp/se3help.txt","w");
 173    if($fp) {
 174      fputs($fp,"<H1>$titre</H1>\n");
 175      fputs($fp,$content);
 176      fclose($fp);
 177    }
 178  }
 179  
 180  
 181  //=================================================
 182  
 183  /**
 184  * Retourne le nom de id
 185  
 186  * @Parametres
 187  * @Return
 188  */
 189  
 190  function dispfield($id, $table, $field)
 191  {
 192      if ($id):
 193      /* Renvoie le nom de id */
 194          $result=mysql_query("SELECT $field FROM $table WHERE id=$id");
 195          if ($result && mysql_num_rows($result)):
 196              $nom=mysql_result($result,0,0);
 197              mysql_free_result($result);
 198          else:
 199              $nom="";
 200          endif;
 201          return $nom;
 202      endif;
 203  }
 204  
 205  
 206  //=================================================
 207  
 208  /**
 209  *
 210  
 211  * @Parametres
 212  * @Return
 213  */
 214  
 215  function listoptions($table,$sel)
 216  {
 217      $res = "";
 218      $result=mysql_query("SELECT id, nom FROM $table");
 219      if ($result && mysql_num_rows($result)):
 220          while ($r=mysql_fetch_row($result))
 221              {
 222                  $res .= "<OPTION VALUE=\"$r[0]\"";
 223                  if ($r[0]==$sel)
 224                      $res .= " SELECTED";
 225                  $res .= ">$r[1]</OPTION>\n";
 226              }
 227          mysql_free_result($result);
 228      endif;
 229      return $res;
 230  }
 231  
 232  
 233  //=================================================
 234  
 235  /**
 236  *
 237  
 238  * @Parametres
 239  * @Return
 240  */
 241  
 242  function dispstats($idpers)
 243  {
 244      global $authlink, $DBAUTH;
 245  
 246      if ($idpers):
 247          /* Renvoie le nombre de connexions */
 248          @mysql_select_db("$DBAUTH");
 249          $result=mysql_query("SELECT stat FROM personne WHERE id=$idpers", $authlink);
 250      if ($result && mysql_num_rows($result)):
 251          $stat=mysql_result($result,0,0);
 252      mysql_free_result($result);
 253      else:
 254      $stat="0";
 255      endif;
 256      return $stat;
 257      endif;
 258  }
 259  
 260  
 261  //=================================================
 262  
 263  /**
 264  *
 265  
 266  * @Parametres
 267  * @Return
 268  */
 269  
 270  function displogin ($idpers)
 271  {
 272      global $authlink, $DBAUTH;
 273  
 274      if ($idpers):
 275          /* Renvoie le timestamp du dernier login */
 276          @mysql_select_db("$DBAUTH");
 277          $result=mysql_db_query("SELECT date_format(last_log,'%e %m %Y � %T' ) FROM personne WHERE id=$idpers", $authlink);
 278      if ($result && mysql_num_rows($result)):
 279          $der_log=mysql_result($result,0,0);
 280      mysql_free_result($result);
 281      else:
 282      $der_log="";
 283      endif;
 284      return $der_log;
 285      endif;
 286  }
 287  
 288  #
 289  # Fonctions relatives a la session
 290  #
 291  
 292  //=================================================
 293  
 294  /**
 295  * Test si on est authentifie
 296  
 297  * @Parametres
 298  * @Return Si non, renvoie "" -  Si oui, renvoie l'uid de la personne
 299  
 300  */
 301  
 302  function isauth()
 303  {
 304      /* Teste si une authentification est faite
 305                  - Si non, renvoie ""
 306                  - Si oui, renvoie l'uid de la personne
 307      */
 308      // Initialisation:
 309      $login="";
 310  
 311      global $authlink;
 312      if ( ! empty($_COOKIE["SambaEdu3"])):
 313          $sess=$_COOKIE["SambaEdu3"];
 314          $result=mysql_query("SELECT login FROM sessions WHERE sess='$sess'", $authlink);
 315          if ($result && mysql_num_rows($result)):
 316                 $login=mysql_result($result,0,0);
 317              mysql_free_result($result);
 318          endif;
 319      endif;
 320      return $login;
 321  }
 322  
 323  
 324  //=================================================
 325  
 326  /**
 327  * Fabrique un Numero de session aleatoire
 328  
 329  * @Parametres
 330  * @Return N� de session
 331  */
 332  
 333  
 334  function mksessid()
 335  {
 336      /* Fabrique un N� de session aleatoire */
 337      global $Pool, $SessLen;
 338  
 339      $count=10;
 340      do
 341      {
 342          $sid="";
 343          $count--;
 344          for ($i = 0; $i < $SessLen ; $i++)
 345              $sid .= substr($Pool, (mt_rand()%(strlen($Pool))),1);
 346          $query="SELECT id FROM sessions WHERE sess='$sid'";
 347          $result=mysql_query($query);
 348          $res=mysql_num_rows($result);
 349      }
 350      while ($res>0 && $count);
 351      return $sid;
 352  }
 353  
 354  
 355  //=================================================
 356  
 357  /**
 358  * Verifie le login et le mot de passe sur l'annuaire ldap et ouvre une session en cas de succes
 359  
 360  * @Parametres
 361  * @Return
 362  */
 363  
 364  function open_session($login, $passwd,$al)
 365  {
 366      global $urlauth, $authlink, $secook;
 367      global  $dbhost, $dbuser, $dbpass, $autologon, $REMOTE_ADDR;
 368      global $MsgError,$logpath,$defaultintlevel,$smbversion;
 369  
 370      $res=0;
 371      $loginauto="";
 372  
 373      // Initialisation
 374      $auth_ldap=0;
 375  
 376      if (($al!=1)&&("$autologon"=="1")){
 377  
 378          $logintstsecu=exec("smbstatus -p | grep \"(".$_SERVER['REMOTE_ADDR'].")\" | grep -v root | grep -v nobody | grep -v adminse3  | grep -v unattend | wc -l");
 379          if ("$logintstsecu" == "1") {
 380              $loginauto=exec("smbstatus -p |gawk '{if ($5==\"(".$_SERVER['REMOTE_ADDR'].")\") if ( ! index(\" root nobody unattend adminse3 \", \" \" $2 \" \")) {print $2;exit}}'");
 381          }
 382  
 383          # echo $loginauto . " __ smbstatus | grep $REMOTE_ADDR | grep home\  | head -n 1 | gawk -F' ' '{print $2}'";
 384          //$loginauto=exec("smbstatus | grep \"".$REMOTE_ADDR ."\" | head -n 1 | gawk -F' ' '{print $2}'");
 385          if ("$loginauto" != "") {
 386              $auth_ldap=1;
 387              $login=$loginauto;
 388          }
 389          //echo "-->";
 390      }
 391  
 392      if ($auth_ldap!=1) {
 393                          // decryptage du mot de passe
 394                          list ($passwd, $error,$ip_src,$timetotal) = decode_pass($passwd);
 395                          // Si le decodage ne comporte pas d'erreur
 396                          if (!$error) {
 397                                  $auth_ldap = user_valid_passwd ( $login ,  $passwd);
 398                                  if (!$auth_ldap) $error=4;
 399                          }
 400                          if ($error) {
 401                                  // Log en cas d'echec
 402                                  $fp=fopen($logpath."auth.log","a");
 403                                  if($fp) {
 404                                          fputs($fp,"[".$MsgError[$error]."] ".date("j/m/y:H:i")."|ip requete : ".$ip_src."|remote ip : ".remote_ip()."|Login : ".$login."|TimeStamp srv : ".time()."|TimeTotal : ".$timetotal."\n");
 405                                          fclose($fp);
 406                                  }
 407                          }
 408      }
 409      if ($auth_ldap) :
 410      $sessid=mksessid();
 411      setcookie("SambaEdu3", "$sessid", 0,"/","",$secook);
 412      $encode_pass = "secret";
 413      $result=mysql_query("INSERT INTO sessions  VALUES ('', '$sessid', '$encode_pass', '$login',0,$defaultintlevel)", $authlink);
 414      $res=1;
 415      endif;
 416      return $res;
 417  }
 418  
 419  
 420  //=================================================
 421  
 422  /**
 423  * Ferme la session en cours
 424  
 425  * @Parametres
 426  * @Return
 427  */
 428  
 429  function close_session()
 430  {
 431      /* Ferme la session en cours */
 432      global $authlink, $secook;
 433      if (empty($_COOKIE["SambaEdu3"])):
 434          $login="";
 435      else:
 436          $sess=$_COOKIE["SambaEdu3"];
 437          $result=mysql_query("DELETE FROM sessions WHERE sess='$sess'", $authlink);
 438          setcookie ("SambaEdu3", "", 0,"/","",$secook);
 439      endif;
 440  }
 441  
 442  
 443  //=================================================
 444  
 445  /**
 446  * Lis l'etat du flag help dans la table session (OBSOLETE)
 447  
 448  * @Parametres
 449  * @Return
 450  */
 451  
 452  
 453  /*
 454  function readhelp()
 455  {
 456      // Lis l'etat du flag help dans la table session
 457      global $authlink;
 458      $ret=0;
 459      if (! empty($_COOKIE["SambaEdu3"])):
 460          $sess=$_COOKIE["SambaEdu3"];
 461          $result = mysql_query("SELECT help FROM sessions WHERE sess='$sess'",$authlink);
 462          if ($result && mysql_num_rows($result)):
 463              $ret=mysql_result($result,0,0);
 464              mysql_free_result($result);
 465          endif;
 466      endif;
 467      return $ret;
 468  }
 469  */
 470  
 471  
 472  //=================================================
 473  
 474  /**
 475  * Change l'etat du flag help dans la table session (OBSOLETE)
 476  
 477  * @Parametres
 478  * @Return
 479  */
 480  
 481  /*
 482  function changehelp()
 483  {
 484      // Change l'etat du flag help dans la table session
 485      global $authlink;
 486  
 487      $ret=0;
 488      if (! empty($_COOKIE["SambaEdu3"])):
 489          $sess=$_COOKIE["SambaEdu3"];
 490          $query="SELECT help FROM sessions WHERE sess='$sess'";
 491          $result = mysql_query($query,$authlink);
 492          if ($result):
 493              $ret=mysql_result($result,0,0);
 494              mysql_free_result($result);
 495              if ($ret==0) $ret=1; else $ret=0;
 496              $result = mysql_query("UPDATE sessions SET help=$ret WHERE sess='$sess'",$authlink);
 497          endif;
 498      endif;
 499      return $ret;
 500  }
 501  */
 502  
 503  
 504  //=================================================
 505  
 506  /**
 507  * Retourne le niveau de l'interface
 508  
 509  * @Parametres
 510  * @Return
 511  */
 512  
 513  function getintlevel()
 514  {
 515      /* Lis le niveau d'interface dans la table session */
 516      global $authlink;
 517      $ret=0;
 518      if (! empty($_COOKIE["SambaEdu3"])):
 519          $sess=$_COOKIE["SambaEdu3"];
 520          $result = mysql_query("SELECT intlevel FROM sessions WHERE sess='$sess'",$authlink);
 521          if ($result && mysql_num_rows($result)):
 522              $ret=mysql_result($result,0,0);
 523              mysql_free_result($result);
 524          endif;
 525      endif;
 526      return $ret;
 527  }
 528  
 529  
 530  //=================================================
 531  
 532  /**
 533  * Change le niveau d'interface dans la table session
 534  
 535  * @Parametres
 536  * @Return
 537  */
 538  
 539  function setintlevel($new_level)
 540  {
 541      global $authlink;
 542  
 543      if (! empty($_COOKIE["SambaEdu3"])):
 544          $sess=$_COOKIE["SambaEdu3"];
 545          $result = mysql_query("UPDATE sessions SET intlevel=$new_level WHERE sess='$sess'",$authlink);
 546      if (!$result) echo "Erreur d'ecriture dans la table sessions\n";
 547      endif;
 548  }
 549  
 550  #
 551  # Fonctions utilitaires diverses
 552  #
 553  
 554  $offsets = array ( 31, 41, 59, 26, 54 );
 555  
 556  //=================================================
 557  
 558  /**
 559  * Retourne $val en hexa
 560  
 561  * @Parametres
 562  * @Return
 563  */
 564  
 565  function hexa ( $val ) {
 566    if ( empty ( $val ) )
 567      return 0;
 568    switch ( strtoupper ( $val ) ) {
 569      case "0": return 0;
 570      case "1": return 1;
 571      case "2": return 2;
 572      case "3": return 3;
 573      case "4": return 4;
 574      case "5": return 5;
 575      case "6": return 6;
 576      case "7": return 7;
 577      case "8": return 8;
 578      case "9": return 9;
 579      case "A": return 10;
 580      case "B": return 11;
 581      case "C": return 12;
 582      case "D": return 13;
 583      case "E": return 14;
 584      case "F": return 15;
 585    }
 586    return 0;
 587  }
 588  
 589  
 590  
 591  //=================================================
 592  
 593  /**
 594  * decode
 595  
 596  * @Parametres
 597  * @Return
 598  
 599  * Extract a user's name from a session id
 600  * This is a lame attempt at security.  Otherwise, users would be
 601  * able to edit their cookies.txt file and set the username in plain
 602  * text.
 603  * $instr is a hex-encoded string. "Hello" would be "678ea786a5".
 604  
 605  */
 606  
 607  function decode ( $instr ) {
 608      global $offsets;
 609      $orig = "";
 610      for ( $i = 0; $i < strlen ( $instr ); $i += 2 ) {
 611          $ch1 = substr ( $instr, $i, 1 );
 612          $ch2 = substr ( $instr, $i + 1, 1 );
 613          $val = hexa ( $ch1 ) * 16 + hexa ( $ch2 );
 614          $j = ( $i / 2 ) % count ( $offsets );
 615          $newval1 = $val - $offsets[$j] + 256;
 616          $newval1 %= 256;
 617          $dec_ch = chr ( $newval1 );
 618          $orig .= $dec_ch;
 619      }
 620      return $orig;
 621  }
 622  
 623  
 624  
 625  //=================================================
 626  
 627  /**
 628  * Take an input string and encoded it into a slightly encoded hexval, that we can use as a session cookie.
 629  
 630  * @Parametres
 631  * @Return
 632  */
 633  
 634  function encode ( $instr ) {
 635      global $offsets;
 636      $ret = "";
 637      for ( $i = 0; $i < strlen ( $instr ); $i++ ) {
 638          $ch1 = substr ( $instr, $i, 1 );
 639          $val = ord ( $ch1 );
 640          $j = $i % count ( $offsets );
 641          $newval = $val + $offsets[$j];
 642          $newval %= 256;
 643          $ret .= bin2hex ( chr ( $newval ) );
 644      }
 645      return $ret;
 646  }
 647  
 648  
 649  //=================================================
 650  
 651  /**
 652  * Affiche le formulaire des parametres correspondant a la categorie $cat
 653  
 654  * @Parametres
 655  * @Return
 656  */
 657  
 658  function aff_param_form($cat)
 659  {
 660      $texte_form="<TABLE BORDER=\"1\">";
 661      $result=mysql_query("SELECT * from params WHERE cat=$cat");
 662      if ($result) {
 663          while ($r=mysql_fetch_array($result)) {
 664              $texte_form .= "<TR><TD COLSPAN=\"2\">".$r["descr"]." (<EM><FONT color=\"red\">".$r["name"]."</FONT></EM>)</TD>";
 665              $texte_form .= "<TD><INPUT TYPE=\"text\" SIZE=\"25\" VALUE=\"".$r["value"]."\" NAME=\"form_".$r["name"]."\"></TD></TR>\n";
 666          }
 667      }
 668      $texte_form .= "</TABLE>";
 669      return $texte_form;
 670  }
 671  
 672  
 673  
 674  //
 675  // Fonctions relatives a lannuaire LDAP
 676  //
 677  
 678  
 679  
 680  //=================================================
 681  
 682  /**
 683  * Verification du mot de passe d'un utilisateur
 684  
 685  * @Parametres
 686  * @Return  true si le mot de passe est valide, false dans les autres cas
 687  */
 688  
 689  function user_valid_passwd ( $login, $password ) {
 690    global $ldap_server, $ldap_port, $dn;
 691  
 692    $filter = "(userpassword=*)";
 693    $ret = false;
 694    $DEBUG = false;
 695  
 696    $ds = @ldap_connect ( $ldap_server, $ldap_port );
 697    if ( $ds ) {
 698      $r = @ldap_bind ( $ds,"uid=".$login.",".$dn["people"] , $password );
 699      if ( $r ) {
 700        $read_result=@ldap_read ($ds, "uid=".$login.",".$dn["people"], $filter);
 701        if ($read_result) {
 702          $entrees = @ldap_get_entries($ds,$read_result);
 703          if ($entrees[0]["userpassword"][0]) {
 704            $ret= true;
 705          } else {
 706            $error = gettext("Mot de passe invalide");
 707          }
 708        } else {
 709          $error = gettext("Login invalide");
 710        }
 711      } else {
 712        $error = gettext("L'Authentification a \xe9chou\xe9e");
 713      }
 714      @ldap_unbind ($ds);
 715      @ldap_close ($ds);
 716    } else {
 717      $error = gettext("Erreur de connection au serveur LDAP");
 718    }
 719    if ($DEBUG) echo "$error<BR>\n";
 720    return $ret;
 721  }
 722  
 723  
 724  
 725  //=================================================
 726  
 727  /**
 728  *  Function to search the dn of a given user
 729  
 730  * @Parametres $login - user login
 731  * @Parametres $dn - complete dn for the user (must be given by ref )
 732  * @Return TRUE if the user is found, FALSE in other case
 733  */
 734  
 735  
 736  function user_search_dn ( $login ,$dn ) {
 737    global $error, $ldap_server, $ldap_port, $ldap_base_dn, $ldap_login_attr,$peopleRdn;
 738    global $adminDn,$adminPw;
 739  
 740    $ret = false;
 741        echo $peopleDn;
 742    $ds = @ldap_connect ( $ldap_server, $ldap_port );
 743    if ( $ds ) {
 744      if ( $adminDn != "") {
 745        $r = @ldap_bind ( $ds, $adminDn, $adminPw ); // bind as administrator
 746  
 747      } else {
 748        $r = @ldap_bind ( $ds ); // bind as anonymous
 749      }
 750      if (!$r) {
 751        $error = "Invalid Admin's login for LDAP Server";
 752      } else {
 753        $sr = @ldap_search ( $ds, "$peopleRdn,$ldap_base_dn", "($ldap_login_attr=$login)");
 754        if (!$sr) {
 755          $error = "Error searching LDAP server: " . ldap_error($ds);
 756        } else {
 757          $info = @ldap_get_entries ( $ds, $sr );
 758          if ( $info["count"] != 1 ) {
 759           $error = "Invalid login";
 760          } else {
 761            $ret = true;
 762            $dn = $info[0]["dn"];
 763            // echo "Found dn : $dn\n";
 764          }
 765          @ldap_free_result ( $sr );
 766        }
 767        @ldap_close ( $ds );
 768      }
 769    } else {
 770      $error = "Error connecting to LDAP server";
 771      $ret = false;
 772    }
 773    return $ret;
 774  }
 775  
 776  
 777  //=================================================
 778  
 779  /**
 780  * Recherche si $nom est present dans le droit $type
 781  
 782  * @Parametres
 783  * @Return
 784  */
 785  
 786  function ldap_get_right_search ($type,$search_filter,$ldap)
 787  {
 788      global $dn,$login;
 789      $ret="N";
 790      $typearr=explode("|","$type");
 791      $i=0;
 792      while (($ret=="N") and ($i < count($typearr))) {
 793        $base_search="cn=".$typearr[$i]."," . $dn["rights"];
 794        $search_attributes=array("cn");
 795        $result = @ldap_read($ldap, $base_search, $search_filter, $search_attributes);
 796        if ($result) {
 797          if (ldap_count_entries ($ldap,$result) == 1) $ret="Y";
 798          ldap_free_result($result);
 799        } else {
 800      // Analyse pour les membres d'un groupe
 801          $base_search="cn=".$typearr[$i]."," . $dn["groups"];
 802          $result = @ldap_read($ldap, $base_search, "memberUid=$login", $search_attributes);
 803          if ($result) {
 804            if (ldap_count_entries ($ldap,$result) == 1) $ret="Y";
 805            ldap_free_result($result);
 806          }
 807        }
 808        $i++;
 809    }
 810      // echo "recherche $type $search_filter ==> $ret<BR>";
 811      return $ret;
 812  }
 813  
 814  
 815  //=================================================
 816  
 817  /**
 818  * Met a jour un parametre dans la table params de la base SQL
 819  
 820  * @Parametres
 821  * @Return
 822  */
 823  
 824  function setparam($name,$value)
 825  {
 826          $query="UPDATE params SET value=\"$value\" WHERE name=\"$name\"";
 827          $result=mysql_query($query);
 828          if (!$result) print gettext("oops: la requete "). "<STRONG>$query</STRONG>" . gettext(" a provoqu&#233; une erreur");
 829  }
 830  
 831  
 832  
 833  //=================================================
 834  
 835  /**
 836  * Detrmine si $login a le droit $type
 837  
 838  * @Parametres
 839  * @Return
 840  */
 841  
 842  function ldap_get_right($type,$login)
 843  {
 844      global $ldap_server, $ldap_port, $adminDn, $adminPw, $dn;
 845  
 846      $nom="uid=" . $login . "," . $dn["people"];
 847      $ret="N";
 848      $ldap = ldap_connect ($ldap_server, $ldap_port);
 849      if ( !$ldap ) {
 850          echo "Error connecting to LDAP server";
 851      } else {
 852          if ( $adminDn != "") {
 853              $r = ldap_bind ( $ldap, $adminDn, $adminPw );     // bind as administrator
 854          } else {
 855              $r = ldap_bind ( $ldap ); // bind as anonymous
 856          }
 857          if (!$r) {
 858              echo "Invalid Admin's login for LDAP Server";
 859          } else {
 860  
 861              // Recherche du nom exact
 862              $search_filter = "(member=$nom)";
 863              //$ret=ldap_get_right_search ($type,$search_filter,$ldap,$base_search);
 864              $ret=ldap_get_right_search ($type,$search_filter,$ldap);
 865              if ($ret=="N") {
 866              // Recherche sur les Posixgroups d'appartenance
 867                  $result1 = @ldap_list ( $ldap, $dn["groups"], "memberUid=$login", array ("cn") );
 868                  if ($result1) {
 869                  $info = @ldap_get_entries ( $ldap, $result1 );
 870                     if ( $info["count"]) {
 871                      $loop=0;
 872                      while (($loop < $info["count"]) && ($ret=="N")){
 873                          $search_filter = "(member=cn=".$info[$loop]["cn"][0].",".$dn["groups"].")";
 874                          //$ret=ldap_get_right_search ($type,$search_filter,$ldap,$base_search,$search_attributes);
 875                          $ret=ldap_get_right_search ($type,$search_filter,$ldap);
 876                          $loop++;
 877                      }
 878                  }
 879                  @ldap_free_result ( $result1 );
 880                  }
 881              }
 882              if ($ret=="N") {
 883              // Recherche sur les GroupsOfNames d'appartenance
 884                  $result1 = @ldap_list ( $ldap, $dn["groups"], "member=uid=$login,".$dn["people"], array ("cn") );
 885                  if ($result1) {
 886                  $info = @ldap_get_entries ( $ldap, $result1 );
 887                     if ( $info["count"]) {
 888                      $loop=0;
 889                      while (($loop < $info["count"]) && ($ret=="N")){
 890                          $search_filter = "(member=cn=".$info[$loop]["cn"][0].",".$dn["groups"].")";
 891                          //$ret=ldap_get_right_search ($type,$search_filter,$ldap,$base_search,$search_attributes);
 892                          $ret=ldap_get_right_search ($type,$search_filter,$ldap);
 893                          $loop++;
 894                      }
 895                  }
 896                  @ldap_free_result ( $result1 );
 897                  }
 898              }
 899          }
 900      ldap_close ($ldap);
 901      }
 902      return $ret;
 903  }
 904  
 905  
 906  /*
 907  /** Fonctions liees a la creation de partages, de ressources...
 908  /*
 909  
 910  
 911  
 912  //=================================================
 913  
 914  /**
 915  * Recherche de la nature mono ou multi serveur de la plateforme SE3
 916  
 917  * @Parametres Retourne true si "mono seveur" cad un seul serveur maitre
 918  * @Parametres Retourne false si "multi-serveur" cad 1 serveur maitre associe a 1 ou des serveurs esclaves
 919  * @Return
 920  */
 921  
 922  function mono_srv () {
 923      $master=search_machines ("(l=maitre)", "computers");
 924          $slaves= search_machines ("(l=esclave)", "computers");
 925          if ( count($master) == 0 ) {
 926              echo gettext("<P>ERREUR : Il n'y a pas de serveur maitre d&#233;clar&#233; dans l'annuaire ! <BR>Veuillez contacter le super utilisateur du serveur SE3.</P>");
 927          } elseif (  count($master) == 1  && count($slaves) == 0 ) {
 928              // Plateforme mono-serveur
 929          return true;
 930          } elseif (  count($master) == 1  && count($slaves) > 0  ) {
 931          return false;
 932          }
 933  }
 934  
 935  
 936  
 937  //=================================================
 938  
 939  /**
 940  * Affiche les info-bulles si le champ infobul_activ est a 1
 941  
 942  * @Parametres
 943  * @Return
 944  */
 945  
 946  function aide($texte_aide,$caption="?") { //Affiche les info-bulles si le champ infobul_activ est a 1
 947      global $infobul_activ;
 948      if (!$texte_aide) { return false ;} else {
 949          if ($infobul_activ=="1") {  return "<u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape('$texte_aide')\">$caption</u>";
 950  
 951          } else { return $caption;}
 952      }
 953  }
 954  
 955  
 956  
 957  //=================================================
 958  
 959  /**
 960  * permet de savoir si ce parc est delegue  a ce login pour le niveau donne
 961  
 962  * @Parametres
 963  * @Return
 964  */
 965  
 966  function this_parc_delegate($login,$parc,$niveau)
 967  {
 968      require "config.inc.php";
 969      $authlink_delegate = @mysql_connect($dbhost,$dbuser,$dbpass);
 970      @mysql_select_db($dbname) or die("Impossible de se connecter &#224; la base $dbname.");
 971      $query_delegate="SELECT `parc` FROM `delegation` WHERE `login`='$login' and `parc`='$parc' and `niveau`='$niveau';";
 972      $result_delegate=mysql_query($query_delegate);
 973      if ($result_delegate) {
 974          $ligne_delegate=mysql_num_rows($result_delegate);
 975          if ($ligne_delegate>0) { return true; } else { return false;}
 976      } else { return false;}
 977      mysql_close($authlink_delegate);
 978  }
 979  
 980  
 981  //=================================================
 982  
 983  /**
 984  * donne la liste des parcs delegue pour le login donne
 985  
 986  * @Parametres
 987  * @Return
 988  */
 989  
 990  function list_parc_delegate($login)
 991  {
 992  require "config.inc.php";
 993  
 994  $authlink_delegate = @mysql_connect($dbhost,$dbuser,$dbpass);
 995  @mysql_select_db($dbname) or die("Impossible de se connecter &#224; la base $dbname.");
 996  
 997     $query="select parc from delegation where login='$login';";
 998     $list_delegate=array();
 999      $result= mysql_query($query);
1000      if ($result)
1001      { $ligne= mysql_num_rows($result);
1002        if ($ligne>0)
1003           {
1004              while ($row=mysql_fetch_row($result))
1005            {
1006            array_push($list_delegate,$row[0]);
1007           // echo $row[0];
1008            }
1009            }
1010       }
1011       sort($list_delegate);
1012  return $list_delegate;
1013  mysql_close($authlink_delegate);
1014  
1015  }
1016  
1017  
1018  //=================================================
1019  
1020  /**
1021  * permet de savoir si une machine est dans un des parcs delegue pour le login donne
1022  
1023  * @Parametres
1024  * @Return
1025  */
1026  
1027  function in_parc_delegate($login,$machine)
1028  {
1029      $list_parc_user=list_parc_delegate($login);
1030      $list_parc_machine=search_parcs($machine);
1031      for($i=0;$i<count($list_parc_machine);$i++) {
1032          if  (in_array($list_parc_machine[$i]["cn"],$list_parc_user)) { /*echo "test de ".$list_parc_machine[$i]["cn"]." ok";*/ $test++; break; } else { /*echo "test de ".$list_parc_machine[$i]["cn"]." non";*/ }
1033          }
1034      if ($test) { /*echo "cette machine fait partie des machines d&#233;l&#233;gu&#233;s";*/ return true; } else { return false; }
1035  }
1036  
1037  
1038  
1039  //=================================================
1040  
1041  /**
1042  * Retourne le niveau de delegation en fonction du login et du nom du parc
1043  
1044  * @Parametres $login et $parc
1045  * @Return niveau de delegation
1046  */
1047  
1048  function niveau_parc_delegate($login,$parc)
1049  {
1050      require "config.inc.php";
1051  
1052      $authlink_delegate = @mysql_connect($dbhost,$dbuser,$dbpass);
1053      @mysql_select_db($dbname) or die("Impossible de se connecter &#224; la base $dbname.");
1054  
1055         $query="select niveau  from delegation where login='$login' and parc='$parc';";
1056          $result= mysql_query($query);
1057          if ($result) {
1058          $ligne= mysql_num_rows($result);
1059                if ($ligne>0) {
1060                      while ($row=mysql_fetch_row($result)) {
1061                        $niveau_delegate = $row[0];
1062                       // echo $row[0];
1063                    }
1064                }
1065           }
1066  
1067      return $niveau_delegate;
1068      mysql_close($authlink_delegate);
1069  
1070  }
1071  
1072  /**
1073  * Fonction destinee a afficher les variables transmises d'une page a l'autre: GET, POST et SESSION
1074  
1075  * @Parametres
1076  * @Return
1077  */
1078  $debug_var_count=array();
1079  function debug_var() {
1080      global $debug_var_count;
1081  
1082      $debug_var_count['POST']=0;
1083      $debug_var_count['GET']=0;
1084  
1085      $debug_var_count['COOKIE']=0;
1086  
1087      // Fonction destinée à afficher les variables transmises d'une page à l'autre: GET, POST et SESSION
1088      echo "<div style='border: 1px solid black; background-color: white; color: black;'>\n";
1089  
1090      $cpt_debug=0;
1091  
1092      echo "<p><strong>Variables transmises en POST, GET, SESSION,...</strong> (<a href='#' onclick=\"tab_etat_debug_var[$cpt_debug]=tab_etat_debug_var[$cpt_debug]*(-1);affiche_debug_var('container_debug_var_$cpt_debug',tab_etat_debug_var[$cpt_debug]);return false;\">*</a>)</p>\n";
1093  
1094      echo "<div id='container_debug_var_$cpt_debug'>\n";
1095      $cpt_debug++;
1096  
1097      echo "<p>Variables envoyées en POST: ";
1098      if(count($_POST)==0) {
1099          echo "aucune";
1100      }
1101      else {
1102          echo "(<a href='#' onclick=\"tab_etat_debug_var[$cpt_debug]=tab_etat_debug_var[$cpt_debug]*(-1);affiche_debug_var('container_debug_var_$cpt_debug',tab_etat_debug_var[$cpt_debug]);return false;\">*</a>)";
1103      }
1104      echo "</p>\n";
1105      echo "<blockquote>\n";
1106      echo "<div id='container_debug_var_$cpt_debug'>\n";
1107      $cpt_debug++;
1108  
1109      echo "<script type='text/javascript'>
1110      tab_etat_debug_var=new Array();
1111  
1112  	function affiche_debug_var(id,mode) {
1113          if(document.getElementById(id)) {
1114              if(mode==1) {
1115                  document.getElementById(id).style.display='';
1116              }
1117              else {
1118                  document.getElementById(id).style.display='none';
1119              }
1120          }
1121      }
1122  </script>\n";
1123      /*
1124      echo "<table summary=\"Tableau de debug\">\n";
1125      foreach($_POST as $post => $val){
1126          //echo "\$_POST['".$post."']=".$val."<br />\n";
1127          //echo "<tr><td>\$_POST['".$post."']=</td><td>".$val."</td></tr>\n";
1128          echo "<tr><td valign='top'>\$_POST['".$post."']=</td><td>".$val;
1129  
1130          if(is_array($_POST[$post])) {
1131              echo " (<a href='#' onclick=\"tab_etat_debug_var[$cpt_debug]=tab_etat_debug_var[$cpt_debug]*(-1);affiche_debug_var('container_debug_var_$cpt_debug',tab_etat_debug_var[$cpt_debug]);return false;\">*</a>)";
1132              echo "<table id='container_debug_var_$cpt_debug' summary=\"Tableau de debug\">\n";
1133              foreach($_POST[$post] as $key => $value) {
1134                  echo "<tr><td>\$_POST['$post'][$key]=</td><td>$value</td></tr>\n";
1135              }
1136              echo "</table>\n";
1137              //echo "<script type='text/javascript'>affiche_debug_var('debug_var_$post',tab_etat_debug_var[$cpt_debug]);</script>\n";
1138              $cpt_debug++;
1139          }
1140  
1141          echo "</td></tr>\n";
1142      }
1143      echo "</table>\n";
1144      */
1145  
1146  	function tab_debug_var($chaine_tab_niv1,$tableau,$pref_chaine,$cpt_debug) {
1147          //global $cpt_debug;
1148          global $debug_var_count;
1149  
1150          echo " (<a href='#' onclick=\"tab_etat_debug_var[$cpt_debug]=tab_etat_debug_var[$cpt_debug]*(-1);affiche_debug_var('container_debug_var_$cpt_debug',tab_etat_debug_var[$cpt_debug]);return false;\">*</a>)\n";
1151  
1152          echo "<table id='container_debug_var_$cpt_debug' summary=\"Tableau de debug\">\n";
1153          foreach($tableau as $post => $val) {
1154              echo "<tr><td valign='top'>".$pref_chaine."['".$post."']=</td><td>".$val;
1155  
1156              if(is_array($tableau[$post])) {
1157  
1158                  tab_debug_var($chaine_tab_niv1,$tableau[$post],$pref_chaine.'['.$post.']',$cpt_debug);
1159  
1160                  $cpt_debug++;
1161              }
1162              elseif(isset($debug_var_count[$chaine_tab_niv1])) {
1163                  $debug_var_count[$chaine_tab_niv1]++;
1164              }
1165  
1166              echo "</td></tr>\n";
1167          }
1168          echo "</table>\n";
1169      }
1170  
1171  
1172      echo "<table summary=\"Tableau de debug\">\n";
1173      foreach($_POST as $post => $val) {
1174          echo "<tr><td valign='top'>\$_POST['".$post."']=</td><td>".$val;
1175  
1176          if(is_array($_POST[$post])) {
1177              tab_debug_var('POST',$_POST[$post],'$_POST['.$post.']',$cpt_debug);
1178  
1179              $cpt_debug++;
1180          }
1181          else {
1182              $debug_var_count['POST']++;
1183          }
1184  
1185          echo "</td></tr>\n";
1186      }
1187      echo "</table>\n";
1188  
1189      echo "<p>Nombre de valeurs en POST: <b>".$debug_var_count['POST']."</b></p>\n";
1190      echo "</div>\n";
1191      echo "</blockquote>\n";
1192  
1193  
1194      echo "<p>Variables envoyées en GET: ";
1195      if(count($_GET)==0) {
1196          echo "aucune";
1197      }
1198      else {
1199          echo "(<a href='#' onclick=\"tab_etat_debug_var[$cpt_debug]=tab_etat_debug_var[$cpt_debug]*(-1);affiche_debug_var('container_debug_var_$cpt_debug',tab_etat_debug_var[$cpt_debug]);return false;\">*</a>)";
1200      }
1201      echo "</p>\n";
1202      echo "<blockquote>\n";
1203      echo "<div id='container_debug_var_$cpt_debug'>\n";
1204      $cpt_debug++;
1205      echo "<table summary=\"Tableau de debug sur GET\">";
1206      foreach($_GET as $get => $val){
1207          //echo "\$_GET['".$get."']=".$val."<br />\n";
1208          //echo "<tr><td>\$_GET['".$get."']=</td><td>".$val."</td></tr>\n";
1209  
1210          echo "<tr><td valign='top'>\$_GET['".$get."']=</td><td>".$val;
1211  
1212          if(is_array($_GET[$get])) {
1213              tab_debug_var('GET',$_GET[$get],'$_GET['.$get.']',$cpt_debug);
1214  
1215              $cpt_debug++;
1216          }
1217          else {
1218              $debug_var_count['GET']++;
1219          }
1220  
1221          echo "</td></tr>\n";
1222      }
1223      echo "</table>\n";
1224      echo "</div>\n";
1225      echo "</blockquote>\n";
1226  
1227  
1228      echo "<p>Variables envoyées en SESSION: ";
1229      if(count($_SESSION)==0) {
1230          echo "aucune";
1231      }
1232      else {
1233          echo "(<a href='#' onclick=\"tab_etat_debug_var[$cpt_debug]=tab_etat_debug_var[$cpt_debug]*(-1);affiche_debug_var('container_debug_var_$cpt_debug',tab_etat_debug_var[$cpt_debug]);return false;\">*</a>)";
1234      }
1235      echo "</p>\n";
1236      echo "<blockquote>\n";
1237      echo "<div id='container_debug_var_$cpt_debug'>\n";
1238      $cpt_debug++;
1239      echo "<table summary=\"Tableau de debug sur SESSION\">";
1240      foreach($_SESSION as $variable => $val){
1241          //echo "\$_SESSION['".$variable."']=".$val."<br />\n";
1242          echo "<tr><td>\$_SESSION['".$variable."']=</td><td>".$val."</td></tr>\n";
1243      }
1244      echo "</table>\n";
1245      echo "</div>\n";
1246      echo "</blockquote>\n";
1247  
1248  
1249      echo "<p>Variables envoyées en SERVER: ";
1250      if(count($_SERVER)==0) {
1251          echo "aucune";
1252      }
1253      else {
1254          echo "(<a href='#' onclick=\"tab_etat_debug_var[$cpt_debug]=tab_etat_debug_var[$cpt_debug]*(-1);affiche_debug_var('container_debug_var_$cpt_debug',tab_etat_debug_var[$cpt_debug]);return false;\">*</a>)";
1255      }
1256      echo "</p>\n";
1257      echo "<blockquote>\n";
1258      echo "<div id='container_debug_var_$cpt_debug'>\n";
1259      $cpt_debug++;
1260      echo "<table summary=\"Tableau de debug sur SERVER\">";
1261      foreach($_SERVER as $variable => $valeur){
1262          //echo "\$_SERVER['".$variable."']=".$valeur."<br />\n";
1263          echo "<tr><td>\$_SERVER['".$variable."']=</td><td>".$valeur."</td></tr>\n";
1264      }
1265      echo "</table>\n";
1266      echo "</div>\n";
1267      echo "</blockquote>\n";
1268  
1269  
1270      echo "<p>Variables envoyées en FILES: ";
1271      if(count($_FILES)==0) {
1272          echo "aucune";
1273      }
1274      else {
1275          echo "(<a href='#' onclick=\"tab_etat_debug_var[$cpt_debug]=tab_etat_debug_var[$cpt_debug]*(-1);affiche_debug_var('container_debug_var_$cpt_debug',tab_etat_debug_var[$cpt_debug]);return false;\">*</a>)";
1276      }
1277      echo "</p>\n";
1278      echo "<blockquote>\n";
1279      echo "<div id='container_debug_var_$cpt_debug'>\n";
1280      $cpt_debug++;
1281  
1282      echo "<table summary=\"Tableau de debug\">\n";
1283      foreach($_FILES as $key => $val) {
1284          echo "<tr><td valign='top'>\$_FILES['".$key."']=</td><td>".$val;
1285  
1286          if(is_array($_FILES[$key])) {
1287              tab_debug_var('FILES',$_FILES[$key],'$_FILES['.$key.']',$cpt_debug);
1288  
1289              $cpt_debug++;
1290          }
1291  
1292          echo "</td></tr>\n";
1293      }
1294      echo "</table>\n";
1295  
1296      echo "</div>\n";
1297      echo "</blockquote>\n";
1298  
1299      echo "<p>Variables COOKIES: ";
1300      if(count($_COOKIE)==0) {
1301          echo "aucune";
1302      }
1303      else {
1304          echo "(<a href='#' onclick=\"tab_etat_debug_var[$cpt_debug]=tab_etat_debug_var[$cpt_debug]*(-1);affiche_debug_var('container_debug_var_$cpt_debug',tab_etat_debug_var[$cpt_debug]);return false;\">*</a>)";
1305      }
1306      echo "</p>\n";
1307      echo "<blockquote>\n";
1308      echo "<div id='container_debug_var_$cpt_debug'>\n";
1309      $cpt_debug++;
1310      echo "<table summary=\"Tableau de debug sur COOKIE\">";
1311      foreach($_COOKIE as $get => $val){
1312  
1313          echo "<tr><td valign='top'>\$_COOKIE['".$get."']=</td><td>".$val;
1314  
1315          if(is_array($_COOKIE[$get])) {
1316              tab_debug_var('COOKIE',$_COOKIE[$get],'$_COOKIE['.$get.']',$cpt_debug);
1317  
1318              $cpt_debug++;
1319          }
1320          else {
1321              $debug_var_count['COOKIE']++;
1322          }
1323  
1324          echo "</td></tr>\n";
1325      }
1326      echo "</table>\n";
1327      echo "</div>\n";
1328      echo "</blockquote>\n";
1329  
1330  
1331      echo "<script type='text/javascript'>
1332      // On masque le cadre de debug au chargement:
1333      //affiche_debug_var('container_debug_var',var_debug_var_etat);
1334  
1335      //for(i=0;i<tab_etat_debug_var.length;i++) {
1336      for(i=0;i<$cpt_debug;i++) {
1337          if(document.getElementById('container_debug_var_'+i)) {
1338              affiche_debug_var('container_debug_var_'+i,-1);
1339          }
1340          // Variable destinée à alterner affichage/masquage
1341          tab_etat_debug_var[i]=-1;
1342      }
1343  </script>\n";
1344  
1345      echo "</div>\n";
1346      echo "</div>\n";
1347  }
1348  ?>


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