activer_plugins.php 2.92 KB
Newer Older
1 2 3 4 5
<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
6
 *  Copyright (c) 2001-2016                                                *
7 8 9 10 11 12
 *  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.   *
\***************************************************************************/

13 14 15 16
/**
 * Gestion de l'action activer_plugins
 *
 * @package SPIP\Core\Plugins
17
 **/
18

19 20 21
if (!defined('_ECRIRE_INC_VERSION')) {
	return;
}
22

Gilles Vincent's avatar
Gilles Vincent committed
23
/**
24
 * Mise à jour des données si envoi via formulaire
25 26 27
 *
 * @global array $GLOBALS ['visiteur_session']
 * @global array $GLOBALS ['meta']
Gilles Vincent's avatar
Gilles Vincent committed
28 29
 * @return void
 */
30
function enregistre_modif_plugin() {
31
	include_spip('inc/plugin');
32
	// recuperer les plugins dans l'ordre des $_POST
33
	$test = array();
34 35
	foreach (liste_plugin_files() as $file) {
		$test['s' . substr(md5(_DIR_PLUGINS . $file), 0, 16)] = $file;
36
	}
37 38 39
	if (defined('_DIR_PLUGINS_SUPPL')) {
		foreach (liste_plugin_files(_DIR_PLUGINS_SUPPL) as $file) {
			$test['s' . substr(md5(_DIR_PLUGINS_SUPPL . $file), 0, 16)] = $file;
40
		}
41
	}
42

43
	$plugin = array();
Fil's avatar
Fil committed
44

45 46 47 48
	foreach ($_POST as $choix => $val) {
		if (isset($test[$choix]) && $val == 'O') {
			$plugin[] = $test[$choix];
		}
49
	}
50

51 52
	spip_log("Changement des plugins actifs par l'auteur " . $GLOBALS['visiteur_session']['id_auteur'] . ": " . join(',',
			$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 62

	$plugins_interessants2 = array();

63 64 65 66 67 68 69 70
	foreach ($plugins_interessants as $plug => $score) {
		if ($score > 1) {
			$plugins_interessants2[$plug] = $score - 1;
		}
	}
	foreach ($plugin as $plug) {
		$plugins_interessants2[$plug] = 10;
	} // score initial
71
	ecrire_meta('plugins_interessants', serialize($plugins_interessants2));
72 73
}

Gilles Vincent's avatar
Gilles Vincent committed
74
/**
75 76 77
 * Fonction d'initialisation avant l'activation des plugins
 *
 * Vérifie les droits et met à jour les méta avant de lancer l'activation des plugins
78
 *
Gilles Vincent's avatar
Gilles Vincent committed
79 80
 * @return void
 */
81 82 83
function action_activer_plugins_dist() {

	$securiser_action = charger_fonction('securiser_action', 'inc');
84
	$securiser_action();
85

86
	if (!autoriser('configurer', '_plugins')) {
Fil's avatar
Fil committed
87
		die('erreur');
88
	}
89 90
	// forcer la maj des meta pour les cas de modif de numero de version base via phpmyadmin
	lire_metas();
91 92
	enregistre_modif_plugin();
}