[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins-dist / svp / formulaires / ajouter_depot.php
1 <?php
2
3 /**
4 * Gestion du formulaire d'ajout de dépot
5 *
6 * @plugin SVP pour SPIP
7 * @license GPL
8 * @package SPIP\SVP\Formulaires
9 */
10
11 if (!defined("_ECRIRE_INC_VERSION")) {
12 return;
13 }
14
15 /**
16 * Chargement du formulaire d'ajout de dépot
17 *
18 * @return array
19 * Environnement du formulaire
20 **/
21 function formulaires_ajouter_depot_charger_dist() {
22 // On ne renvoie pas les valeurs saisies mais on fait un raz systematique
23 return array();
24 }
25
26 /**
27 * Vérifications du formulaire d'ajout de dépot
28 *
29 * Vérifie qu'une adresse valide est soumise et que ce dépot n'a pas
30 * déjà été créé.
31 *
32 * @uses svp_verifier_adresse_depot()
33 * @return array
34 * Tableau des erreurs
35 **/
36 function formulaires_ajouter_depot_verifier_dist() {
37
38 $erreurs = array();
39 $xml = trim(_request('xml_paquets'));
40
41 if (!$xml) {
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));
50 }
51
52 return $erreurs;
53 }
54
55 /**
56 * Traitement du formulaire d'ajout de dépot
57 *
58 * Ajoute le dépot.
59 * Retourne une éventuelle erreur si le dépot a un XML mal formé
60 * ou s'il n'a aucun plugin.
61 *
62 * @uses svp_ajouter_depot()
63 * @return array
64 * Retours du traitement
65 **/
66 function formulaires_ajouter_depot_traiter_dist() {
67 include_spip('inc/svp_depoter_distant');
68
69 $retour = array();
70 $xml = trim(_request('xml_paquets'));
71
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);
77
78 // Determination des messages de retour
79 if (!$ok) {
80 $retour['message_erreur'] = $erreur;
81 } else {
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);
84 }
85 $retour['editable'] = true;
86
87 return $retour;
88 }
89
90
91 /**
92 * Teste la validité d'une URL d'un dépot de paquets
93 *
94 * Pour cela on tente de rapatrier le fichier distant
95 * en local. Si on réussi, c'est bon.
96 *
97 * @param string $url
98 * URL du fichier xml de description du depot
99 * @return bool
100 * Le dépot est-il valide ?
101 */
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;
109 }