コード例 #1
0
ファイル: charger_plugin.php プロジェクト: genma/spip_ynh
/**
 * Vérification du formulaire de recherche et téléchargement de plugins
 *
 * Appelle le décideur qui détermine la liste des actions à faire et si celles-ci
 * peuvent être faites (dépendances connues). Une erreur sera levé dans le
 * cas contraire.
 *
 * Si toutes les actions peuvent être faites, une demande de confirmation
 * est envoyée (dans une erreur spéciale), présentant alors toutes les
 * actions qui seront réalisées (celle demandée + celles à faire par voie
 * de conséquence.
 *
 * Si on reçoit une demande de confirmation, on sort sans lever d'erreur !
 * 
 * @return array
 *     Tableau des erreurs
**/
function formulaires_charger_plugin_verifier_dist()
{
    $erreurs = array();
    $a_installer = array();
    if (_request('annuler_actions')) {
        // Requete : Annulation des actions d'installation en cours
        // -- On vide la liste d'actions en cours
        set_request('_todo', '');
    } elseif (_request('valider_actions')) {
    } elseif (_request('rechercher')) {
        // annuler les selections si nouvelle recherche
        set_request('ids_paquet', array());
    } else {
        // Requete : Installation d'un ou de plusieurs plugins
        // -- On construit le tableau des ids de paquets conformement a l'interface du decideur
        if (_request('installer')) {
            // L'utilisateur a demande une installation multiple de paquets
            // -- on verifie la liste des id_paquets uniquement
            if ($id_paquets = _request('ids_paquet')) {
                foreach ($id_paquets as $_id_paquet) {
                    $a_installer[$_id_paquet] = 'geton';
                }
            }
        } else {
            // L'utilisateur a demande l'installation d'un paquet en cliquant sur le bouton en regard
            // du resume du plugin -> installer_paquet
            if ($install = _request('installer_paquet')) {
                if ($id_paquet = key($install)) {
                    $a_installer[$id_paquet] = 'geton';
                }
            }
        }
        if (!$a_installer) {
            $erreurs['message_erreur'] = _T('svp:message_nok_aucun_plugin_selectionne');
        } else {
            // On fait appel au decideur pour determiner la liste exacte des commandes apres
            // verification des dependances
            include_spip('inc/svp_decider');
            svp_decider_verifier_actions_demandees($a_installer, $erreurs);
        }
    }
    return $erreurs;
}
コード例 #2
0
/**
 * Vérifications du formulaire de gestion des plugins
 *
 * Appelle le décideur qui détermine la liste des actions à faire et si celles-ci
 * peuvent être faites (dépendances connues). Une erreur sera levé dans le
 * cas contraire.
 *
 * Si toutes les actions peuvent être faites, une demande de confirmation
 * est envoyée (dans une erreur spéciale), présentant alors toutes les
 * actions qui seront réalisées (celle demandée + celles à faire par voie
 * de conséquence.
 *
 * Si on reçoit une demande de confirmation, on sort sans lever d'erreur !
 *
 * @uses  svp_decider_verifier_actions_demandees()
 *
 * @param string $voir
 *     Statut des plugins que l'on souhaite voir : actif, inactif, tous
 * @param string $verrouille
 *     Types de plugins que l'on souhaite voir :
 *     - 'non' : les plugins utilisateurs
 *     - 'oui' : les plugins verrouillés (plugins-dist)
 *     - 'tous' : les deux !
 * @param string|int $id_paquet
 *     Identifiant du paquet dont on veut obtenir une description complète
 *     lors de l'affichage du formulaire
 * @param string $redirect
 *     URL de redirection après les traitements
 * @return array
 *     Tableau des erreurs
 **/
function formulaires_admin_plugin_verifier_dist($voir = 'actif', $verrouille = 'non', $id_paquet = '', $redirect = '')
{
    $erreurs = array();
    if (_request('annuler_actions')) {
        // Requete : Annulation des actions d'installation en cours
        // -- On vide la liste d'actions en cours
        set_request('_todo', '');
        // -- vider les paquets coches s'il y en a
        set_request('ids_paquet', array());
    } elseif (_request('valider_actions')) {
        // ...
    } else {
        $a_actionner = array();
        // actions globales...
        if ($action_globale = _request('action_globale') and _request('appliquer')) {
            $ids_paquet = _request('ids_paquet');
            if (!is_array($ids_paquet)) {
                $erreurs['message_erreur'] = _T('svp:message_erreur_aucun_plugin_selectionne');
            } else {
                foreach ($ids_paquet as $i) {
                    $a_actionner[$i] = $action_globale;
                }
            }
            // action unitaire
        } else {
            $actions = _request('actions');
            // $actions[type][id] = Texte
            // -> $a_actionner[id] = type
            foreach ($actions as $action => $p) {
                foreach ($p as $i => $null) {
                    $a_actionner[$i] = $action;
                }
            }
        }
        // lancer les verifications
        if (!$a_actionner) {
            $erreurs['message_erreur'] = _T('svp:message_erreur_aucun_plugin_selectionne');
        } else {
            // On fait appel au decideur pour determiner la liste exacte des commandes apres
            // verification des dependances
            include_spip('inc/svp_decider');
            svp_decider_verifier_actions_demandees($a_actionner, $erreurs);
            $todo = _request('_todo') ? unserialize(_request('_todo')) : array();
            $actions = _request('_decideur_actions') ? unserialize(_request('_decideur_actions')) : array();
            // si c'est une action simple (hors suppression) sans rien a faire de plus que demande, on y go direct
            if (in_array('stop', $todo) or in_array('kill', $todo)) {
                if (in_array('stop', $todo)) {
                    $notices = array();
                    $notices['decideur_warning'] = _T('svp:confirmer_desinstaller');
                    set_request('_notices', $notices);
                }
            } elseif (!isset($erreurs['decideur_erreurs']) and (!isset($erreurs['decideur_propositions']) or !count($actions['decideur_propositions']))) {
                set_request('valider_actions', true);
                // on fake la validation, non mais ho !
            }
        }
    }
    if (count($erreurs) and !isset($erreurs['message_erreur'])) {
        $erreurs['message_erreur'] = '';
    }
    return $erreurs;
}
コード例 #3
0
ファイル: admin_plugin.php プロジェクト: genma/spip_ynh
/**
 * Vérifications du formulaire de gestion des plugins
 *
 * Appelle le décideur qui détermine la liste des actions à faire et si celles-ci
 * peuvent être faites (dépendances connues). Une erreur sera levé dans le
 * cas contraire.
 *
 * Si toutes les actions peuvent être faites, une demande de confirmation
 * est envoyée (dans une erreur spéciale), présentant alors toutes les
 * actions qui seront réalisées (celle demandée + celles à faire par voie
 * de conséquence.
 *
 * Si on reçoit une demande de confirmation, on sort sans lever d'erreur !
 * 
 * @param string $voir
 *     Statut des plugins que l'on souhaite voir : actif, inactif, tous
 * @param string $verrouille
 *     Types de plugins que l'on souhaite voir :
 *     - 'non' : les plugins utilisateurs
 *     - 'oui' : les plugins verrouillés (plugins-dist)
 *     - 'tous' : les deux !
 * @param string|int $id_paquet
 *     Identifiant du paquet dont on veut obtenir une description complète
 *     lors de l'affichage du formulaire
 * @param string $redirect
 *     URL de redirection après les traitements
 * @return array
 *     Tableau des erreurs
**/
function formulaires_admin_plugin_verifier_dist($voir = 'actif', $verrouille = 'non', $id_paquet = '', $redirect = '')
{
    $erreurs = array();
    if (_request('annuler_actions')) {
        // Requete : Annulation des actions d'installation en cours
        // -- On vide la liste d'actions en cours
        set_request('_todo', '');
        // -- vider les paquets coches s'il y en a
        set_request('ids_paquet', array());
    } elseif (_request('valider_actions')) {
        // ...
    } else {
        $a_actionner = array();
        // actions globales...
        if ($action_globale = _request('action_globale') and _request('appliquer')) {
            $ids_paquet = _request('ids_paquet');
            if (!is_array($ids_paquet)) {
                $erreurs['message_erreur'] = _T('svp:message_erreur_aucun_plugin_selectionne');
            } else {
                foreach ($ids_paquet as $i) {
                    $a_actionner[$i] = $action_globale;
                }
            }
            // action unitaire
        } else {
            $actions = _request('actions');
            // $actions[type][id] = Texte
            // -> $a_actionner[id] = type
            foreach ($actions as $action => $p) {
                foreach ($p as $i => $null) {
                    $a_actionner[$i] = $action;
                }
            }
        }
        // lancer les verifications
        if (!$a_actionner) {
            $erreurs['message_erreur'] = _T('svp:message_erreur_aucun_plugin_selectionne');
        } else {
            // On fait appel au decideur pour determiner la liste exacte des commandes apres
            // verification des dependances
            include_spip('inc/svp_decider');
            svp_decider_verifier_actions_demandees($a_actionner, $erreurs);
        }
    }
    return $erreurs;
}