[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/var/www/se3/dossier_echange/ -> dossier_echange.php (source)

   1   <?php
   2  
   3  /**
   4     
   5     * Gestion des dossiers /var/se3/Classes/Classe_XXX/_echange
   6     * @Version $Id: dossier_echange.php 7315 2012-06-29 16:01:16Z plouf $
   7     
   8     * @Projet SE3
   9     
  10     * @auteurs Humblement bricole par Stephane Boireau (AS Bernay/Pont-Audemer (27)) d'apres plusieurs pages;o):
  11  
  12     * @note Et j'ai emprunte la fonction classes_prof() a la page echanges/distribuer.php de Jean Gourdin - Pierre-Yves Petit
  13  
  14     * @Licence Distribue selon les termes de la licence GPL
  15  */
  16  
  17  
  18  
  19  /**
  20      * @Repertoire  dossier_echange/
  21      * file dossier_echange.php
  22  */
  23  
  24  
  25    include  "entete.inc.php";
  26    include  "ldap.inc.php";
  27    include  "ihm.inc.php";
  28  
  29    require_once  ("lang.inc.php");
  30    bindtextdomain('se3-dossier_echange',"/var/www/se3/locale");
  31    textdomain ('se3-dossier_echange');
  32  
  33    foreach ($_POST as $cle=>$val) {
  34      $$cle = $val;
  35    }
  36  
  37  
  38    //Pour tenir compte des essais...
  39    $nom_de_la_page="dossier_echange.php";
  40  
  41    echo "<h1>".gettext("Gestion des dossiers d'&#233change")."</h1>";
  42  
  43    //if (is_admin("se3_is_admin",$login)=="Y") {
  44  
  45      //aide
  46      $_SESSION["pageaide"]="Ressources_et_partages#Dossier_.C3.A9change";
  47  
  48  
  49  
  50      //La gestion multi-serveur n'est pas en place...
  51      //Je l'ai laissee en pensant faire des essais par la suite,
  52      //mais je n'ai encore jamais fait l'install multi-serveur
  53      //et par consequent, je n'en ai pas sous le coude pour tester;o).
  54  
  55  
  56      // Prepositionnement variables
  57      $mono_srv = false;
  58      $multi_srv = false;
  59      // Recherche de la nature mono ou multi serveur de la plateforme SE3
  60      $master=search_machines ("(l=maitre)", "computers");
  61      $slaves= search_machines ("(l=esclave)", "computers");
  62      if ( count($master) == 0 ) {
  63          echo gettext("<P>ERREUR : Il n'y a pas de serveur maitre d&#233clar&#233 dans l'annuaire ! <BR>Veuillez contacter le super utilisateur du serveur SE3.</P>");
  64      } elseif (  count($master) == 1  && count($slaves) == 0 ) {
  65          // Plateforme mono-serveur
  66          $mono_srv = true;
  67      } elseif (  count($master) == 1  && count($slaves) > 0  ) {
  68          $multi_srv = true;
  69      }
  70      // Fin Recherche de la nature mono ou multi serveur de la plateforme SE3
  71  
  72      if ( $mono_srv ) {
  73          // configuration mono serveur  : determination des parametres du serveur
  74          $serveur=search_machines ("(l=maitre)", "computers");
  75          $cn_srv= $serveur[0]["cn"];
  76          $stat_srv = $serveur[0]["l"];
  77          $ipHostNumber =  $serveur[0]["ipHostNumber"];
  78      } elseif ($multi_srv) {
  79          // configuration multi-serveurs : presentation d'un form de selection du serveur
  80          if ( !$selected_srv && !$del_folders_classes) {
  81              echo gettext("<P><H3>S&#233lection du serveur ou vous souhaitez lister les ressources classes disponibles : </H3>");
  82              $servers=search_computers ("(|(l=esclave)(l=maitre))");
  83              echo "<form action=\"$nom_de_la_page\" method=\"post\">\n";
  84              for ($loop=0; $loop < count($servers); $loop++) {
  85                  echo $servers[$loop]["description"]." ".$servers[$loop]["cn"]."&nbsp;<input type=\"radio\" name=\"cn_srv\" value =\"".$servers[$loop]["cn"]."\"";
  86                  if ($loop==0) echo "checked";
  87                  echo "><BR>\n";
  88              }
  89              $form="<input type=\"reset\" value=\"R&#233;initialiser la s&#233;lection\">\n";
  90              $form ="<input type=\"hidden\" name=\"selected_srv\" value=\"true\">\n";
  91              $form.="<input type=\"submit\" value=\"Valider\">\n";
  92              $form.="</form>\n";
  93              echo $form;
  94          } elseif ( $selected_srv && $multi_srv) {
  95              // configuration multi serveurs  : determination des parametres du serveur
  96              $serveur=search_machines ("(cn=$cn_srv)", "computers");
  97              $stat_srv = $serveur[0]["l"];
  98              $ipHostNumber =  $serveur[0]["ipHostNumber"];
  99          }
 100      }
 101  
 102  
 103  
 104      // Recherche des ressources classes existantes
 105      if (is_admin("se3_is_admin",$login)=="Y") {
 106          if ($stat_srv == "maitre") {
 107              // Serveur maitre  :  Recherche des ressources classes existantes
 108              // ouverture du repertoire Classes
 109              $loop=0;
 110              $repClasses = dir ("/var/se3/Classes/");
 111              // recuperation de chaque entree
 112              while ($ressource =  $repClasses->read()) {
 113                  if ( preg_match("/^Classe_/", $ressource) ) {
 114                      $list_ressources[$loop]= $ressource;
 115                      $loop++;
 116                  }
 117              }
 118              $repClasses->close();
 119          } elseif  ($stat_srv == "esclave") {
 120              // Serveur esclave :  Recherche des ressources classes existantes
 121              exec ("ssh -l remote_adm $ipHostNumber 'ls /var/se3/Classes'", $list_ressources, $ReturnValue);
 122          }
 123      }
 124      else{
 125          include ("fonc_outils.inc.php");
 126          $list_ressources=classes_prof($login);
 127      }
 128      // Fin  Recherche des ressources classes existantes
 129  
 130  
 131  
 132      // Presentation de la liste  des ressources disponibles
 133      if (  ($stat_srv == "maitre" || $stat_srv == "esclave")  ) {
 134  
 135          //Le choix des classes a traiter est-il fait?
 136          if(!isset($choice_done)){
 137              //echo "<H3>".gettext("Liste des ressources  Classes disponibles sur le serveur "). "$cn_srv</H3>\n";
 138              echo "<H3>".gettext("Cr&#233ation/Activation/D&#233sactivation des dossiers _echange sur le serveur "). "$cn_srv</H3>\n";
 139              if (count($list_ressources) == 0 ) {
 140                  echo "<P>".gettext("Il n'y a pas de ressources Classes sur ce serveur !")."</P>\n";
 141              }  else {
 142                  if   ( count($list_ressources)>10) $size=10; else $size=count($list_ressources);
 143                  //echo "<h4>Cr&#233;ation/Activation/D&#233;sactivation des dossiers _echange</h4>";
 144                  //echo "<form>\n";
 145                  echo "<form action=\"$nom_de_la_page\" method=\"post\">\n";
 146                  // Affichage liste des ressources disponibles
 147                  /*
 148                  echo "<select size=\"".$size."\" name=\"list_classes[]\" multiple=\"multiple\">\n";
 149                  for ($loop=0; $loop<count($list_ressources);$loop++) {
 150                      echo "<option value=".$list_ressources[$loop].">".$list_ressources[$loop]."\n";
 151                  }
 152                  echo "</select><br>\n";
 153                  */
 154  
 155                  /*
 156                  //AJOUT MODIF
 157                  */
 158                  echo "<p>".gettext("Les boutons sont plac&#233s dans l'&#233tat actuel.")."<br>\n";
 159                  echo gettext("Seules les classes pour lesquelles vous modifierez le choix seront affect&#233es.")."<br>\n";
 160                  echo gettext("L'acc&#232s au dossier I:\public est aussi activ&#233/verrouill&#233 par la m&#234me op&#233ration.")."</p>\n";
 161                  echo "<table border=\"1\">";
 162                  echo "<tr class=\"menuheader\" height=\"30\" style=\"font-weight:bold;\" align=\"center\">";
 163                  echo "<td>".gettext("Classe")."</td>";
 164                  echo "<td>".gettext("Etat actuel")."</td>";
 165                  echo "<td>".gettext("Actif")."</td>";
 166                  echo "<td>".gettext("Verrouill&#233")."</td>";
 167                  echo "<td>".gettext("R&#233activer<br>automatiquement<br>l'acc&#232s<br> apr&#232s...")."</td></tr>\n";
 168                  for ($loop=0; $loop<count($list_ressources);$loop++) {
 169                      //Recuperation de l'etat actuel:
 170                      exec ("/usr/bin/sudo /usr/share/se3/scripts/echange_classes.sh \"$list_ressources[$loop]\" \"etat\"",$resultat);
 171                      
 172                      // Si actif
 173                      $color_actif="";
 174                      $pre_selectionne="";
 175                      if("$resultat[0]"=="actif"){
 176                          $color_actif=" bgcolor=\"#00FF00\"";
 177                          $pre_selectionne=" checked=\"true\"";
 178                      }
 179  
 180                      echo "<tr align=\"center\" $color_actif>\n";
 181                      echo "<td>$list_ressources[$loop]<input type=\"hidden\" name=\"list_classes[$loop]\" value=\"$list_ressources[$loop]\"></td>\n";
 182                      echo "<td>$resultat[0]<input type=\"hidden\" name=\"etat_actuel[$loop]\" value=\"$resultat[0]\"></td>\n";
 183  
 184                      echo "<td><input type=\"radio\" name=\"activate[$loop]\" value=\"actif\"$pre_selectionne></td>\n";
 185  
 186                      $pre_selectionne="";
 187                      if("$resultat[0]"=="verrouille"){
 188                          $pre_selectionne=" checked=\"true\"";
 189                      }
 190                      echo "<td><input type=\"radio\" name=\"activate[$loop]\" value=\"verrouille\"$pre_selectionne></td>\n";
 191  
 192                      //Delai:
 193                      echo "<td>\n";
 194                      echo "<input type=\"checkbox\" name=\"delai[$loop]\" value=\"oui\">\n";
 195                      echo "<select name=\"heures[$loop]\">\n";
 196                      for($i=0;$i<=12;$i++){
 197                          echo "<option value=\"$i\">$i</option>\n";
 198                      }
 199                      echo "</select> H \n";
 200                      echo "<select name=\"minutes[$loop]\">\n";
 201                      for($i=0;$i<=55;$i=$i+5){
 202                          echo "<option value=\"$i\">$i</option>\n";
 203                      }
 204                      echo "</select> MIN \n";
 205                      echo "</td>\n";
 206                      //echo "<input type=\"text\" name=\"minutes\" value=\"5\">minutes</td>";
 207                      echo "</tr>\n";
 208                      unset($resultat);
 209                  }
 210                  echo "</table>\n";
 211                  /*
 212                  //FIN MODIF
 213                  */
 214  
 215                  echo "<input type=\"hidden\" name=\"stat_srv\" value=\"$stat_srv\">\n";
 216                  echo "<input type=\"hidden\" name=\"choice_done\" value=\"true\">\n";
 217                  //echo "Activer: <input type=\"radio\" name=\"activate\" value=\"yes\" checked> / \n";
 218                  //echo "<input type=\"radio\" name=\"activate\" value=\"no\">: D&#233;sactiver<BR>\n";
 219                  echo "<input type=\"submit\" value=\"Envoyer\">";
 220                  echo "</form>\n";
 221              }
 222          }
 223          else {
 224              //PARTIE ACTION:
 225              //Le choix des classes a traiter a ete  effectue dans le formulaire ci-dessus.
 226              //echo "<p>activate=$activate</p>\n";
 227              echo "<h3>".gettext("Traitement des dossiers _echange")."</h3>\n";
 228  
 229              /*
 230              if(count($list_classes)=="0"){
 231                  echo "<p>".gettext("Cr&#233nom de bourricot, vous n'avez pas s&#233lectionn&#233 de classe !")."</p>";
 232              }
 233              else{
 234                  for ($loop=0; $loop<count($list_classes); $loop++) {
 235                      if ($list_classes[$loop]){
 236                          if("$activate"=="yes"){
 237                              $textactivation="Activation";
 238                          }
 239                          else{
 240                              $textactivation="D&#233;sactivation";
 241                          }
 242                          #echo "<p>Traitement du dossier $list_classes[$loop]/_echange<br>\n";
 243                          echo "<p>$textactivation du dossier $list_classes[$loop]/_echange<br>\n";
 244                          //echo "exec (\"/bin/sh /usr/share/se3/scripts/echange_classes.sh \\\"$list_classes[$loop]\\\" \\\"$activate\\\"\")</p>\n";
 245                          exec ("/usr/bin/sudo /usr/share/se3/scripts/echange_classes.sh \"$list_classes[$loop]\" \"$activate\"");
 246                          echo "</p>\n";
 247                      }
 248                  }
 249              }
 250              */
 251  
 252              for ($loop=0; $loop<count($list_classes); $loop++) {
 253                  //echo "<p>".count($list_classes)."</p>\n";
 254                  //if("$list_classes[$loop]"!=""){
 255                  if ("$etat_actuel[$loop]"!="$activate[$loop]"){
 256                      if("$activate[$loop]"!=""){
 257                          if("$activate[$loop]"=="actif"){
 258                              $textactivation="Activation";
 259                          }
 260                          else{
 261                              $textactivation="D&#233;sactivation";
 262                          }
 263                          echo "<p>$textactivation ".gettext(" du dossier")." $list_classes[$loop]/_echange<br>\n";
 264                          exec ("/usr/bin/sudo /usr/share/se3/scripts/echange_classes.sh \"$list_classes[$loop]\" \"$activate[$loop]\"");
 265                          //sleep(1);
 266  
 267                          //Dans le cas ou il existait une temporisation,
 268                          //comme on refait ici le choix d'activer ou de desactiver l'acces,
 269                          //on vide l'eventuelle temporisation anterieure.
 270                          if(file_exists("$chemin_tmp/levee_restriction_echange_$list_classes[$loop].sh")){
 271                              unlink("$chemin_tmp/levee_restriction_echange_$list_classes[$loop].sh");
 272                          }
 273  
 274                          sleep(1);
 275  
 276                          //On ne met en place que des temporisations de deverrouillage
 277                          //(donc: quand un verrouillage est mis en place, on teste si un minutage est demande)
 278                          if(("$delai[$loop]"=="oui")&&("$activate[$loop]"=="verrouille")&&(("$minutes[$loop]"!="0")||("$heures[$loop]"!="0"))){
 279                              $chemin_tmp="/tmp";
 280                              //$chemin_tmp="/var/remote_adm";
 281                              /*
 282                              //Le fichier est vire plus haut.
 283                              if(file_exists("$chemin_tmp/levee_restriction_echange_$list_classes[$loop].sh")){
 284                                  unlink("$chemin_tmp/levee_restriction_echange_$list_classes[$loop].sh");
 285                              }
 286                              */
 287                              $fichier=fopen("$chemin_tmp/levee_restriction_echange_$list_classes[$loop].sh","w+");
 288                              if($fichier){
 289                                  fwrite($fichier,"#!/bin/bash\n");
 290                                  fwrite($fichier,"/usr/bin/sudo /usr/share/se3/scripts/echange_classes.sh \"$list_classes[$loop]\" \"actif\"\n");
 291                                  chmod("$chemin_tmp/levee_restriction_echange_$list_classes[$loop].sh",0700);
 292                                  fclose($fichier);
 293  
 294                                  $duree_delai=$heures[$loop]*60+$minutes[$loop];
 295  
 296                                  exec ("at -f $chemin_tmp/levee_restriction_echange_$list_classes[$loop].sh +$duree_delai minute");
 297                                  echo gettext("Les dossiers I:\public et H:\\")."$list_classes[$loop]\_echange ".gettext(" seront r&#233activ&#233s dans ")." $duree_delai ".gettext("minutes.\n");
 298  
 299                                  unset($duree_delai);
 300                              }
 301                          }
 302                          echo "</p>\n";
 303                      }
 304                      else{
 305                          //Pas de modification pour $list_classes[$loop]
 306                          //parce que le dossier n'est pas encore initialies
 307                          //et qu'aucune case n'etait selectionnee.
 308                          echo "\n";
 309                      }
 310                  }
 311                  else{
 312                      //Pas de modification pour cette classe
 313                      //(le bouton radio d'activation/verrouillage n'a pas ete deplace).
 314                      echo "\n";
 315                  }
 316                  //}
 317              }
 318              echo "<p><a href=\"dossier_echange.php\">".gettext("Retour au menu 'Dossier _echange'")."</a></p>\n";
 319          }
 320      }
 321    //} // Fin if is_admin
 322    include ("pdp.inc.php");
 323  ?>


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