Skip to content
Extraits de code Groupes Projets
Valider 4aeee954 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

"gerer la desinstallation complete d'un plugin actif (Effacer TOUT)"

parent a51b7426
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -321,6 +321,7 @@ ecrire/action/activer_plugins.php -text ...@@ -321,6 +321,7 @@ ecrire/action/activer_plugins.php -text
ecrire/action/autoriser.php -text ecrire/action/autoriser.php -text
ecrire/action/converser.php -text ecrire/action/converser.php -text
ecrire/action/dater.php -text ecrire/action/dater.php -text
ecrire/action/desinstaller_plugin.php -text
ecrire/action/documenter.php -text ecrire/action/documenter.php -text
ecrire/action/editer_article.php -text ecrire/action/editer_article.php -text
ecrire/action/editer_auteurs.php -text ecrire/action/editer_auteurs.php -text
......
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2007 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/plugin');
function action_desinstaller_plugin_dist() {
$securiser_action = charger_fonction('securiser_action', 'inc');
$plug_file = $securiser_action();
$infos = plugin_get_infos($plug_file);
if (isset($infos['install'])){
// desinstaller
$etat = desinstalle_un_plugin($plug_file,$infos['prefix'],$infos['install']);
// desactiver si il a bien ete desinstalle
if (!$etat)
ecrire_plugin_actifs($plug_file,false,'enleve');
ecrire_metas();
}
if ($redirect = _request('redirect')){
include_spip('inc/headers');
$redirect = str_replace('&amp;','&',$redirect);
redirige_par_entete($redirect);
}
}
?>
...@@ -268,6 +268,7 @@ function affiche_arbre_plugins($liste_plugins,$liste_plugins_actifs){ ...@@ -268,6 +268,7 @@ function affiche_arbre_plugins($liste_plugins,$liste_plugins_actifs){
// http://doc.spip.org/@ligne_plug // http://doc.spip.org/@ligne_plug
function ligne_plug($plug_file, $actif, $id){ function ligne_plug($plug_file, $actif, $id){
global $spip_lang_right;
static $id_input=0; static $id_input=0;
$erreur = false; $erreur = false;
...@@ -281,6 +282,14 @@ function ligne_plug($plug_file, $actif, $id){ ...@@ -281,6 +282,14 @@ function ligne_plug($plug_file, $actif, $id){
$s .= "/!\ $err <br/>"; $s .= "/!\ $err <br/>";
$s .= "</div>"; $s .= "</div>";
} }
// bouton de desinstallation
if ($actif && plugin_est_installe($plug_file)){
$s .= "<div style='float:$spip_lang_right'>";
$action = generer_action_auteur('desinstaller_plugin',$plug_file,generer_url_ecrire('admin_plugin'));
$s .= "<a href='$action'>"._T('bouton_effacer_tout')."</a>";
$s .= "</div>";
}
$etat = 'dev'; $etat = 'dev';
if (isset($info['etat'])) if (isset($info['etat']))
......
...@@ -249,6 +249,22 @@ function ordonne_plugin(){ ...@@ -249,6 +249,22 @@ function ordonne_plugin(){
ecrire_plugin_actifs($liste_triee); ecrire_plugin_actifs($liste_triee);
ecrire_metas(); ecrire_metas();
} }
function desinstalle_un_plugin($plug,$prefix,$install){
// faire les include qui vont bien
foreach($install as $file){
$file = trim($file);
@include_once(_DIR_PLUGINS."$plug/$file");
}
$prefix_install = $prefix."_install";
if (!function_exists($prefix_install))
return false;
// voir si on a besoin de faire l'install
$prefix_install('uninstall');
$ok = $prefix_install('test');
return $ok;
}
// http://doc.spip.org/@installe_un_plugin // http://doc.spip.org/@installe_un_plugin
function installe_un_plugin($plug,$prefix,$install){ function installe_un_plugin($plug,$prefix,$install){
// faire les include qui vont bien // faire les include qui vont bien
...@@ -285,6 +301,11 @@ function installe_plugins(){ ...@@ -285,6 +301,11 @@ function installe_plugins(){
ecrire_meta('plugin_installes',serialize($meta_plug_installes),'non'); ecrire_meta('plugin_installes',serialize($meta_plug_installes),'non');
ecrire_metas(); ecrire_metas();
} }
function plugin_est_installe($plug_path){
$plugin_installes = isset($GLOBALS['meta']['plugin_installes'])?unserialize($GLOBALS['meta']['plugin_installes']):array();
if (!$plugin_installes) return false;
return in_array($plug_path,$plugin_installes);
}
// lecture du fichier de configuration d'un plugin // lecture du fichier de configuration d'un plugin
// http://doc.spip.org/@plugin_get_infos // http://doc.spip.org/@plugin_get_infos
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter