ajouter_depot.php 2.8 KB

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