4 * Gestion du formulaire d'ajout de dépot
6 * @plugin SVP pour SPIP
8 * @package SPIP\SVP\Formulaires
11 if (!defined("_ECRIRE_INC_VERSION")) {
16 * Chargement du formulaire d'ajout de dépot
19 * Environnement du formulaire
21 function formulaires_ajouter_depot_charger_dist() {
22 // On ne renvoie pas les valeurs saisies mais on fait un raz systematique
27 * Vérifications du formulaire d'ajout de dépot
29 * Vérifie qu'une adresse valide est soumise et que ce dépot n'a pas
32 * @uses svp_verifier_adresse_depot()
36 function formulaires_ajouter_depot_verifier_dist() {
39 $xml = trim(_request('xml_paquets'));
42 // L'url est obligatoire
43 $erreurs['xml_paquets'] = _T('svp:message_nok_champ_obligatoire');
44 } elseif (!svp_verifier_adresse_depot($xml)) {
45 // L'url n'est pas correcte, le fichier xml n'a pas ete trouve
46 $erreurs['xml_paquets'] = _T('svp:message_nok_url_depot_incorrecte', array('url' => $xml));
47 } elseif (sql_countsel('spip_depots', 'xml_paquets=' . sql_quote($xml))) {
48 // L'url est deja ajoutee
49 $erreurs['xml_paquets'] = _T('svp:message_nok_depot_deja_ajoute', array('url' => $xml));
56 * Traitement du formulaire d'ajout de dépot
59 * Retourne une éventuelle erreur si le dépot a un XML mal formé
60 * ou s'il n'a aucun plugin.
62 * @uses svp_ajouter_depot()
64 * Retours du traitement
66 function formulaires_ajouter_depot_traiter_dist() {
67 include_spip('inc/svp_depoter_distant');
70 $xml = trim(_request('xml_paquets'));
72 // On ajoute le depot et ses plugins dans la base
73 // On traite le cas d'erreur fichier ($retour['message_erreur']) non conforme
74 // - si la syntaxe xml est incorrecte
75 // - ou si le depot ne possede pas au moins un plugin
76 $ok = svp_ajouter_depot($xml, $erreur);
78 // Determination des messages de retour
80 $retour['message_erreur'] = $erreur;
82 $retour['message_ok'] = _T('svp:message_ok_depot_ajoute', array('url' => $xml));
83 spip_log("ACTION AJOUTER DEPOT (manuel) : url = " . $xml, 'svp_actions.' . _LOG_INFO
);
85 $retour['editable'] = true;
92 * Teste la validité d'une URL d'un dépot de paquets
94 * Pour cela on tente de rapatrier le fichier distant
95 * en local. Si on réussi, c'est bon.
98 * URL du fichier xml de description du depot
100 * Le dépot est-il valide ?
102 function svp_verifier_adresse_depot($url) {
103 include_spip('inc/distant');
104 // evitons de recuperer 2 fois le XML demandé.
105 // si on le recupere ici, il sera deja a jour pour le prochain copie_locale
106 // lors du traitement.
107 return (copie_locale($url) ?
true : false);
108 #return (!$xml = recuperer_page($url)) ? false : true;