Example #1
0
/**
 * 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('&amp;', '&', $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('&amp;', '&', _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");
}
Example #3
0
/**
 * 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;
}