X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fplugins-dist%2Fsvp%2Finc%2Fsvp_depoter_distant.php;h=d5397410ac7383d3014163ab1d024e0ce76de3d0;hb=f854641371bdfbaba8fbab6212853d9795ba8cc8;hp=417b21a7df56f5449f2ecf30d6a63b00f98754e8;hpb=52cf8ed924d5dcd0c28dde4b6c3196be6ec2d4f7;p=ptitvelo%2Fweb%2Fwww.git diff --git a/www/plugins-dist/svp/inc/svp_depoter_distant.php b/www/plugins-dist/svp/inc/svp_depoter_distant.php index 417b21a..d539741 100644 --- a/www/plugins-dist/svp/inc/svp_depoter_distant.php +++ b/www/plugins-dist/svp/inc/svp_depoter_distant.php @@ -55,8 +55,9 @@ function svp_ajouter_depot($url, &$erreur='') { $erreur = _T('svp:message_nok_xml_non_conforme', array('fichier' => $url)); return false; } - - $champs = array('titre' => filtrer_entites($infos['depot']['titre']), + + $titre = filtrer_entites($infos['depot']['titre']); + $champs = array('titre' => $titre, 'descriptif' => filtrer_entites($infos['depot']['descriptif']), 'type' => $infos['depot']['type'], 'url_serveur' => $infos['depot']['url_serveur'], @@ -68,11 +69,18 @@ function svp_ajouter_depot($url, &$erreur='') { 'nbr_paquets' => 0, 'nbr_plugins' => 0, 'nbr_autres' => 0); - if (!$id_depot = sql_insertq('spip_depots', $champs)) { - $erreur = _T('svp:message_nok_sql_insert_depot', array('objet' => $titre)); + + // verifier avant l'insertion que le depot n'existe pas deja + // car la recuperation pouvant etre longue on risque le probleme en cas de concurrence + if (sql_countsel('spip_depots','xml_paquets='.sql_quote($url))){ + $erreur = _T('svp:message_nok_depot_deja_ajoute', array('url' => $url)); return false; } - + elseif (!$id_depot = sql_insertq('spip_depots', $champs)) { + $erreur = _T('svp:message_nok_sql_insert_depot', array('objet' => "$titre ($url)")); + return false; + } + // Ajout des paquets dans spip_paquets et actualisation des plugins dans spip_plugins $ok = svp_actualiser_paquets($id_depot, $infos['paquets'], $nb_paquets, $nb_plugins, $nb_autres); if (!$ok OR ($nb_paquets == 0)) { @@ -93,7 +101,7 @@ function svp_ajouter_depot($url, &$erreur='') { // On vide les paquets locaux pour mettre a jour leurs donnees relatives au depot // comme les mises a jour disponibles include_spip('inc/svp_depoter_local'); - svp_base_supprimer_paquets_locaux(); + svp_actualiser_paquets_locaux(true); return true; }