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);
}
}
?>