On revient sur r56028 et r56029 , en se retentant un exec PHP, mais cette fois en squizant réellement Zpip pour forcer l'usage de script PHP. On prefixe les squelettes admin_plugin de svp_, ce qui permet à l'exec PHP d'être lancé (sinon ce sont les squelettes qui prennent la priorité).

Cela devrait résoudre 2 problèmes :
- Un timeout sur une mise à jour de plugin ne reprenait pas. Il semblerait que le fait d'executer (avant) la redirection par header dans le squelette ne la faisait pas fonctionner à cause de l'encapsulation du code dans des ob_start / ob_flush.

- la disparition d'un plugin du FTP dont un autre dépendait n'affichait pas d'erreur sur la page des plugins. On voit ainsi de nouveau les erreurs, mais les plugins temporairement déconnectés apparaissent dans les inactifs ce qui est incorrect. Ce sont des actifs... en erreur. (le temps de réparer le plugin manquant...). Il faudrait réparer cet affichage pour en tenir compte.
spip-3.0 v0.76.0
marcimat@rezo.net 12 years ago
parent 12bb1effaf
commit 886ef6695f

9
.gitattributes vendored

@ -1,6 +1,7 @@
* text=auto !eol
action/actionner.php -text
action/teleporter.php -text
exec/admin_plugin.php -text
formulaires/admin_plugin.html -text
formulaires/admin_plugin.php -text
formulaires/configurer_svp.html -text
@ -21,11 +22,11 @@ lib/pcltar/pclerror.lib.php -text
lib/pcltar/pcltrace.lib.php -text
lib/pcltar/readme.txt -text
modeles/svp_presenter_actions.html -text
prive/squelettes/contenu/admin_plugin.html -text
prive/squelettes/contenu/admin_plugin_fonctions.php -text
prive/squelettes/contenu/configurer_svp.html -text
prive/squelettes/navigation/admin_plugin.html -text
prive/squelettes/navigation/admin_plugin_fonctions.php -text
prive/squelettes/contenu/svp_admin_plugin.html -text
prive/squelettes/contenu/svp_admin_plugin_fonctions.php -text
prive/squelettes/navigation/svp_admin_plugin.html -text
prive/squelettes/navigation/svp_admin_plugin_fonctions.php -text
prive/themes/spip/images/depot-16.png -text
prive/themes/spip/images/depot-24.png -text
prive/themes/spip/images/depot-32.png -text

@ -0,0 +1,130 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2011 *
* 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. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
include_spip('inc/presentation');
// http://doc.spip.org/@exec_admin_plugin_dist
function exec_admin_plugin_dist() {
if (!autoriser('configurer', 'plugins')) {
include_spip('inc/minipres');
echo minipres();
}
// on fait la verif du path avant tout,
// et l'installation des qu'on est dans la colonne principale
// si jamais la liste des plugins actifs change, il faut faire un refresh du hit
// pour etre sur que les bons fichiers seront charges lors de l'install
include_spip('inc/plugin');
$new = actualise_plugins_actifs();
if ($new AND _request('actualise')<2) {
$url = parametre_url(self(),'actualise',_request('actualise')+1,'&');
include_spip('inc/headers');
echo redirige_formulaire($url);
exit;
}
// le code ci-dessous eut ete bien beau mais...
// si l'on veut que les messages d'installation moches des plugins
// soient au bon endroit, nous sommes obliges d'appeler la fonction
// d'installation a la bonne place, et donc, en php...
// car dans le html d'un squelette, encapsule dans un ob_start()/ob_flush(),
// la redirection en cas de timeout sur une installation ne se fait pas.
/*
// on installe les plugins maintenant,
// cela permet aux scripts d'install de faire des affichages (moches...)
plugin_installes_meta();
// les squelettes ne peuvent pas s'appeler 'admin_plugin'
// sinon Z les charge en priorite par rapport a ce fichier exec en PHP
set_request('fond', 'svp_admin_plugin');
// on lance l'affichage standard Z
include_spip('exec/fond');
*/
// liste des erreurs mises en forme
$erreur_activation = plugin_donne_erreurs();
$commencer_page = charger_fonction('commencer_page', 'inc');
echo $commencer_page(_T('icone_admin_plugin'), "configuration", "plugin");
echo debut_gauche('plugin', true);
echo pipeline('affiche_gauche',
array(
'args'=>array('exec'=>'admin_plugin'),
'data'=> recuperer_fond('prive/squelettes/navigation/svp_admin_plugin')
)
);
echo debut_droite('plugin', true);
echo gros_titre(_T('icone_admin_plugin'),'',false);
// message d'erreur au retour d'une operation
if ($erreur)
echo "<div class='error'>$erreur</div>";
if ($erreur_activation){
echo "<div class='error'>$erreur_activation</div>";
}
// afficher les actions realisees s'il y en a eu
// (activation/desactivation/telechargement...)
echo svp_presenter_actions_realisees();
// on installe les plugins maintenant,
// cela permet aux scripts d'install de faire des affichages (moches...)
plugin_installes_meta();
echo recuperer_fond('prive/squelettes/contenu/svp_admin_plugin', $_REQUEST);
echo pipeline('affiche_milieu',
array(
'args'=>array('exec'=>'admin_plugin'),
'data'=>''
)
);
echo fin_gauche(), fin_page();
}
function svp_presenter_actions_realisees() {
// presenter les traitements realises... si tel est le cas...
include_spip('inc/svp_actionner');
$actionneur = new Actionneur();
// s'il ne reste aucune action a faire ou si on force un nettoyage.
if (_request('nettoyer_actions')) {
$actionneur->nettoyer_actions();
}
$actionneur->get_actions();
$pres = $actionneur->presenter_actions($fin = true);
// s'il ne reste aucune action a faire
if (!$actionneur->est_verrouille() OR !count($actionneur->end)) {
$actionneur->nettoyer_actions();
}
return $pres;
}

@ -1,7 +1,7 @@
<paquet
prefix="svp"
categorie="maintenance"
version="0.75.4"
version="0.76.0"
etat="test"
compatibilite="[3.0.0-beta;3.0.*]"
logo="svp-64.png"

@ -1,43 +0,0 @@
<?php
// on installe les plugins maintenant,
// cela permet aux scripts d'install de faire des affichages (moches...)
include_spip('inc/plugin'); // plugin_installes_meta();
// on fait la verif du path avant tout,
// et l'installation des qu'on est dans la colonne principale
// si jamais la liste des plugins actifs change, il faut faire un refresh du hit
// pour etre sur que les bons fichiers seront charges lors de l'install
$new = actualise_plugins_actifs();
if ($new AND _request('actualise')<2) {
$url = parametre_url(self(),'actualise',_request('actualise')+1,'&');
include_spip('inc/headers');
echo redirige_formulaire($url);
exit;
}
function svp_presenter_actions_realisees() {
// presenter les traitements realises... si tel est le cas...
include_spip('inc/svp_actionner');
$actionneur = new Actionneur();
// s'il ne reste aucune action a faire ou si on force un nettoyage.
if (_request('nettoyer_actions')) {
$actionneur->nettoyer_actions();
}
$actionneur->get_actions();
$pres = $actionneur->presenter_actions($fin = true);
// s'il ne reste aucune action a faire
if (!$actionneur->est_verrouille() OR !count($actionneur->end)) {
$actionneur->nettoyer_actions();
}
return $pres;
}
?>

@ -1,9 +1,4 @@
[(#AUTORISER{configurer,_plugins}|sinon_interdire_acces)]
<h1 class="grostitre"><:icone_admin_plugin:></h1>
[(#VAL|svp_presenter_actions_realisees)]
[(#VAL{inc/plugin}|include_spip|oui)]
[(#REM|plugin_installes_meta)]
[(#REM) <!-- Barre d'onglets de premier niveau --> ]
[(#VAL{plugins}|barre_onglets{plugins_actifs})]

@ -0,0 +1,25 @@
<?php
/*
function svp_presenter_actions_realisees() {
// presenter les traitements realises... si tel est le cas...
include_spip('inc/svp_actionner');
$actionneur = new Actionneur();
// s'il ne reste aucune action a faire ou si on force un nettoyage.
if (_request('nettoyer_actions')) {
$actionneur->nettoyer_actions();
}
$actionneur->get_actions();
$pres = $actionneur->presenter_actions($fin = true);
// s'il ne reste aucune action a faire
if (!$actionneur->est_verrouille() OR !count($actionneur->end)) {
$actionneur->nettoyer_actions();
}
return $pres;
}*/
?>
Loading…
Cancel
Save