4 * Gestion de l'action actionner
6 * @plugin SVP pour SPIP
8 * @package SPIP\SVP\Actions
11 if (!defined("_ECRIRE_INC_VERSION")) {
16 * Action effectuant 1 action dans la liste des actions à réaliser
19 * Cette action sera relancée tant qu'il reste des actions à faire
21 function action_actionner_dist() {
23 include_spip('inc/autoriser');
24 if (!autoriser('configurer', '_plugins')) {
25 include_spip('inc/minipres');
30 include_spip('inc/svp_actionner');
31 include_spip('inc/headers');
32 $actionneur = new Actionneur();
33 $actionneur->get_actions();
35 if ($actionneur->one_action()) {
36 // si SVP a été enlevé des actifs, on redirige sur la fin...
37 // sinon cette page d'action/actionner devient introuvable.
38 // dans ce cas précis, les autres actions prévues venant après la desactivation de SVP
39 // ne pourront être traitees... SVP n'étant plus là !
40 if ($actionneur->tester_si_svp_desactive()) {
41 $url = _request('redirect');
43 $url = generer_action_auteur('actionner', '', _request('redirect'));
46 // en mode pas à pas, on affiche un bilan entre chaque action
47 // et on demande a l'utilistateur de cliquer pour realiser
49 include_spip('inc/config');
50 if (lire_config('svp/mode_pas_a_pas') == 'oui') {
51 include_spip('inc/minipres');
52 $pres = $actionneur->presenter_actions();
53 $btn = "<a href='$url'>[ Action Suivante ]</a>";
55 <style type='text/css'>
56 #minipres #actionner .fail {color:#c30000;}
57 #minipres #actionner ul {margin-left: 0.5em;}
58 #minipres #actionner li {list-style-type:square; margin-left: 0.5em;}
60 echo minipres(_T('svp:installation_en_cours'), $pres . '<br /><br />' . $btn . $styles);
64 // s'il n'y avait en tout est pour tout qu'une seule action, rediriger directement
65 if ($actionneur->progression() === 1 and count($actionneur->done
) === 1) {
66 redirige_par_entete(str_replace('&', '&', $url));
68 // sinon bel affichage de la progression
70 str_replace('&', '&', $url),
71 $actionneur->presenter_derniere_action(),
72 $actionneur->progression()
76 foreach ($actionneur->done
as $done) {
77 if ($done['todo'] == 'on') {
78 if ($voir = session_get('svp_admin_plugin_voir')
79 and $voir == 'inactif'
81 session_set('svp_admin_plugin_voir', 'actif');
87 include_spip('inc/svp_depoter_local');
88 svp_actualiser_paquets_locaux();
90 if (!_request('redirect')) {
91 $GLOBALS['redirect'] = generer_url_ecrire('admin_plugin');
93 $GLOBALS['redirect'] = str_replace('&', '&', _request('redirect'));
98 * Redirections par refresh d'une URL afin d'éviter des blocages de redirections par les navigateurs
99 * lorsqu'elles sont trop nombreuses
102 * @param string $texte Texte de l'action réalisée
103 * @param string $progres
105 function svp_redirige_boucle($url, $texte, $progres){
106 include_spip('inc/minipres');
108 //@apache_setenv('no-gzip', 1); // provoque page blanche chez certains hebergeurs donc ne pas utiliser
109 @ini_set
('zlib.output_compression', '0'); // pour permettre l'affichage au fur et a mesure
110 @ini_set
('output_buffering', 'off');
111 @ini_set
('implicit_flush', 1);
112 @ob_implicit_flush
(1);
114 $pres = '<meta http-equiv="refresh" content="0;'.$url.'">';
116 <div class='derniere_action'>$texte</div>
117 <div class='progression'>" . round($progres*100) . "%</div>
118 <div class='bar'><div style='width:".round($progres*100)."%'></div></div>
122 <style type='text/css'>
123 #minipres .derniere_action { font-weight:bold; }
127 #minipres div.progression {
133 #minipres .bar {border:1px solid #aaa;}
134 #minipres .bar div {background:#aaa;height:1em;}
137 echo minipres(_T('svp:installation_en_cours'), $pres . $styles);