コード例 #1
0
ファイル: activer_plugins.php プロジェクト: nursit/SPIP
/**
 * mise a jour des donnees si envoi via formulaire
 * 
 * @link http://doc.spip.org/@enregistre_modif_plugin 
 * @global array $GLOBALS['visiteur_session']
 * @global array $GLOBALS['meta']
 * @return void
 */
function enregistre_modif_plugin()
{
    include_spip('inc/plugin');
    // recuperer les plugins dans l'ordre des $_POST
    $test = array();
    foreach (liste_plugin_files() as $file) {
        $test['s' . substr(md5($file), 0, 16)] = $file;
    }
    $plugin = array();
    foreach ($_POST as $choix => $val) {
        if (isset($test[$choix]) && $val == 'O') {
            $plugin[] = $test[$choix];
        }
    }
    spip_log("Changement des plugins actifs par l'auteur " . $GLOBALS['visiteur_session']['id_auteur'] . ": " . join(',', $plugin));
    ecrire_plugin_actifs($plugin);
    // 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.
    $plugins_interessants = @unserialize($GLOBALS['meta']['plugins_interessants']);
    if (!is_array($plugins_interessants)) {
        $plugins_interessants = array();
    }
    $plugins_interessants2 = array();
    foreach ($plugins_interessants as $plug => $score) {
        if ($score > 1) {
            $plugins_interessants2[$plug] = $score - 1;
        }
    }
    foreach ($plugin as $plug) {
        $plugins_interessants2[$plug] = 10;
    }
    // score initial
    ecrire_meta('plugins_interessants', serialize($plugins_interessants2));
}
コード例 #2
0
ファイル: desinstaller_plugin.php プロジェクト: rhertzog/lcs
function action_desinstaller_plugin_dist() {

	$securiser_action = charger_fonction('securiser_action', 'inc');
	$plug_file = $securiser_action();
	$get_infos = charger_fonction('get_infos','plugins');
	$infos = $get_infos($plug_file);
	$erreur = "";
	if (isset($infos['install'])){
		// desinstaller
		$etat = desinstalle_un_plugin($plug_file,$infos);
		// desactiver si il a bien ete desinstalle
		if (!$etat)
			ecrire_plugin_actifs(array($plug_file),false,'enleve');
		else
			$erreur = 'erreur_plugin_desinstalation_echouee';
	}
	else {
		// en principe on ne passe pas la car pas de bouton sur les plugins non
		// desinstallables
		echo ('Ce plugin ne peut pas etre desinstalle et vous ne devriez pas arriver la !');
	}
	if ($redirect = _request('redirect')){
		include_spip('inc/headers');
		if ($erreur)
			$redirect = parametre_url($redirect, 'erreur',$erreur);
		$redirect = str_replace('&','&',$redirect);
		redirige_par_entete($redirect);
	}
}
コード例 #3
0
function action_desinstaller_plugin_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    list($dir_plugins, $plugin) = explode("::", $arg);
    $dir_type = "_DIR_PLUGINS";
    if (defined('_DIR_PLUGINS_SUPPL') and $dir_plugins == _DIR_PLUGINS_SUPPL) {
        $dir_type = "_DIR_PLUGINS_SUPPL";
    }
    $installer_plugins = charger_fonction('installer', 'plugins');
    $infos = $installer_plugins($plugin, 'uninstall', $dir_type);
    if ($infos and !$infos['install_test'][0]) {
        include_spip('inc/plugin');
        ecrire_plugin_actifs(array($plugin), false, 'enleve');
        $erreur = '';
    } else {
        $erreur = 'erreur_plugin_desinstalation_echouee';
    }
    if ($redirect = _request('redirect')) {
        include_spip('inc/headers');
        if ($erreur) {
            $redirect = parametre_url($redirect, 'erreur', $erreur);
        }
        $redirect = str_replace('&', '&', $redirect);
        redirige_par_entete($redirect);
    }
}
コード例 #4
0
ファイル: desinstaller_plugin.php プロジェクト: nursit/SPIP
function action_desinstaller_plugin_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $plugin = $securiser_action();
    $installer_plugins = charger_fonction('installer', 'plugins');
    $infos = $installer_plugins($plugin, 'uninstall');
    if ($infos and !$infos['install_test'][0]) {
        include_spip('inc/plugin');
        ecrire_plugin_actifs(array($plugin), false, 'enleve');
        $erreur = '';
    } else {
        $erreur = 'erreur_plugin_desinstalation_echouee';
    }
    if ($redirect = _request('redirect')) {
        include_spip('inc/headers');
        if ($erreur) {
            $redirect = parametre_url($redirect, 'erreur', $erreur);
        }
        $redirect = str_replace('&', '&', $redirect);
        redirige_par_entete($redirect);
    }
}
コード例 #5
0
 /**
  * Activer un plugin
  *
  * @param string $dossier
  *     Chemin du répertoire du plugin
  * @param array $i
  *     Description en BDD du paquet - row SQL (tableau clé => valeur)
  * @param string $constante
  *     Constante indiquant le chemin de base du plugin (_DIR_PLUGINS, _DIR_PLUGINS_SUPPL, _DIR_PLUGINS_DIST)
  * @return void
  **/
 public function activer_plugin_dossier($dossier, $i, $constante = '_DIR_PLUGINS')
 {
     include_spip('inc/plugin');
     $this->log("Demande d'activation de : " . $dossier);
     //il faut absolument que tous les fichiers de cache
     // soient inclus avant modification, sinon un appel ulterieur risquerait
     // de charger des fichiers deja charges par un autre !
     // C'est surtout le ficher de fonction le probleme (options et pipelines
     // sont normalement deja charges).
     if (@is_readable(_CACHE_PLUGINS_OPT)) {
         include_once _CACHE_PLUGINS_OPT;
     }
     if (@is_readable(_CACHE_PLUGINS_FCT)) {
         include_once _CACHE_PLUGINS_FCT;
     }
     if (@is_readable(_CACHE_PIPELINES)) {
         include_once _CACHE_PIPELINES;
     }
     include_spip('inc/plugin');
     ecrire_plugin_actifs(array($dossier), false, 'ajoute');
     $installe = $i['version_base'] ? 'oui' : 'non';
     if ($installe == 'oui') {
         if (!$i['constante']) {
             $i['constante'] = '_DIR_PLUGINS';
         }
         // installer le plugin au prochain tour
         $new_action = array_merge($this->work, array('todo' => 'install', 'dossier' => rtrim($dossier, '/'), 'constante' => $i['constante'], 'v' => $i['version']));
         array_unshift($this->end, $new_action);
         $this->log("Demande d'installation de {$dossier}");
         #$this->installer_plugin($dossier);
     }
     $this->ajouter_plugin_interessants_meta($dossier);
     $this->actualiser_plugin_interessants();
 }
コード例 #6
0
ファイル: plugin.php プロジェクト: spip/SPIP
/**
 * Calcule la liste des plugins actifs et recompile les fichiers caches
 * qui leurs sont relatifs
 *
 * @uses ecrire_plugin_actifs()
 *
 * @param bool $pipe_recherche ?
 * @return bool
 *     true si il y a eu des modifications sur la liste des plugins actifs, false sinon
 **/
function actualise_plugins_actifs($pipe_recherche = false)
{
    return ecrire_plugin_actifs('', $pipe_recherche, 'force');
}
コード例 #7
0
ファイル: charger_plugin.php プロジェクト: rhertzog/lcs
function chargeur_activer_plugin($plugin)
{
	spip_log('charger_decompresser activer plugin: ' . $plugin);
	include_spip('inc/plugin');
	ecrire_plugin_actifs(array($plugin), false, 'ajoute');
}
コード例 #8
0
ファイル: plugin.php プロジェクト: rhertzog/lcs
function actualise_plugins_actifs($pipe_recherche = false){
	if (!spip_connect()) return false;
	$plugin_actifs = liste_chemin_plugin_actifs();
	$plugin_liste = liste_plugin_files();
	$plugin_new = array_intersect($plugin_actifs,$plugin_liste);
	$actifs_avant = $GLOBALS['meta']['plugin'];
	ecrire_plugin_actifs($plugin_new,$pipe_recherche);
	// retourner -1 si la liste des plugins actifs a change
	return (strcmp($GLOBALS['meta']['plugin'],$actifs_avant)==0) ? 1 : -1;
}