[SPIP] +spip v3.0.17
[lhc/web/clavette_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")) return;
12
13 /**
14 * Chargement du formulaire d'ajout de dépot
15 *
16 * @return array
17 * Environnement du formulaire
18 **/
19 function formulaires_ajouter_depot_charger_dist(){
20 // On ne renvoie pas les valeurs saisies mais on fait un raz systematique
21 return array();
22 }
23
24 /**
25 * Vérifications du formulaire d'ajout de dépot
26 *
27 * Vérifie qu'une adresse valide est soumise et que ce dépot n'a pas
28 * déjà été créé.
29 *
30 * @return array
31 * Tableau des erreurs
32 **/
33 function formulaires_ajouter_depot_verifier_dist(){
34
35 $erreurs = array();
36 $xml = trim(_request('xml_paquets'));
37
38 if (!$xml) {
39 // L'url est obligatoire
40 $erreurs['xml_paquets'] = _T('svp:message_nok_champ_obligatoire');
41 }
42 elseif (!svp_verifier_adresse_depot($xml)) {
43 // L'url n'est pas correcte, le fichier xml n'a pas ete trouve
44 $erreurs['xml_paquets'] = _T('svp:message_nok_url_depot_incorrecte', array('url' => $xml));
45 }
46 elseif (sql_countsel('spip_depots','xml_paquets='.sql_quote($xml))) {
47 // L'url est deja ajoutee
48 $erreurs['xml_paquets'] = _T('svp:message_nok_depot_deja_ajoute', array('url' => $xml));
49 }
50 return $erreurs;
51 }
52
53 /**
54 * Traitement du formulaire d'ajout de dépot
55 *
56 * Ajoute le dépot.
57 * Retourne une éventuelle erreur si le dépot a un XML mal formé
58 * ou s'il n'a aucun plugin.
59 *
60 * @return array
61 * Retours du traitement
62 **/
63 function formulaires_ajouter_depot_traiter_dist(){
64 include_spip('inc/svp_depoter_distant');
65
66 $retour = array();
67 $xml = trim(_request('xml_paquets'));
68
69 // On ajoute le depot et ses plugins dans la base
70 // On traite le cas d'erreur fichier ($retour['message_erreur']) non conforme
71 // - si la syntaxe xml est incorrecte
72 // - ou si le depot ne possede pas au moins un plugin
73 $ok = svp_ajouter_depot($xml, $erreur);
74
75 // Determination des messages de retour
76 if (!$ok)
77 $retour['message_erreur'] = $erreur;
78 else {
79 $retour['message_ok'] = _T('svp:message_ok_depot_ajoute', array('url' => $xml));
80 spip_log("ACTION AJOUTER DEPOT (manuel) : url = ". $xml, 'svp_actions.' . _LOG_INFO);
81 }
82 $retour['editable'] = true;
83
84 return $retour;
85 }
86
87
88 /**
89 * Teste la validité d'une URL d'un dépot de paquets
90 *
91 * Pour cela on tente de rapatrier le fichier distant
92 * en local. Si on réussi, c'est bon.
93 *
94 * @param string $url
95 * URL du fichier xml de description du depot
96 * @return bool
97 * Le dépot est-il valide ?
98 */
99 function svp_verifier_adresse_depot($url){
100 include_spip('inc/distant');
101 // evitons de recuperer 2 fois le XML demandé.
102 // si on le recupere ici, il sera deja a jour pour le prochain copie_locale
103 // lors du traitement.
104 return (copie_locale($url) ? true : false);
105 #return (!$xml = recuperer_page($url)) ? false : true;
106 }
107
108 ?>