[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

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

   1  <?php
   2  
   3  
   4     /**
   5     
   6     * Suppression des imprimantes conformement au souhait de l'utilisateur
   7     * @Version $Id: delete_printer.php 8561 2015-03-15 13:37:16Z plouf $ 
   8     
   9     * @Projet LCS / SambaEdu 
  10     
  11     * @auteurs Patrice Andre <h.barca@free.fr>
  12     * @auteurs Carip-Academie de Lyon
  13  
  14     * @Licence Distribue selon les termes de la licence GPL
  15     
  16     * @note 
  17     
  18     */
  19  
  20     /**
  21  
  22     * @Repertoire: printers/
  23     * file: delete_printer.php
  24  
  25    */    
  26  
  27  
  28  
  29  
  30  // Suppression des imprimantes conformement au souhait de l'utilisateur:  //
  31  //     -Retrait d'imprimantes du parc selectionne  ( Supprimee comme membre d'un parc seulement)
  32  // ou  -Suppression definitive d'une imprimante ( Ne presente plus aucune trace ni dans LDAP, ni dans CUPS)
  33  
  34  include  "entete.inc.php";
  35  include  "ldap.inc.php";    // pour fonction search_machines ()
  36  include  "ihm.inc.php";    // pour fonction is_admin()
  37  include  "printers.inc.php";
  38  
  39  require_once  ("lang.inc.php");
  40  bindtextdomain('se3-printers',"/var/www/se3/locale");
  41  textdomain ('se3-printers');
  42  
  43  //aide
  44  $_SESSION["pageaide"]="Imprimantes";
  45  
  46  
  47     /**
  48  
  49     * Fonction qui vire une machine d'un parc, supprime le parc si la machine est la derniere dedans.
  50     * @Parametres On donne le nom de la machine et le parc
  51     * @Return 
  52     
  53     */
  54  
  55  
  56  function supprime_machine_parc($mpenc,$parc) {
  57      include "config.inc.php";
  58      // On compte si la demande ne porte pas sur toutes les machines
  59      $mp_all=gof_members($parc,"parcs",1);
  60      $mpcount=count($mp_all);
  61  
  62      // Si la demande porte sur la derniere machine du parc
  63      // On vire le parc
  64  
  65      if ($mpcount == "1") {
  66          $cDn = "cn=".$parc.",".$parcsRdn.",".$ldap_base_dn; 
  67               exec ("/usr/share/se3/sbin/entryDel.pl \"$cDn\"");
  68      }
  69      if ($mpcount > "1") {
  70          $resultat=search_imprimantes("printer-name=$mpenc","printers");
  71          $suisje_printer="non";
  72          for ($loopp=0; $loopp < count($resultat); $loopp++) {
  73              if ($mpenc==$resultat[$loopp]['printer-name']) {
  74                  $suisje_printer="yes";    
  75                  continue;
  76              }    
  77          }
  78  
  79              $pDn = "cn=".$parc.",".$parcsRdn.",".$ldap_base_dn;
  80          if ($suisje_printer=="yes") {
  81              // je suis une imprimante
  82              $cDn = "cn=".$mpenc.",".$printersRdn.",".$ldap_base_dn;
  83          } else {
  84              // je suis un ordianteur
  85              $cDn = "cn=".$mpenc.",".$computersRdn.",".$ldap_base_dn;
  86              }
  87          // on supprime
  88          exec ("/usr/share/se3/sbin/groupDelEntry.pl \"$cDn\" \"$pDn\"");
  89      }
  90  }
  91  
  92  if (is_admin("se3_is_admin",$login)=="Y") {
  93      
  94      $choix = $_POST['choix'];
  95      $parc = $_POST['parc'];
  96      $filtre_imp = $_POST['filtre_imp'];
  97      $old_printers = $_POST['old_printers'];
  98      $mp = $_POST['mp'];
  99      $delete_printer = $_POST['delete_printer'];
 100  
 101      // Affichage de la page de selection du parc dans le cas du retrait d'imprimante(s) pour un parc.
 102          if ( ($choix=="option1") && !isset($parc) ) {
 103              echo "<H1>".gettext("S&#233lection du parc")."</H1>";
 104              $list_parcs=search_machines("objectclass=GroupOfNames","parcs");  // !!!! Fonction search _machines ambigue !!
 105              if ( count($list_parcs)>0) {                    // elle liste ici les parcs (meme fonc utilisee)
 106                  echo "<FORM METHOD=\"post\">\n"; 
 107                  echo "<P>".gettext("Effacer des imprimantes du parc")."\n</P>"; 
 108                  echo "<SELECT NAME=\"parc\" SIZE=\"1\">";
 109                  for ($loop=0; $loop < count($list_parcs); $loop++) {
 110                      echo "<option value=\"".$list_parcs[$loop]["cn"]."\">".$list_parcs[$loop]["cn"]."\n";
 111                  }
 112                  echo "</SELECT>&nbsp;&nbsp;\n";
 113                      echo "<INPUT TYPE=\"hidden\" NAME=\"choix\" VALUE=\"option1\">";
 114                  echo "<INPUT TYPE=\"submit\" VALUE=\"".gettext("Valider")."\">\n";
 115                  echo "</FORM>\n";
 116              }                     
 117          }
 118          if ( isset($parc) || ($choix=="option2") ) {
 119              // Affichage de la page de selection des imprimantes a supprimer.
 120              if ( !$delete_printer ) {
 121                      // Lecture des membres du parc
 122                      if ( $choix=="option1" ) {     // Cas d'une suppression par parc
 123                              $mp_all=printers_members($parc,"parcs",1);
 124                      } else {             // Cas d'une suppression definitive
 125                              $mp_x=search_printers("printer-name=*");      // search_printers() renvoie un tableau a 2 dimensions dont la
 126                              for ( $loop=0;$loop<count($mp_x);$loop++ ) {  // deuxieme concerne les attributs LDAP, d'ou la necessite d'isoler
 127                                  $mp_all[$loop]=$mp_x[$loop]['printer-name']; //le nom pour avoir un tableau a une seule dimension compatible
 128                              }                                            // avec le reste du programme      
 129                      }
 130                      if (count($mp_all)>0) {
 131                          echo "<H1>".gettext("S&#233lection des imprimantes &#224 supprimer")."</H1>";
 132                          // Filtrage des noms
 133                          //Affichage de la boite de saisie du nom d'imprimante a filtrer 
 134                          echo "<FORM ACTION=\"delete_printer.php\" METHOD=\"post\">\n";
 135                          echo "<P>".gettext("Lister les noms contenant:");
 136                          echo "<INPUT TYPE=\"text\" NAME=\"filtre_imp\"\n VALUE=\"$filtre_imp\" SIZE=\"8\">";
 137                          echo "<INPUT TYPE=\"hidden\" NAME=\"parc\" VALUE=\"$parc\">\n";
 138                          if ($choix=="option1") {
 139                                  echo "<INPUT TYPE=\"hidden\" NAME=\"choix\" VALUE=\"$option1\">";
 140                          } else {
 141                                  echo "<INPUT TYPE=\"hidden\" NAME=\"choix\" VALUE=\"$option2\">";
 142                          }
 143                          echo "<INPUT TYPE=\"submit\" VALUE=\"".gettext("Valider")."\">\n";
 144                          echo "</FORM>\n";
 145                          // Filtrage selon critere indique par l'utilisateur
 146                          if ("$filtre_imp"=="") $mp=$mp_all;
 147                          else {
 148                                  $lmloop=0;
 149                                  $mpcount=count($mp_all);
 150                                  for ($loop=0; $loop < count($mp_all); $loop++) {
 151                                      $imp=$mp_all[$loop];
 152                                                  if (preg_match("/$filtre_imp/",$imp)) $mp[$lmloop++]=$imp;
 153                                  }
 154                          }
 155                          if ( count($mp)>15) $size=15; else $size=count($mp); // Definition de la taille du formulaire liste
 156                          if ( count($mp)>0) {        // Dans le cas ou il y'a desimprimantes
 157                                  // Affichage du formulaire liste des imprimantes valides.
 158                                  echo "<FORM ACTION=\"delete_printer.php\" method=\"post\">\n";
 159                                  if ($choix=="option1") {
 160                                      echo "<P>".gettext("S&#233lectionnez les imprimantes &#224 enlever du parc")." $parc:</P>\n";
 161                                  } else {
 162                                      echo "<P>".gettext("S&#233lectionnez les imprimantes que vous souhaitez supprimer:")."</P>\n";
 163                                      echo "<P>".gettext("ATTENTION !! La suppression effacera int&#233gralement les informations de configuration pour les imprimantes s&#233l&#233ction&#233es !")."</P>";
 164                                  }  
 165                                  echo "<P><SELECT SIZE=\"".$size."\" NAME=\"old_printers[]\" MULTIPLE=\"multiple\">\n";
 166                                  for ($loop=0; $loop < count($mp); $loop++) {
 167                                      echo "<OPTION VALUE=\"$mp[$loop]\">$mp[$loop]";
 168                                  }
 169                                  echo "</SELECT></P>\n";
 170                                  echo "<INPUT TYPE=\"hidden\" NAME=\"delete_printer\" VALUE=\"true\">\n";
 171                                  echo "<INPUT TYPE=\"hidden\" NAME=\"parc\" VALUE=\"$parc\">\n";
 172                                  echo "<INPUT TYPE=\"hidden\" NAME=\"choix\" VALUE=\"$choix\">";
 173                                  echo "<INPUT TYPE=\"submit\" VALUE=\"".gettext("Valider")."\" ONCLICK= \"return getconfirm();\">\n";
 174                                  echo "</FORM>\n";
 175                          }
 176                      } else {    // A fortiori quand il n'y'a pas d'imprimantes a supprimer
 177                  echo "<h1>Suppression d'imprimantes</h1>\n";
 178                          $message =  gettext("Il n'y a pas d'imprimantes &#224 supprimer !");
 179                          echo $message;
 180                  echo "<br><br><center>";
 181                  echo "<a href=\"delete_printer_choice.php\">Retour</a>";
 182                      }
 183              } else {  // Affichage de la page de configmation des suppressions.         
 184                      // Suppression des imprimantes dans le parc
 185                      if ($choix=="option1") {
 186                          echo "<H1>".gettext("Suppression d'imprimantes dans le parc")." <U>$parc</U></H1>";
 187                          echo "<P>".gettext("Vous avez s&#233lectionn&#233 "). count($old_printers).gettext(" imprimante(s)")."<BR><BR>\n";
 188                          for ($loop=0; $loop < count($old_printers); $loop++) {
 189                                  $printer=$old_printers[$loop];    
 190                                  supprime_machine_parc($printer,$parc);    
 191                      // exec ("/usr/share/se3/sbin/printerDelPark.pl $printer $parc",$AllOutPutValue,$ReturnValue);
 192                                  // if ($ReturnValue==0) {
 193                                      echo gettext("Suppression de l'imprimante")." <B>$printer</B> ".gettext("du parc")." <B>$parc</B> ".gettext("effectu&#233e")."<BR>";
 194                                  // } else {
 195                                  //    echo "<B>ECHEC</B>".gettext(" de la suppression de l'imprimante")." <B>$printer</B> ".gettext("du parc")." <B>$parc</B><BR>";    
 196                                  // }
 197                          }
 198                  echo "<BR><P>".gettext("N'oubliez pas de d&#233sinstaller les pilotes sur chaque poste du parc")." $parc</P>";
 199                      } else {
 200                          echo "<H1>".gettext("Suppression d&#233finitive d'imprimantes")."</H1>";
 201                          echo "<P>".gettext("Vous avez s&#233lectionn&#233 "). count($old_printers). gettext(" imprimante(s)")."<BR><BR>\n";
 202                          for ($loop=0; $loop < count($old_printers); $loop++) {
 203                                  $printer=$old_printers[$loop];
 204                      // On supprime d'abord des parcs
 205                      // meme si le script perl le fait, il ne gere pas le probleme de 
 206                      // la derniere machine d'un parc
 207  
 208                      $list_parcs=search_machines("objectclass=groupOfNames","parcs");
 209                      if ( count($list_parcs)>0) {
 210                          sort($list_parcs);
 211                          for ($loopp=0; $loopp < count($list_parcs); $loopp++) {
 212                              $parc_list = $list_parcs[$loopp]["cn"];
 213                                          supprime_machine_parc($printer,$parc_list); 
 214                          }
 215                      }    
 216                                  exec ("/usr/share/se3/sbin/printerDel.pl $printer",$AllOutPutValue,$ReturnValue);
 217                                  if ($ReturnValue==0) {
 218                                      echo gettext("Suppression de l'imprimante")." <B>$printer</B> ".gettext("effectu&#233e")."<BR>";
 219                                  } else {
 220                                      echo "<B>".gettext("ECHEC")."</B> ".gettext("de la suppression de l'imprimante")." <B>$printer</B><BR>";    
 221                                  } 
 222                             }
 223                  echo "<BR><P>".gettext("N'oubliez pas de d&#233sinstaller les pilotes sur chaque poste")."</P>";
 224                       }        
 225              }
 226          }
 227  }
 228  
 229  include ("pdp.inc.php");
 230  ?>


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