Valider dc16d03a rédigé par marcimat's avatar marcimat
Parcourir les fichiers

Comme indiqué dans le commit précédent, on transmet la liste des fichiers à la...

Comme indiqué dans le commit précédent, on transmet la liste des fichiers à la saisie bigup en les mettant dans la clé d’environnement ‘_bigup_fichiers’, plutôt que (finalement), dans l’environnement du champ directement, qui parfois était utilisé pour transmettre par exemple le nom du fichier (comme dans le formulaire d’édition de logo actuellement). Ie: on n’utilise plus `#ENV{nom_du_champ}` pour mettre la liste des fichiers, mais `#ENV{_bigup_fichiers/nom_du_champ}`
parent 2ee7e0ee
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+4 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -39,8 +39,10 @@ function balise_SAISIE_FICHIER_dist($p) {
	$titre       = Pile::recuperer_et_supprimer_argument_balise(1, $p); // $titre

	// creer #ENV*{$titre} (* pour les cas de tableau serialises par exemple, que l'on veut reutiliser)
	$env_titre   = Pile::creer_balise('ENV', array('param' => array($titre), 'etoile' => '*')); // #ENV*{titre}
	$env_titre   = Pile::creer_balise('ENV', ['param' => [$titre], 'etoile' => '*']); // #ENV*{titre}

	// créer #ENV{_bigup_fichiers}
	$_bigup_fichiers = Pile::creer_et_ajouter_argument_balise(Pile::creer_balise('ENV'), '_bigup_fichiers');

	// on modifie $p pour ajouter des arguments
	// {nom=$titre, valeur=#ENV{$titre}, erreurs, type_saisie=$type, fond=saisies/_base}
@@ -48,6 +50,7 @@ function balise_SAISIE_FICHIER_dist($p) {
	$p = Pile::creer_et_ajouter_argument_balise($p, 'valeur', $env_titre);
	$p = Pile::creer_et_ajouter_argument_balise($p, 'form'); // ajouté par rapport à `#SAISIE`
	$p = Pile::creer_et_ajouter_argument_balise($p, 'formulaire_args'); // ajouté par rapport à `#SAISIE`
	$p = Pile::creer_et_ajouter_argument_balise($p, 'fichiers', $_bigup_fichiers); // ajouté par rapport à `#SAISIE`
	$p = Pile::creer_et_ajouter_argument_balise($p, 'type_saisie', $type_saisie);
	$p = Pile::creer_et_ajouter_argument_balise($p, 'erreurs');
	$p = Pile::creer_et_ajouter_argument_balise($p, 'fond', 'saisies/_base');
+16 −9
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -148,18 +148,25 @@ function calculer_balise_BIGUP_TOKEN($champ, $multiple, $form, $form_args) {
	return $token;
}


/**
 * Passe un `array_filter` sur un tableau.
 *
 * Retourne un tableau vide si l'entrée reçue n'est pas un tableau
 * Retrouve les fichiers correspondant à un name d'input donné, s'il y en a.
 *
 * @param array $tableau
 * @param array $fichiers
 * @param string $nom
 *      Name utilisé, tel que 'oiseaux/bleus' ou 'oiseaux[bleus]'
 * @param string $multiple
 *      Si contenu, le champ est considéré multiple
 * @return array
 */
function bigup_array_filter($tableau) {
	if (!is_array($tableau)) {
function bigup_lister_fichiers($fichiers, $nom, $multiple) {
	if (!$fichiers or !$nom) {
		return [];
	}
	return array_filter($tableau);
	$nom = saisie_name2nom($nom);
	if ($multiple) {
		$liste = table_valeur($fichiers, $nom);
	} else {
		$liste = [ table_valeur($fichiers, $nom) ];
	}
	return is_array($liste) ? array_filter($liste) : [];
}
 No newline at end of file
+4 −5
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -82,7 +82,7 @@ function bigup_get_bigup($flux) {
 * et ajoute la description des fichiers présents pour chaque champ,
 * dans l'environnement.
 *
 * Ajoute également un hidden, qui s'il est posté, demandera à recréer $_FILES
 * Ajoute également un hidden, qui s'il est posté, demandera à recréer `$_FILES`
 * juste avant la fonction verifier(). Voir `bigup_formulaire_receptionner()`
 *
 * @see bigup_formulaire_receptionner():
@@ -95,13 +95,12 @@ function bigup_formulaire_charger($flux) {
		return $flux;
	}

	// s'il y a des fichiers pour ce formulaire / visiteur, on ajoute la liste à l'environnement.
	$bigup = bigup_get_bigup($flux);
	if ($fichiers = $bigup->retrouver_fichiers()) {
		$flux['data']['_bigup_fichiers'] = [];
		foreach ($fichiers as $racine => $listes) {
			// fonctionne au premier chargement, mais pas après avoir validé le formulaire
			$flux['data'][$racine] = $fichiers[$racine];
			// car SPIP prend la valeur dans le request. Du coup, on les met aussi dans le request.
			set_request($racine, $fichiers[$racine]);
			$flux['data']['_bigup_fichiers'][$racine] = $fichiers[$racine];
		}
	}

+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -30,7 +30,7 @@
	<pipeline nom="formulaire_verifier" inclure="bigup_pipelines.php" />
	<pipeline nom="formulaire_traiter" inclure="bigup_pipelines.php" />

	<necessite nom="saisies" compatibilite="[2.14.4;]" />
	<necessite nom="saisies" compatibilite="[2.17.1;]" />
	<necessite nom="php" compatibilite="[5.4.0;[" />

	<genie nom="nettoyer_repertoire_upload" periode="86400" />
+1 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
#SET{multiple,#ENV{multiple}|=={oui}}

[(#INCLURE{fond=saisies/inc-bigup_liste_fichiers, nom, multiple,
	fichiers=#GET{multiple}|?{#ENV*{valeur},#LISTE{#ENV*{valeur}}}})]
[(#INCLURE{fond=saisies/inc-bigup_liste_fichiers, nom, multiple, fichiers})]

<input type="file"
	name="[(#ENV{nom}|saisie_nom2name)][(#GET{multiple}|?{\[\]})]"
Chargement en cours