[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / ecrire / action / activer_plugins.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2017 *
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 activer_plugins
15 *
16 * @package SPIP\Core\Plugins
17 **/
18
19 if (!defined('_ECRIRE_INC_VERSION')) {
20 return;
21 }
22
23 /**
24 * Mise à jour des données si envoi via formulaire
25 *
26 * @global array $GLOBALS ['visiteur_session']
27 * @global array $GLOBALS ['meta']
28 * @return void
29 */
30 function enregistre_modif_plugin() {
31 include_spip('inc/plugin');
32 // recuperer les plugins dans l'ordre des $_POST
33 $test = array();
34 foreach (liste_plugin_files() as $file) {
35 $test['s' . substr(md5(_DIR_PLUGINS . $file), 0, 16)] = $file;
36 }
37 if (defined('_DIR_PLUGINS_SUPPL')) {
38 foreach (liste_plugin_files(_DIR_PLUGINS_SUPPL) as $file) {
39 $test['s' . substr(md5(_DIR_PLUGINS_SUPPL . $file), 0, 16)] = $file;
40 }
41 }
42
43 $plugin = array();
44
45 foreach ($_POST as $choix => $val) {
46 if (isset($test[$choix]) && $val == 'O') {
47 $plugin[] = $test[$choix];
48 }
49 }
50
51 spip_log("Changement des plugins actifs par l'auteur " . $GLOBALS['visiteur_session']['id_auteur'] . ": " . join(',',
52 $plugin));
53 ecrire_plugin_actifs($plugin);
54
55 // Chaque fois que l'on valide des plugins, on memorise la liste de ces plugins comme etant "interessants", avec un score initial, qui sera decremente a chaque tour : ainsi un plugin active pourra reter visible a l'ecran, jusqu'a ce qu'il tombe dans l'oubli.
56 $plugins_interessants = @unserialize($GLOBALS['meta']['plugins_interessants']);
57 if (!is_array($plugins_interessants)) {
58 $plugins_interessants = array();
59 }
60
61 $plugins_interessants2 = array();
62
63 foreach ($plugins_interessants as $plug => $score) {
64 if ($score > 1) {
65 $plugins_interessants2[$plug] = $score - 1;
66 }
67 }
68 foreach ($plugin as $plug) {
69 $plugins_interessants2[$plug] = 10;
70 } // score initial
71 ecrire_meta('plugins_interessants', serialize($plugins_interessants2));
72 }
73
74 /**
75 * Fonction d'initialisation avant l'activation des plugins
76 *
77 * Vérifie les droits et met à jour les méta avant de lancer l'activation des plugins
78 *
79 * @return void
80 */
81 function action_activer_plugins_dist() {
82
83 $securiser_action = charger_fonction('securiser_action', 'inc');
84 $securiser_action();
85
86 if (!autoriser('configurer', '_plugins')) {
87 die('erreur');
88 }
89 // forcer la maj des meta pour les cas de modif de numero de version base via phpmyadmin
90 lire_metas();
91 enregistre_modif_plugin();
92 }