X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fplugins-dist%2Fsvp%2Faction%2Factionner.php;fp=www%2Fplugins-dist%2Fsvp%2Faction%2Factionner.php;h=d0c4f411cf502631f9a4a830e7ed4aa28898af94;hb=4f443dce95ff6f8221c189880a70c74ce1c1f238;hp=259e46d50d71278c39d200ee65ffac2a8ae4c763;hpb=4a628e9b277d3617535f99d663ca79fa2e891177;p=lhc%2Fweb%2Fwww.git diff --git a/www/plugins-dist/svp/action/actionner.php b/www/plugins-dist/svp/action/actionner.php index 259e46d5..d0c4f411 100644 --- a/www/plugins-dist/svp/action/actionner.php +++ b/www/plugins-dist/svp/action/actionner.php @@ -7,8 +7,10 @@ * @license GPL * @package SPIP\SVP\Actions */ - -if (!defined("_ECRIRE_INC_VERSION")) return; + +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} /** * Action effectuant 1 action dans la liste des actions à réaliser @@ -29,6 +31,7 @@ function action_actionner_dist() { include_spip('inc/headers'); $actionneur = new Actionneur(); $actionneur->get_actions(); + if ($actionneur->one_action()) { // si SVP a été enlevé des actifs, on redirige sur la fin... // sinon cette page d'action/actionner devient introuvable. @@ -37,7 +40,7 @@ function action_actionner_dist() { if ($actionneur->tester_si_svp_desactive()) { $url = _request('redirect'); } else { - $url = generer_action_auteur('actionner', '', _request('redirect')); + $url = generer_action_auteur('actionner', '', _request('redirect')); } // en mode pas à pas, on affiche un bilan entre chaque action @@ -54,21 +57,83 @@ function action_actionner_dist() { #minipres #actionner ul {margin-left: 0.5em;} #minipres #actionner li {list-style-type:square; margin-left: 0.5em;} "; - echo minipres( _T('svp:installation_en_cours'), $pres . '

' . $btn . $styles); + echo minipres(_T('svp:installation_en_cours'), $pres . '

' . $btn . $styles); die(); } - redirige_par_entete(str_replace('&','&', $url)); + // s'il n'y avait en tout est pour tout qu'une seule action, rediriger directement + if ($actionneur->progression() === 1 and count($actionneur->done) === 1) { + redirige_par_entete(str_replace('&', '&', $url)); + } + // sinon bel affichage de la progression + svp_redirige_boucle( + str_replace('&', '&', $url), + $actionneur->presenter_derniere_action(), + $actionneur->progression() + ); + } + + foreach ($actionneur->done as $done) { + if ($done['todo'] == 'on') { + if ($voir = session_get('svp_admin_plugin_voir') + and $voir == 'inactif' + ) { + session_set('svp_admin_plugin_voir', 'actif'); + } + break; + } } - + include_spip('inc/svp_depoter_local'); svp_actualiser_paquets_locaux(); - if (!_request('redirect')) + if (!_request('redirect')) { $GLOBALS['redirect'] = generer_url_ecrire('admin_plugin'); - else - $GLOBALS['redirect'] = str_replace('&','&', _request('redirect')); - + } else { + $GLOBALS['redirect'] = str_replace('&', '&', _request('redirect')); + } } -?> +/** + * Redirections par refresh d'une URL afin d'éviter des blocages de redirections par les navigateurs + * lorsqu'elles sont trop nombreuses + * + * @param string $url + * @param string $texte Texte de l'action réalisée + * @param string $progres + */ +function svp_redirige_boucle($url, $texte, $progres){ + include_spip('inc/minipres'); + + //@apache_setenv('no-gzip', 1); // provoque page blanche chez certains hebergeurs donc ne pas utiliser + @ini_set('zlib.output_compression', '0'); // pour permettre l'affichage au fur et a mesure + @ini_set('output_buffering', 'off'); + @ini_set('implicit_flush', 1); + @ob_implicit_flush(1); + + $pres = ''; + $pres .=" +
$texte
+
" . round($progres*100) . "%
+
+ "; + + $styles = " + "; + + echo minipres(_T('svp:installation_en_cours'), $pres . $styles); + exit; +}