X-Git-Url: http://git.dj3c1t.com/?a=blobdiff_plain;f=mw%2Fapp%2Fmods%2Fadmin%2Fplugins.php;fp=mw%2Fapp%2Fmods%2Fadmin%2Fplugins.php;h=0830f2fd599472bc5303af5df06a975ee96facb7;hb=36ed114046cbe3d72a3589230e9f306a54fcc79d;hp=0000000000000000000000000000000000000000;hpb=281c96e95451269f2614684b8de5be25862c8374;p=mtweb diff --git a/mw/app/mods/admin/plugins.php b/mw/app/mods/admin/plugins.php new file mode 100644 index 0000000..0830f2f --- /dev/null +++ b/mw/app/mods/admin/plugins.php @@ -0,0 +1,163 @@ +plugins = $env->plugins("DESC")) === false) return "impossible de lire la liste des plugins"; + return true; + } + + function index(&$env){ + if($this->plugins !== false){ + if($_POST){ + $OK = true; + foreach($this->plugins as $plugin_name => $plugin){ + if(isset($_POST["priorite_".$plugin_name])){ + $this->plugins[$plugin_name]["priorite"] = $_POST["priorite_".$plugin_name]; + if(!preg_match("/^[0-9]+(\.[0-9]+)?$/", $_POST["priorite_".$plugin_name])){ + $env->message("les priorités des plugins doivent être des nombres"); + $OK = false; + break; + } + } + else $this->plugins[$plugin_name]["priorite"] = 0; + } + if($OK){ + foreach($this->plugins as $plugin_name => $plugin){ + $plugin_data = array( + "installed" => $this->plugins[$plugin_name]["installed"], + "enabled" => $this->plugins[$plugin_name]["enabled"], + "priorite" => $this->plugins[$plugin_name]["priorite"] + ); + if(!$env->set_plugin_data($plugin_name, $plugin_data)){ + $env->erreur("impossible de mettre à jour la priorité du plugin ".$plugin_name); + $OK = false; + break; + } + } + if($OK){ + $env->redirect( + $env->url("admin/plugins/index"), + "les priorités des plugins ont été enregistrées" + ); + } + } + } + $env->set_out("plugins", $this->plugins); + } + else $env->erreur("impossible de lire la liste des plugins"); + } + + function install(&$env){ + $plugin_name = $_GET[$env->param("id")]; + if(isset($this->plugins[$plugin_name])){ + $impl = $this->plugins[$plugin_name]["impl"]; + $res = $impl->install($env); + if($res === true){ + $plugin_data = array( + "installed" => true, + "enabled" => false, + "priorite" => isset($this->plugins[$plugin_name]["priorite"]) ? $this->plugins[$plugin_name]["priorite"] : 0 + ); + if($env->set_plugin_data($plugin_name, $plugin_data)){ + $env->redirect( + $env->url("admin/plugins/index"), + "le plugin a été installé" + ); + } + else $env->erreur("impossible de mettre à jour le statut du plugin ".$plugin_name); + } + else $env->erreur("erreur lors de l'installation du plugin ".$plugin_name."
".$res); + } + else $env->erreur("impossible de trouver le plugin ".$plugin_name); + } + + function uninstall(&$env){ + $plugin_name = $_GET[$env->param("id")]; + if(isset($this->plugins[$plugin_name])){ + $impl = $this->plugins[$plugin_name]["impl"]; + $res= $impl->uninstall($env); + if($res === true){ + $plugin_data = array( + "installed" => false, + "enabled" => false, + "priorite" => isset($this->plugins[$plugin_name]["priorite"]) ? $this->plugins[$plugin_name]["priorite"] : 0 + ); + if($env->set_plugin_data($plugin_name, $plugin_data)){ + $env->redirect( + $env->url("admin/plugins/index"), + "le plugin a été désinstallé" + ); + } + else $env->erreur("impossible de mettre à jour le statut du plugin ".$plugin_name); + } + else $env->erreur("erreur lors de la désinstallation du plugin ".$plugin_name."
".$res); + } + else $env->erreur("impossible de trouver le plugin ".$plugin_name); + } + + function enable(&$env){ + $plugin_name = $_GET[$env->param("id")]; + if(isset($this->plugins[$plugin_name])){ + if($this->plugins[$plugin_name]["installed"]){ + if(!$this->plugins[$plugin_name]["enabled"]){ + $impl = $this->plugins[$plugin_name]["impl"]; + $res = $impl->enable($env); + if($res === true){ + $plugin_data = array( + "installed" => true, + "enabled" => true, + "priorite" => isset($this->plugins[$plugin_name]["priorite"]) ? $this->plugins[$plugin_name]["priorite"] : 0 + ); + if($env->set_plugin_data($plugin_name, $plugin_data)){ + $env->redirect( + $env->url("admin/plugins/index"), + "le plugin a été activé" + ); + } + else $env->erreur("impossible de mettre à jour le statut du plugin ".$plugin_name); + } + else $env->erreur("erreur lors de l'activation du plugin ".$plugin_name."
".$res); + } + else $env->erreur("le plugin ".$plugin_name." est déjà actif"); + } + else $env->erreur("le plugin ".$plugin_name." n'est pas installé"); + } + else $env->erreur("impossible de trouver le plugin ".$plugin_name); + } + + function disable(&$env){ + $plugin_name = $_GET[$env->param("id")]; + if(isset($this->plugins[$plugin_name])){ + if($this->plugins[$plugin_name]["installed"]){ + if($this->plugins[$plugin_name]["enabled"]){ + $impl = $this->plugins[$plugin_name]["impl"]; + $res = $impl->disable($env); + if($res === true){ + $plugin_data = array( + "installed" => true, + "enabled" => false, + "priorite" => isset($this->plugins[$plugin_name]["priorite"]) ? $this->plugins[$plugin_name]["priorite"] : 0 + ); + if($env->set_plugin_data($plugin_name, $plugin_data)){ + $env->redirect( + $env->url("admin/plugins/index"), + "le plugin a été désactivé" + ); + } + else $env->erreur("impossible de mettre à jour le statut du plugin ".$plugin_name); + } + else $env->erreur("erreur lors de la désactivation du plugin ".$plugin_name."
".$res); + } + else $env->erreur("le plugin ".$plugin_name." est déjà inactif"); + } + else $env->erreur("le plugin ".$plugin_name." n'est pas installé"); + } + else $env->erreur("impossible de trouver le plugin ".$plugin_name); + } + + } + +?> \ No newline at end of file