3 class mw_admin_plugins extends mw_mod{
7 function validate(&$env){
8 if(($this->plugins = $env->plugins("DESC")) === false) return "impossible de lire la liste des plugins";
12 function index(&$env){
13 if($this->plugins !== false){
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és des plugins doivent être des nombres");
25 else $this->plugins[$plugin_name]["priorite"] = 0;
28 foreach($this->plugins as $plugin_name => $plugin){
30 "installed" => $this->plugins[$plugin_name]["installed"],
31 "enabled" => $this->plugins[$plugin_name]["enabled"],
32 "priorite" => $this->plugins[$plugin_name]["priorite"]
34 if(!$env->set_plugin_data($plugin_name, $plugin_data)){
35 $env->erreur("impossible de mettre à jour la priorité du plugin ".$plugin_name);
42 $env->url("admin/plugins/index"),
43 "les priorités des plugins ont été enregistrées"
48 $env->set_out("plugins", $this->plugins);
50 else $env->erreur("impossible de lire la liste des plugins");
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);
62 "priorite" => isset($this->plugins[$plugin_name]["priorite"]) ? $this->plugins[$plugin_name]["priorite"] : 0
64 if($env->set_plugin_data($plugin_name, $plugin_data)){
66 $env->url("admin/plugins/index"),
67 "le plugin a été installé"
70 else $env->erreur("impossible de mettre à jour le statut du plugin ".$plugin_name);
72 else $env->erreur("erreur lors de l'installation du plugin ".$plugin_name."<br>".$res);
74 else $env->erreur("impossible de trouver le plugin ".$plugin_name);
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);
86 "priorite" => isset($this->plugins[$plugin_name]["priorite"]) ? $this->plugins[$plugin_name]["priorite"] : 0
88 if($env->set_plugin_data($plugin_name, $plugin_data)){
90 $env->url("admin/plugins/index"),
91 "le plugin a été désinstallé"
94 else $env->erreur("impossible de mettre à jour le statut du plugin ".$plugin_name);
96 else $env->erreur("erreur lors de la désinstallation du plugin ".$plugin_name."<br>".$res);
98 else $env->erreur("impossible de trouver le plugin ".$plugin_name);
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);
109 $plugin_data = array(
112 "priorite" => isset($this->plugins[$plugin_name]["priorite"]) ? $this->plugins[$plugin_name]["priorite"] : 0
114 if($env->set_plugin_data($plugin_name, $plugin_data)){
116 $env->url("admin/plugins/index"),
117 "le plugin a été activé"
120 else $env->erreur("impossible de mettre à jour le statut du plugin ".$plugin_name);
122 else $env->erreur("erreur lors de l'activation du plugin ".$plugin_name."<br>".$res);
124 else $env->erreur("le plugin ".$plugin_name." est déjà actif");
126 else $env->erreur("le plugin ".$plugin_name." n'est pas installé");
128 else $env->erreur("impossible de trouver le plugin ".$plugin_name);
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);
139 $plugin_data = array(
142 "priorite" => isset($this->plugins[$plugin_name]["priorite"]) ? $this->plugins[$plugin_name]["priorite"] : 0
144 if($env->set_plugin_data($plugin_name, $plugin_data)){
146 $env->url("admin/plugins/index"),
147 "le plugin a été désactivé"
150 else $env->erreur("impossible de mettre à jour le statut du plugin ".$plugin_name);
152 else $env->erreur("erreur lors de la désactivation du plugin ".$plugin_name."<br>".$res);
154 else $env->erreur("le plugin ".$plugin_name." est déjà inactif");
156 else $env->erreur("le plugin ".$plugin_name." n'est pas installé");
158 else $env->erreur("impossible de trouver le plugin ".$plugin_name);