[SPIP] v3.2.1-->v3.2.2
[lhc/web/www.git] / www / ecrire / action / desinstaller_plugin.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2019 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 /**
14 * Gestion de l'action desinstaller_plugin
15 *
16 * @package SPIP\Core\Plugins
17 */
18
19 if (!defined('_ECRIRE_INC_VERSION')) {
20 return;
21 }
22
23 /**
24 * Action de désinstallation d'un plugin
25 *
26 * L'argument attendu est le préfixe du plugin à désinstaller.
27 *
28 * @uses plugins_installer_dist()
29 *
30 * @global array visiteur_session
31 * @return void
32 */
33 function action_desinstaller_plugin_dist() {
34
35 $securiser_action = charger_fonction('securiser_action', 'inc');
36 $arg = $securiser_action();
37 list($dir_plugins, $plugin) = explode("::", $arg);
38 $dir_type = "_DIR_PLUGINS";
39 if (defined('_DIR_PLUGINS_SUPPL') and $dir_plugins == _DIR_PLUGINS_SUPPL) {
40 $dir_type = "_DIR_PLUGINS_SUPPL";
41 }
42 $installer_plugins = charger_fonction('installer', 'plugins');
43 $infos = $installer_plugins($plugin, 'uninstall', $dir_type);
44 if ($infos and !$infos['install_test'][0]) {
45 include_spip('inc/plugin');
46 ecrire_plugin_actifs(array($plugin), false, 'enleve');
47 $erreur = '';
48 } else {
49 $erreur = 'erreur_plugin_desinstalation_echouee';
50 }
51 if ($redirect = _request('redirect')) {
52 include_spip('inc/headers');
53 if ($erreur) {
54 $redirect = parametre_url($redirect, 'erreur', $erreur);
55 }
56 $redirect = str_replace('&amp;', '&', $redirect);
57 redirige_par_entete($redirect);
58 }
59 }