/** * 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; }
/** * 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; }
/** * 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; }