maj syntaxe accolades, maj jQuery, correction layout contact
[mtweb] / web / app / mods / admin / plugins.php
1 <?php
2
3   class mw_admin_plugins extends mw_mod{
4
5     var $plugins;
6
7     function validate(&$env){
8       if(($this->plugins = $env->plugins("DESC")) === false) return "impossible de lire la liste des plugins";
9       return true;
10     }
11
12     function index(&$env){
13       if($this->plugins !== false){
14         if($_POST){
15           $OK = true;
16           foreach($this->plugins as $plugin_name => $plugin){
17             if(isset($_POST["priorite_".$plugin_name])){
18               $this->plugins[$plugin_name]["priorite"] = $_POST["priorite_".$plugin_name];
19               if(!preg_match("/^[0-9]+(\.[0-9]+)?$/", $_POST["priorite_".$plugin_name])){
20                 $env->message("les priorit&eacute;s des plugins doivent &ecirc;tre des nombres");
21                 $OK = false;
22                 break;
23               }
24             }
25             else $this->plugins[$plugin_name]["priorite"] = 0;
26           }
27           if($OK){
28             foreach($this->plugins as $plugin_name => $plugin){
29               $plugin_data = array(
30                 "installed" => $this->plugins[$plugin_name]["installed"],
31                 "enabled" => $this->plugins[$plugin_name]["enabled"],
32                 "priorite" => $this->plugins[$plugin_name]["priorite"]
33               );
34               if(!$env->set_plugin_data($plugin_name, $plugin_data)){
35                 $env->erreur("impossible de mettre &agrave; jour la priorit&eacute; du plugin ".$plugin_name);
36                 $OK = false;
37                 break;
38               }
39             }
40             if($OK){
41               $env->redirect(
42                 $env->url("admin/plugins/index"),
43                 "les priorit&eacute;s des plugins ont &eacute;t&eacute; enregistr&eacute;es"
44               );
45             }
46           }
47         }
48         $env->set_out("plugins", $this->plugins);
49       }
50       else $env->erreur("impossible de lire la liste des plugins");
51     }
52
53     function install(&$env){
54       $plugin_name = $_GET[$env->param("id")];
55       if(isset($this->plugins[$plugin_name])){
56         $impl = $this->plugins[$plugin_name]["impl"];
57         $res = $impl->install($env);
58         if($res === true){
59           $plugin_data = array(
60             "installed" => true,
61             "enabled" => false,
62             "priorite" => isset($this->plugins[$plugin_name]["priorite"]) ? $this->plugins[$plugin_name]["priorite"] : 0
63           );
64           if($env->set_plugin_data($plugin_name, $plugin_data)){
65             $env->redirect(
66               $env->url("admin/plugins/index"),
67               "le plugin a &eacute;t&eacute; install&eacute;"
68             );
69           }
70           else $env->erreur("impossible de mettre &agrave; jour le statut du plugin ".$plugin_name);
71         }
72         else $env->erreur("erreur lors de l'installation du plugin ".$plugin_name."<br>".$res);
73       }
74       else $env->erreur("impossible de trouver le plugin ".$plugin_name);
75     }
76
77     function uninstall(&$env){
78       $plugin_name = $_GET[$env->param("id")];
79       if(isset($this->plugins[$plugin_name])){
80         $impl = $this->plugins[$plugin_name]["impl"];
81         $res= $impl->uninstall($env);
82         if($res === true){
83           $plugin_data = array(
84             "installed" => false,
85             "enabled" => false,
86             "priorite" => isset($this->plugins[$plugin_name]["priorite"]) ? $this->plugins[$plugin_name]["priorite"] : 0
87           );
88           if($env->set_plugin_data($plugin_name, $plugin_data)){
89             $env->redirect(
90               $env->url("admin/plugins/index"),
91               "le plugin a &eacute;t&eacute; d&eacute;sinstall&eacute;"
92             );
93           }
94           else $env->erreur("impossible de mettre &agrave; jour le statut du plugin ".$plugin_name);
95         }
96         else $env->erreur("erreur lors de la d&eacute;sinstallation du plugin ".$plugin_name."<br>".$res);
97       }
98       else $env->erreur("impossible de trouver le plugin ".$plugin_name);
99     }
100
101     function enable(&$env){
102       $plugin_name = $_GET[$env->param("id")];
103       if(isset($this->plugins[$plugin_name])){
104         if($this->plugins[$plugin_name]["installed"]){
105           if(!$this->plugins[$plugin_name]["enabled"]){
106             $impl = $this->plugins[$plugin_name]["impl"];
107             $res = $impl->enable($env);
108             if($res === true){
109               $plugin_data = array(
110                 "installed" => true,
111                 "enabled" => true,
112                 "priorite" => isset($this->plugins[$plugin_name]["priorite"]) ? $this->plugins[$plugin_name]["priorite"] : 0
113               );
114               if($env->set_plugin_data($plugin_name, $plugin_data)){
115                 $env->redirect(
116                   $env->url("admin/plugins/index"),
117                   "le plugin a &eacute;t&eacute; activ&eacute;"
118                 );
119               }
120               else $env->erreur("impossible de mettre &agrave; jour le statut du plugin ".$plugin_name);
121             }
122             else $env->erreur("erreur lors de l'activation du plugin ".$plugin_name."<br>".$res);
123           }
124           else $env->erreur("le plugin ".$plugin_name." est d&eacute;j&agrave; actif");
125         }
126         else $env->erreur("le plugin ".$plugin_name." n'est pas install&eacute;");
127       }
128       else $env->erreur("impossible de trouver le plugin ".$plugin_name);
129     }
130
131     function disable(&$env){
132       $plugin_name = $_GET[$env->param("id")];
133       if(isset($this->plugins[$plugin_name])){
134         if($this->plugins[$plugin_name]["installed"]){
135           if($this->plugins[$plugin_name]["enabled"]){
136             $impl = $this->plugins[$plugin_name]["impl"];
137             $res = $impl->disable($env);
138             if($res === true){
139               $plugin_data = array(
140                 "installed" => true,
141                 "enabled" => false,
142                 "priorite" => isset($this->plugins[$plugin_name]["priorite"]) ? $this->plugins[$plugin_name]["priorite"] : 0
143               );
144               if($env->set_plugin_data($plugin_name, $plugin_data)){
145                 $env->redirect(
146                   $env->url("admin/plugins/index"),
147                   "le plugin a &eacute;t&eacute; d&eacute;sactiv&eacute;"
148                 );
149               }
150               else $env->erreur("impossible de mettre &agrave; jour le statut du plugin ".$plugin_name);
151             }
152             else $env->erreur("erreur lors de la d&eacute;sactivation du plugin ".$plugin_name."<br>".$res);
153           }
154           else $env->erreur("le plugin ".$plugin_name." est d&eacute;j&agrave; inactif");
155         }
156         else $env->erreur("le plugin ".$plugin_name." n'est pas install&eacute;");
157       }
158       else $env->erreur("impossible de trouver le plugin ".$plugin_name);
159     }
160
161   }
162
163 ?>