/** * Action effectuant 1 action dans la liste des actions à réaliser * sur les plugins. * * Cette action sera relancée tant qu'il reste des actions à faire */ function action_actionner_dist() { // droits include_spip('inc/autoriser'); if (!autoriser('configurer', '_plugins')) { include_spip('inc/minipres'); echo minipres(); exit; } include_spip('inc/svp_actionner'); 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. // dans ce cas précis, les autres actions prévues venant après la desactivation de SVP // ne pourront être traitees... SVP n'étant plus là ! if ($actionneur->tester_si_svp_desactive()) { $url = _request('redirect'); } else { $url = generer_action_auteur('actionner', '', _request('redirect')); } // en mode pas à pas, on affiche un bilan entre chaque action // et on demande a l'utilistateur de cliquer pour realiser // l'action suivante. include_spip('inc/config'); if (lire_config('svp/mode_pas_a_pas') == 'oui') { include_spip('inc/minipres'); $pres = $actionneur->presenter_actions(); $btn = "<a href='{$url}'>[ Action Suivante ]</a>"; $styles = "\n\t\t\t\t<style type='text/css'>\n\t\t\t\t#minipres #actionner .fail {color:#c30000;}\n\t\t\t\t#minipres #actionner ul {margin-left: 0.5em;}\n\t\t\t\t#minipres #actionner li {list-style-type:square; margin-left: 0.5em;}\n\t\t\t\t</style>"; echo minipres(_T('svp:installation_en_cours'), $pres . '<br /><br />' . $btn . $styles); die; } redirige_par_entete(str_replace('&', '&', $url)); } 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')) { $GLOBALS['redirect'] = generer_url_ecrire('admin_plugin'); } else { $GLOBALS['redirect'] = str_replace('&', '&', _request('redirect')); } }
/** * Gère le traitement des actions des formulaires utilisant l'Actionneur * * @param array $actions * Liste des actions a faire (id_paquet => action) * @param array $retour * Tableau de retour du CVT dans la partie traiter * @param string $redirect * URL de retour * @return void **/ function svp_actionner_traiter_actions_demandees($actions, &$retour, $redirect = null) { $actionneur = new Actionneur(); $actionneur->ajouter_actions($actions); $actionneur->verrouiller(); $actionneur->sauver_actions(); $redirect = $redirect ? $redirect : generer_url_ecrire('admin_plugin'); $retour['redirect'] = generer_url_action('actionner', 'redirect=' . urlencode($redirect)); set_request('_todo', ''); $retour['message_ok'] = _T("svp:action_patienter"); }
/** * Retourne un texte des actions realisées s'il y en a eu tel que * activation, désactivation, téléchargement de plugins... * * Nettoie au passage le fichier de cache décrivant les actions faites * (ou encore à faire) dans les cas suivant : * - il n'y a plus d'action * - le nettoyage est expressement demandé par la commande 'nettoyer_actions' * dans l'URL (ce lien est justement disponible si l'auteur des actions * tombe sur cette page alors qu'il reste des actions à faire, ce qui * signale en général un problème) * * @return string * Code HTML présentant les actions réalisées * Vide si rien ne s'est passé ! **/ 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; }