Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Permet d'activer des plugins d'un site SPIP depuis la ligne de commande. Lancer le script depuis la racine du site ou depuis ecrire/ ou plugins/
#!/usr/bin/php
<?php
$activer = $argv;
array_shift($activer);
if (!is_dir('ecrire/') AND is_dir('../ecrire/')) chdir('../');
chdir('ecrire/');
if (!defined('_DIR_RESTREINT_ABS')) define('_DIR_RESTREINT_ABS', '');
include_once _DIR_RESTREINT_ABS.'inc_version.php';
$plugins_actifs = unserialize($GLOBALS['meta']['plugin']);
#var_dump(array_keys($plugins_actifs));
echo "Plugins actifs : \n".implode(", ",array_map('strtolower',array_keys($plugins_actifs)));
echo "\n";
echo "\n";
if (!count($activer)){
echo "Indiquez la liste des plugins a activer par leur prefixe. Par exemple :
site-active-plugin.php mailshot newsletters
Vous pouvez aussi indiquer l'url d'un site distant en argument pour activer tous les mÍmes plugins. Par exemple :
site-active-plugin.php http://blog.nursit.net
";
}
else {
// si on donne une url de site en argument :
// recuperer le header de ce site et activer tous les memes plugins
if (preg_match(',^https?://,',reset($activer))){
$url = reset($activer);
$head = array();
exec("curl -I -L --silent $url",$head);
$head = implode("\n",$head);
if (preg_match(",^Composed-By:(.*)\n,Uims",$head,$m)){
// virer les numeros de version
$liste = preg_replace(",\([^)]+\),","",$m[1]);
$liste = explode(",",$liste);
array_shift($liste);
$activer = $liste;
echo "Activer les memes plugins que sur $url : \n".implode(", ",$activer)."\n\n";
}
else {
echo "Composed-By non trouve dans le head de $url : \n$head\n";
die();
}
}
$activer = array_map('strtolower',$activer);
// enlever les plugins deja actifs (donc y compris les extensions)
foreach($activer as $k=>$prefixe){
$prefixeup = strtoupper($prefixe);
if (isset($plugins_actifs[$prefixeup])){
echo "Plugin $prefixe deja actif\n";
unset($activer[$k]);
}
}
// chercher dans les plugins dispo
include_spip('inc/plugin');
$plugins = liste_plugin_files();
$get_infos = charger_fonction('get_infos','plugins');
$dirs_add = array();
foreach($plugins as $dir){
$infos = $get_infos($dir);
$prefix = strtolower($infos['prefix']);
if (in_array($prefix,$activer)){
$dirs_add[] = $dir;
echo "Activer plugin ".$prefix." (repertoire $dir)\n";
$activer = array_diff($activer, array($prefix));
if (!count($activer))
break;
}
}
if (count($activer)){
echo "\nImpossible de trouver les plugins : ".implode(", ",$activer)."\n";
}
if (count($dirs_add)){
ecrire_plugin_actifs($dirs_add,false,'ajoute');
$plugins_actifs = unserialize($GLOBALS['meta']['plugin']);
echo "\nPlugins actifs : \n".implode(", ",array_map('strtolower',array_keys($plugins_actifs)));
}
}
echo "\n";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment