source: pmb4.2/trunk/fuentes/pmb/classes/sauv_sauvegarde.class.php @ 815

Last change on this file since 815 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 13.6 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2005 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: sauv_sauvegarde.class.php,v 1.8 2015-04-03 11:16:19 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9//Formulaire de gestion des lieux
10include ($include_path."/templates/sauvegardes_form.tpl.php");
11class sauv_sauvegarde {
12
13        //Données
14        var $sauv_sauvegarde_id; //Identifiant
15        var $sauv_sauvegarde_nom; //Nom de la sauvegarde
16        var $sauv_sauvegarde_file_prefix; //Péfixe du fichier de sauvegarde
17        var $sauv_sauvegarde_tables; //Groupes de tables
18        var $sauv_sauvegarde_lieux; //Lieux de sauvegarde
19        var $sauv_sauvegarde_users; //Utilisateurs autorisés
20        var $sauv_sauvegarde_compress; //Compression
21        var $sauv_sauvegarde_compress_method; //Méthode de compression
22        var $sauv_sauvegarde_zip_command; //Commande compression
23        var $sauv_sauvegarde_unzip_command; //Commande de décompression
24        var $sauv_sauvegarde_zip_ext; //Extension du fichier zippé
25        var $sauv_sauvegarde_crypt; //Cryptage
26        var $sauv_sauvegarde_key1; //Clé de cryptage 1
27        var $sauv_sauvegarde_key2; //Clé de cryptage 2
28        var $sauv_sauvegarde_erase_keys; //Ecraser les clés
29        var $act; //Action
30
31        function sauv_sauvegarde() {
32                global $sauv_sauvegarde_id; //Identifiant
33                global $sauv_sauvegarde_nom; //Nom de la sauvegarde
34                global $sauv_sauvegarde_file_prefix; //Péfixe du fichier de sauvegarde
35                global $sauv_sauvegarde_tables; //Groupes de tables
36                global $sauv_sauvegarde_lieux; //Lieux de sauvegarde
37                global $sauv_sauvegarde_users; //Utilisateurs autorisés
38                global $sauv_sauvegarde_compress; //Compression
39                global $sauv_sauvegarde_compress_method; //Méthode de compression
40                global $sauv_sauvegarde_zip_command; //Commande compression
41                global $sauv_sauvegarde_unzip_command; //Commande de décompression
42                global $sauv_sauvegarde_zip_ext; //Extension du fichier zippé
43                global $sauv_sauvegarde_crypt; //Cryptage
44                global $sauv_sauvegarde_key1; //Clé de cryptage 1
45                global $sauv_sauvegarde_key2; //Clé de cryptage 2
46                global $sauv_sauvegarde_erase_keys; //Ecraser les clés
47                global $act; //Action
48
49
50                //Stockage des données reçues
51                $this-> sauv_sauvegarde_id = $sauv_sauvegarde_id;
52                $this-> sauv_sauvegarde_nom = $sauv_sauvegarde_nom;
53                $this-> sauv_sauvegarde_file_prefix = $sauv_sauvegarde_file_prefix;
54                $this-> sauv_sauvegarde_tables = $sauv_sauvegarde_tables;
55                $this-> sauv_sauvegarde_lieux = $sauv_sauvegarde_lieux;
56                $this-> sauv_sauvegarde_users = $sauv_sauvegarde_users ; 
57                $this-> sauv_sauvegarde_compress = $sauv_sauvegarde_compress;
58                $this-> sauv_sauvegarde_compress_method = $sauv_sauvegarde_compress_method;
59                $this-> sauv_sauvegarde_zip_command = $sauv_sauvegarde_zip_command;
60                $this-> sauv_sauvegarde_unzip_command = $sauv_sauvegarde_unzip_command;
61                $this-> sauv_sauvegarde_zip_ext = $sauv_sauvegarde_zip_ext; 
62                $this-> sauv_sauvegarde_crypt =  $sauv_sauvegarde_crypt;
63                $this-> sauv_sauvegarde_key1 = $sauv_sauvegarde_key1;
64                $this-> sauv_sauvegarde_key2 = $sauv_sauvegarde_key2;
65                $this-> sauv_sauvegarde_erase_keys = $sauv_sauvegarde_erase_keys;
66                $this-> act = $act;
67        }
68       
69        function verifName() {
70                global $msg;
71               
72                $requete="select sauv_sauvegarde_id from sauv_sauvegardes where sauv_sauvegarde_nom='".$this->sauv_sauvegarde_nom."'";
73                $resultat=pmb_mysql_query($requete) or die(pmb_mysql_error());
74                if (pmb_mysql_num_rows($resultat)!=0) {
75                        echo "<script>alert(\"".$msg["sauv_sauvegardes_valid_form_error_name"]."\"); history.go(-1);</script>";
76                        exit();
77                }
78        }
79       
80        function verifGeneral() {
81                global $msg;
82               
83                if (!is_array($this->sauv_sauvegarde_tables)) {
84                        $msg_=$msg["sauv_sauvegardes_valid_form_error_one_group"];
85                } else {
86                        if (!is_array($this->sauv_sauvegarde_users)) {
87                                $msg_=$msg["sauv_sauvegardes_valid_form_error_one_user"];
88                        }
89                }
90                if ($msg_!="") {
91                        echo "<script>alert(\"$msg_\"); history.go(-1);</script>";
92                        exit();
93                }
94               
95        }
96       
97        function makeUpdateQuery()
98        {
99                $r_tables=@implode(",",$this->sauv_sauvegarde_tables);
100                $r_lieux=@implode(",",$this->sauv_sauvegarde_lieux);
101                $r_users=@implode(",",$this->sauv_sauvegarde_users);
102                $r_compress_command=$this->sauv_sauvegarde_compress_method;
103               
104                if ($this->sauv_sauvegarde_compress_method=="external") {
105                        $r_compress_command.=":".$this->sauv_sauvegarde_zip_command.":".$this->sauv_sauvegarde_unzip_command.":".$this->sauv_sauvegarde_zip_ext;
106                } else {
107                        $r_compress_command.="::";
108                }
109                if ($this->sauv_sauvegarde_key1!="") $r_key1=md5($this->sauv_sauvegarde_key1);
110                if ($this->sauv_sauvegarde_key2!="") $r_key2=md5($this->sauv_sauvegarde_key2);
111               
112                $requete="update sauv_sauvegardes set ";
113                $requete.="sauv_sauvegarde_nom='".$this->sauv_sauvegarde_nom."'";
114                $requete.=",sauv_sauvegarde_file_prefix='".$this->sauv_sauvegarde_file_prefix."'";
115                $requete.=",sauv_sauvegarde_tables='".$r_tables."'";
116                $requete.=",sauv_sauvegarde_lieux='".$r_lieux."'";
117                $requete.=",sauv_sauvegarde_users='".$r_users."'";
118                $requete.=",sauv_sauvegarde_compress=".$this->sauv_sauvegarde_compress;
119                $requete.=",sauv_sauvegarde_compress_command='".$r_compress_command."'";
120                $requete.=",sauv_sauvegarde_crypt=".$this->sauv_sauvegarde_crypt;
121                if ($this->sauv_sauvegarde_erase_keys==1) $requete.=",sauv_sauvegarde_key1='".$r_key1."'";
122                if ($this->sauv_sauvegarde_erase_keys==1) $requete.=",sauv_sauvegarde_key2='".$r_key2."'";
123               
124                $requete.=" where sauv_sauvegarde_id=".$this->sauv_sauvegarde_id;
125                return $requete;
126        }
127       
128        //Traitement de l'action reçue du formulaire (à appeller juste après l'instanciation de la classe)
129        //Renvoie le formulaire à afficher
130        function proceed() {
131               
132                global $first;
133               
134                switch ($this -> act) {
135                        //Enregistrer
136                        case "update" :
137                                $this->verifGeneral();
138                                //Si sauv_sauvegarde_id vide alors création
139                                if ($this -> sauv_sauvegarde_id == "") {
140                                        $this->verifName();
141                                        $requete = "insert into sauv_sauvegardes (sauv_sauvegarde_nom) values('')";
142                                        pmb_mysql_query($requete) or die(pmb_mysql_error());
143                                        $this -> sauv_sauvegarde_id = pmb_mysql_insert_id();
144                                        $first="";
145                                        $this->sauv_sauvegarde_erase_keys=1;
146                                }
147                                //Update avec les données reçues
148                                $requete = $this->makeUpdateQuery();
149                                pmb_mysql_query($requete) or die(pmb_mysql_error());
150                                $first="";
151                                break;
152                                //Supprimer
153                        case "delete" :
154                                $requete = "delete from sauv_sauvegardes where sauv_sauvegarde_id=".$this -> sauv_sauvegarde_id;
155                                pmb_mysql_query($requete) or die(pmb_mysql_error());
156                                $this -> sauv_sauvegarde_id = "";
157                                $first = 0;
158                                break;
159                                //Annuler
160                        case "cancel" :
161                                echo "<script>history.go(-2);</script>";
162                                exit();
163                                break;
164                                //Visualiser
165                        default :
166                                //Ne rien faire, le numéro de la fiche est déjà dans $this->sauv_lieu_id
167                }
168                return $this -> showForm();
169        }
170
171        function showSelectList($values,$table,$id_field,$name_field,$select_name) {
172                $select="<select name=\"".$select_name."[]\" multiple>\n";
173                $tValues=explode(",",$values);
174                $requete="select $id_field,$name_field from $table";
175                $resultat=pmb_mysql_query($requete) or die(pmb_mysql_error());
176                while (list($id,$nom)=pmb_mysql_fetch_row($resultat)) {
177                        $select.="<option value=\"".$id."\"";
178                        $as=array_search($id,$tValues);
179                        if (($as!==false)&&($as!==null)) {
180                                $select.="selected";
181                        }
182                        $select.=">".$nom."</option>\n";
183                }
184                $select.="</select>\n";
185                return $select;
186        }
187       
188
189        //Préaparation du formulaire pour affichage
190        function showForm() {
191                global $form;
192                global $first;
193                global $msg;
194               
195                //Si première connexion
196                if (!$first) {
197                        $form = "<center><h3>".$msg["sauv_sauvegardes_sel_or_add"]."</h3></center>";
198                } else {
199                        //Si identifiant non vide
200                        if ($this -> sauv_sauvegarde_id) {
201                                //Récupération des données de la fiche
202                                $requete="select sauv_sauvegarde_nom,sauv_sauvegarde_file_prefix,sauv_sauvegarde_tables,sauv_sauvegarde_lieux,sauv_sauvegarde_users,sauv_sauvegarde_compress,sauv_sauvegarde_compress_command,sauv_sauvegarde_crypt,sauv_sauvegarde_key1,sauv_sauvegarde_key2 from sauv_sauvegardes where sauv_sauvegarde_id=".$this -> sauv_sauvegarde_id;
203                                $resultat = pmb_mysql_query($requete);
204                                if (pmb_mysql_num_rows($resultat) != 0)
205                                        $r = pmb_mysql_fetch_object($resultat);
206                                //$form = "<center><b>".$r -> sauv_sauvegarde_nom."</b></center>".$form;
207                                $form = str_replace("!!quel_proc!!", $r -> sauv_sauvegarde_nom, $form);
208                                $form = str_replace("!!delete!!", "<input type=\"submit\" value=\"".$msg["sauv_supprimer"]."\" onClick=\"if (confirm('".$msg["sauv_sauvegardes_confirm_delete"]."')) { this.form.act.value='delete'; return true; } else { return false; }\" class=\"bouton\">", $form);
209                        } else {
210                                //Sinon : Nouvelle fiche
211                                //$form = "<center><b>".$msg["sauv_sauvegardes_new"]."</b></center>".$form;
212                                $form = str_replace("!!quel_proc!!", $msg["sauv_sauvegardes_new"], $form);
213                                $form = str_replace("!!delete!!", "", $form);
214                        }
215                        $form = str_replace("!!sauv_sauvegarde_id!!", $this -> sauv_sauvegarde_id, $form);
216                        $form = str_replace("!!sauv_sauvegarde_nom!!", $r -> sauv_sauvegarde_nom, $form);
217                        $form = str_replace("!!sauv_sauvegarde_file_prefix!!", $r->sauv_sauvegarde_file_prefix, $form);
218                        $form = str_replace("!!sauv_sauvegarde_tables!!", $this->showSelectList($r->sauv_sauvegarde_tables,"sauv_tables","sauv_table_id","sauv_table_nom","sauv_sauvegarde_tables"), $form);
219                        $form = str_replace("!!sauv_sauvegarde_lieux!!", $this->showSelectList($r->sauv_sauvegarde_lieux,"sauv_lieux","sauv_lieu_id","sauv_lieu_nom","sauv_sauvegarde_lieux"), $form);
220                        $form = str_replace("!!sauv_sauvegarde_users!!", $this->showSelectList($r->sauv_sauvegarde_users,"users","userid","username","sauv_sauvegarde_users"), $form);
221                        if ($r->sauv_sauvegarde_compress==1) {
222                                $form=str_replace("!!checked_compress_yes!!","checked",$form);
223                                $form=str_replace("!!checked_compress_no!!","",$form);
224                        } else {
225                                $form=str_replace("!!checked_compress_no!!","checked",$form);
226                                $form=str_replace("!!checked_compress_yes!!","",$form);
227                        }
228                        if ($r->sauv_sauvegarde_crypt==1) {
229                                $form=str_replace("!!checked_crypt_yes!!","checked",$form);
230                                $form=str_replace("!!checked_crypt_no!!","",$form);
231                        } else {
232                                $form=str_replace("!!checked_crypt_no!!","checked",$form);
233                                $form=str_replace("!!checked_crypt_yes!!","",$form);
234                        }
235                        $values=array("internal","external");
236                        $libs=array($msg["sauv_sauvegardes_compr_bz2"],$msg["sauv_sauvegardes_compr_externe"]);
237                        if ($r->sauv_sauvegarde_compress_command=="") {
238                                $compression_method="internal";
239                        } else {
240                                $compress_command=explode(":",$r->sauv_sauvegarde_compress_command);
241                                $compression_method=$compress_command[0];
242                        }
243                        $select_method="<select name=\"sauv_sauvegarde_compress_method\" class=\"saisie-simple\">\n";
244                        for ($i=0; $i<count($values); $i++) {
245                                $select_method.="<option value=\"".$values[$i]."\"";
246                                if ($values[$i]==$compression_method) $select_method.=" selected";
247                                $select_method.=">".$libs[$i]."</option>\n";
248                        }
249                        $select_method.="</select>\n";
250                        $form=str_replace("!!sauv_sauvegarde_compress_method!!",$select_method,$form);
251                        $form=str_replace("!!sauv_sauvegarde_zip_command!!",$compress_command[1],$form);
252                        $form=str_replace("!!sauv_sauvegarde_unzip_command!!",$compress_command[2],$form);
253                        $form=str_replace("!!sauv_sauvegarde_zip_ext!!",$compress_command[3],$form);
254                        $form = str_replace("!!sauv_sauvegarde_crypt!!", $r -> sauv_sauvegarde_crypt, $form);
255                        if (($r->sauv_sauvegarde_key1!="")||($r->sauv_sauvegarde_key2!="")) {
256                                $form=str_replace("!!sauv_sauvegarde_erase_keys!!","<tr><td>&nbsp;</td><td><input type=\"radio\" value=\"0\" name=\"sauv_sauvegarde_erase_keys\" class=\"saisie-simple\" checked >&nbsp;".$msg["sauv_sauvegardes_dont_erase_keys"]."<br /><input type=\"radio\" value=\"1\" name=\"sauv_sauvegarde_erase_keys\" class=\"saisie-simple\">&nbsp;".$msg["sauv_sauvegardes_erase_keys"]."</td></tr>\n",$form);
257                                $form = str_replace("!!crypt_msg!!",$msg["sauv_sauvegardes_erase_msg_keys_exists"],$form);
258                        } else {
259                                $form=str_replace("!!sauv_sauvegarde_erase_keys!!","<input type=\"hidden\" name=\"sauv_sauvegarde_erase_keys\" value=\"1\">",$form);
260                                $form = str_replace("!!crypt_msg!!",$msg["sauv_sauvegardes_erase_msg_keys_not_exists"],$form);
261                        }
262                }
263                return $form;
264        }
265
266        //Affichage de la liste des lieux existants dans la base
267        //linkToForm : true = rend la liste interactive avec le formulaire
268        function showTree($linkToForm = true) {
269                global $dbh;
270                global $msg;
271               
272                //$tree.= "<center><b>".$msg["sauv_sauvegardes_tree_title"]."</b></center>\n";
273                $tree.= "<form><table class='nobrd'>\n";
274                $tree.= "<th class='brd' <center>".$msg["sauv_sauvegardes_tree_title"]."</center></th>\n";
275                //Récupération de la liste
276                $requete = "select sauv_sauvegarde_id, sauv_sauvegarde_nom from sauv_sauvegardes order by sauv_sauvegarde_nom";
277                $resultat = pmb_mysql_query($requete, $dbh) or die(pmb_mysql_error());
278                while ($res = pmb_mysql_fetch_object($resultat)) {
279                        $tree.= "<tr><td class='nobrd'>";
280                        $tree.= "<img src=\"images/file.png\" border=0 align=center>&nbsp;";
281                        if ($linkToForm == true) {
282                                $tree.= "<a href=\"admin.php?categ=sauvegarde&sub=gestsauv&act=show&sauv_sauvegarde_id=".$res -> sauv_sauvegarde_id."&first=1\">";
283                        }
284                        $tree.= $res -> sauv_sauvegarde_nom;
285                        if ($linkToForm == true) {
286                                $tree.= "</a>";
287                        }
288                        $tree.= "</td></tr>\n";
289                }
290                $tree.= "</table>";
291                //Nouveau lieu
292                if ($linkToForm) {
293                        //$tree.= "<center><a href=\"admin.php?categ=sauvegarde&sub=gestsauv&act=show&sauv_sauvegarde_id=&first=1\">".$msg["sauv_sauvegardes_add_set"]."</a></center>";
294                        $tree.="
295                                <div class='center'><center>
296                                <input type=\"button\" value=\"".$msg["sauv_sauvegardes_add_set"]."\" 
297                                        class=\"bouton\" 
298                                        onClick=\"document.location='./admin.php?categ=sauvegarde&sub=gestsauv&act=show&sauv_sauvegarde_id=&first=1';\" />
299                                </center></div></form>";
300                       
301                }
302                return $tree;
303        }
304}
305?>
Note: See TracBrowser for help on using the repository browser.