1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/spip_ynh.git synced 2024-09-03 20:25:59 +02:00
spip_ynh/sources/plugins-dist/svp/formulaires/ajouter_depot.php
2015-04-28 17:10:23 +02:00

108 lines
2.8 KiB
PHP

<?php
/**
* Gestion du formulaire d'ajout de dépot
*
* @plugin SVP pour SPIP
* @license GPL
* @package SPIP\SVP\Formulaires
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
/**
* Chargement du formulaire d'ajout de dépot
*
* @return array
* Environnement du formulaire
**/
function formulaires_ajouter_depot_charger_dist(){
// On ne renvoie pas les valeurs saisies mais on fait un raz systematique
return array();
}
/**
* Vérifications du formulaire d'ajout de dépot
*
* Vérifie qu'une adresse valide est soumise et que ce dépot n'a pas
* déjà été créé.
*
* @return array
* Tableau des erreurs
**/
function formulaires_ajouter_depot_verifier_dist(){
$erreurs = array();
$xml = trim(_request('xml_paquets'));
if (!$xml) {
// L'url est obligatoire
$erreurs['xml_paquets'] = _T('svp:message_nok_champ_obligatoire');
}
elseif (!svp_verifier_adresse_depot($xml)) {
// L'url n'est pas correcte, le fichier xml n'a pas ete trouve
$erreurs['xml_paquets'] = _T('svp:message_nok_url_depot_incorrecte', array('url' => $xml));
}
elseif (sql_countsel('spip_depots','xml_paquets='.sql_quote($xml))) {
// L'url est deja ajoutee
$erreurs['xml_paquets'] = _T('svp:message_nok_depot_deja_ajoute', array('url' => $xml));
}
return $erreurs;
}
/**
* Traitement du formulaire d'ajout de dépot
*
* Ajoute le dépot.
* Retourne une éventuelle erreur si le dépot a un XML mal formé
* ou s'il n'a aucun plugin.
*
* @return array
* Retours du traitement
**/
function formulaires_ajouter_depot_traiter_dist(){
include_spip('inc/svp_depoter_distant');
$retour = array();
$xml = trim(_request('xml_paquets'));
// On ajoute le depot et ses plugins dans la base
// On traite le cas d'erreur fichier ($retour['message_erreur']) non conforme
// - si la syntaxe xml est incorrecte
// - ou si le depot ne possede pas au moins un plugin
$ok = svp_ajouter_depot($xml, $erreur);
// Determination des messages de retour
if (!$ok)
$retour['message_erreur'] = $erreur;
else {
$retour['message_ok'] = _T('svp:message_ok_depot_ajoute', array('url' => $xml));
spip_log("ACTION AJOUTER DEPOT (manuel) : url = ". $xml, 'svp_actions.' . _LOG_INFO);
}
$retour['editable'] = true;
return $retour;
}
/**
* Teste la validité d'une URL d'un dépot de paquets
*
* Pour cela on tente de rapatrier le fichier distant
* en local. Si on réussi, c'est bon.
*
* @param string $url
* URL du fichier xml de description du depot
* @return bool
* Le dépot est-il valide ?
*/
function svp_verifier_adresse_depot($url){
include_spip('inc/distant');
// evitons de recuperer 2 fois le XML demandé.
// si on le recupere ici, il sera deja a jour pour le prochain copie_locale
// lors du traitement.
return (copie_locale($url) ? true : false);
#return (!$xml = recuperer_page($url)) ? false : true;
}
?>