Skip to content
Extraits de code Groupes Projets
Valider 952e1779 rédigé par Maïeul's avatar Maïeul
Parcourir les fichiers

fix #5 : permettre de passer des paramètres supplémentaires à un

formulaire lorsqu'on l'appel dans un squelette.
Pour ce faire, on modifie la syntaxe de `#FORMULAIRE_FORMIDABLE`, qui ne
prend désormais plus que trois arguments
- id nunérique ou identifiant textuel du formulaire
- tableau de valeur par défaut
- tableau d'options
On assure la retrocompatibilité, car il y a beaucoup de gens pour qui le
troisième paramètre c'est l'id de réponse.

Attention, pour l'heure on ne peut pas le faire dans un contenu, car il
n'y pas de syntaxe SPIP pour passer des tableaux en options de formulaire.
parent 7ecaceef
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -95,15 +95,29 @@ function formulaires_formidable_saisies_dist($id, $valeurs = array(), $id_formul
* @param array $valeurs
* Valeurs par défauts passées au contexte du formulaire
* Exemple : array('hidden_1' => 3) pour que champ identifie "@hidden_1@" soit prerempli
* @param int|bool $id_formulaires_reponse
* Identifiant d'une réponse pour forcer la reedition de cette reponse spécifique
* @param bool|str $url_redirect Url de redirection qui prend éventuellement la main
* @param array $options_appel options diverses à l'appel, pour l'heure :
* - id_formulaires_reponse (int) : identifiant d'une réponse pour forcer la reedition de cette reponse spécifique
* - url_redirect (string) : url de redirection qui prend éventuellement la main
* - forcer_modif (bool) : permet de forcer la modif de la réponse, même si non autorisé (cas de l'édition des réponses dans l'espace privé)
* <!> Anciennement c'était id_formulaires_reponse. On assure la retrocompat.
* @param bool|str $deprecated_url_redirect
* @param bool $deprecated_url_redirect
* @return array
* Contexte envoyé au squelette HTML du formulaire.
**/
function formulaires_formidable_charger_dist($id, $valeurs = array(), $id_formulaires_reponse = false, $url_redirect = false, $forcer_modif = false) {
function formulaires_formidable_charger_dist($id, $valeurs = array(), $options_appel = [], $deprecated_url_redirect = false, $deprecated_forcer_modif = false) {
$contexte = array();
// Retrocompatiblité
if (!is_array($options_appel)) {
$options_appel = ['id_formulaires_reponse' => $options_appel];
$options_appel['url_redirect'] = $deprecated_url_redirect;
$options_appel['forcer_modif'] = $deprecated_forcer_modif;
}
// Valeur par défaut pour les options
$id_formulaires_reponse = $options_appel['id_formulaires_reponse'] ?? false;
// On peut donner soit un id soit un identifiant
if (!$id_formulaire = formidable_id_formulaire($id)) {
return;
......@@ -214,22 +228,40 @@ function formulaires_formidable_charger_dist($id, $valeurs = array(), $id_formul
* @param array $valeurs
* Valeurs par défauts passées au contexte du formulaire
* Exemple : array('hidden_1' => 3) pour que champ identifie "@hidden_1@" soit prerempli
* @param int|bool $id_formulaires_reponse
* Identifiant d'une réponse pour forcer la reedition de cette reponse spécifique
* @param bool|str $url_redirect Url de redirection qui prend éventuellement la main
* @param bool $forcer_modif permet de forcer la modif d'une réponse existante, même si le formulaire n'est pas configuré pour (cas de modif des réponses depuis l'espace privé)
* @param array $options_appel options diverses à l'appel, pour l'heure :
* - id_formulaires_reponse (int) : identifiant d'une réponse pour forcer la reedition de cette reponse spécifique
* - url_redirect (string) : url de redirection qui prend éventuellement la main
* - forcer_modif (bool) : permet de forcer la modif de la réponse, même si non autorisé (cas de l'édition des réponses dans l'espace privé)
* <!> Anciennement c'était id_formulaires_reponse. On assure la retrocompat.
* @param bool|str $deprecated_url_redirect
* @param bool $deprecated_url_redirect
* @param int|string $id
* Identifiant numerique ou textuel du formulaire formidable
* @param array $valeurs
* Valeurs par défauts passées au contexte du formulaire
* Exemple : array('hidden_1' => 3) pour que champ identifie "@hidden_1@" soit prerempli
* @return array
* Tableau des erreurs
**/
function formulaires_formidable_verifier_dist($id, $valeurs = array(), $id_formulaires_reponse = false, $url_redirect = false, $forcer_modif = false) {
function formulaires_formidable_verifier_dist($id, $valeurs = [], $options_appel = [], $deprecated_url_redirect = false, $deprecated_forcer_modif = false) {
$erreurs = array();
// Retrocompatiblité
if (!is_array($options_appel)) {
$options_appel = ['id_formulaires_reponse' => $options_appel];
$options_appel['url_redirect'] = $deprecated_url_redirect;
$options_appel['forcer_modif'] = $deprecated_forcer_modif;
}
// Valeur par défaut pour les options
$id_formulaires_reponse = $options_appel['id_formulaires_reponse'] ?? false;
include_spip('inc/saisies');
$saisies = saisies_chercher_formulaire('formidable', array($id, $valeurs, $id_formulaires_reponse));
// Si on n'est pas dans un formulaire à étape, on lance les vérifications des traitements
if ($saisies and !saisies_lister_par_etapes($saisies)) {
$erreurs = formulaires_formidable_verifier_traitements($id, $valeurs, $id_formulaires_reponse);
$erreurs = formulaires_formidable_verifier_traitements($id, $valeurs, $options_appel);
}
// Sale bête ! Ça on le fait tout le temps
......@@ -248,21 +280,31 @@ function formulaires_formidable_verifier_dist($id, $valeurs = array(), $id_formu
* @param array $valeurs
* Valeurs par défauts passées au contexte du formulaire
* Exemple : array('hidden_1' => 3) pour que champ identifie "@hidden_1@" soit prerempli
* @param int|bool $id_formulaires_reponse
* Identifiant d'une réponse pour forcer la reedition de cette reponse spécifique
*
* @param array $options_appel options diverses à l'appel, pour l'heure :
* - id_formulaires_reponse (int) : identifiant d'une réponse pour forcer la reedition de cette reponse spécifique
* - url_redirect (string) : url de redirection qui prend éventuellement la main
* - forcer_modif (bool) : permet de forcer la modif de la réponse, même si non autorisé (cas de l'édition des réponses dans l'espace privé)
* <!> Anciennement c'était id_formulaires_reponse. On assure la retrocompat.
* @return array
* Tableau des erreurs
**/
function formulaires_formidable_verifier_etape_dist($etape, $id, $valeurs = array(), $id_formulaires_reponse = false) {
function formulaires_formidable_verifier_etape_dist($etape, $id, $valeurs = array(), $options_appel = []) {
$erreurs = array();
// Retrocompatiblité
if (!is_array($options_appel)) {
$options_appel['id_formulaires_reponse'] = $options_appel;
}
// Valeur par défaut pour les options
$id_formulaires_reponse = $options_appel['id_formulaires_reponse'] ?? false;
include_spip('inc/saisies');
$saisies = saisies_chercher_formulaire('formidable', array($id, $valeurs, $id_formulaires_reponse));
// On lance les vérifications propres aux traitements à chaque étape, pour avoir les messages d'erreurs à chaque étape
if ($saisies and $etapes = saisies_lister_par_etapes($saisies)) {
$erreurs = formulaires_formidable_verifier_traitements($id, $valeurs, $id_formulaires_reponse, $etapes, $etape);
$erreurs = formulaires_formidable_verifier_traitements($id, $valeurs, $options_appel, $etapes, $etape);
}
return $erreurs;
......@@ -276,17 +318,18 @@ function formulaires_formidable_verifier_etape_dist($etape, $id, $valeurs = arra
* @param array $valeurs
* Valeurs par défauts passées au contexte du formulaire
* Exemple : array('hidden_1' => 3) pour que champ identifie "@hidden_1@" soit prerempli
* @param int|bool $id_formulaires_reponse
* Identifiant d'une réponse pour forcer la reedition de cette reponse spécifique
* @param array $options_appel : options passés à l'appel du formulaire (pour la doc, voir la doc de `formulaire_formidable_verifier()`)
* @param array $etapes
* Liste des saisies, ordonnées par étape
* @param int|null $etape le numéro de l'étape courante
* @return array
* Tableau des erreurs
*/
function formulaires_formidable_verifier_traitements($id, $valeurs = array(), $id_formulaires_reponse = false, $etapes = array(), $etape = null) {
function formulaires_formidable_verifier_traitements($id, $valeurs = array(), $options_appel = [], $etapes = array(), $etape = null) {
$erreurs = array();
$id_formulaires_reponse = $options_appel['id_formulaires_reponse'] ?? false;
if (
$id_formulaire = formidable_id_formulaire($id)
and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = ' . intval($id_formulaire))
......@@ -303,6 +346,7 @@ function formulaires_formidable_verifier_traitements($id, $valeurs = array(), $i
'id_formulaire' => $formulaire['id_formulaire'],
'valeurs' => $valeurs,
'id_formulaires_reponse' => $id_formulaires_reponse,
'options_appel' => $options_appel,
'etapes' => $etapes,
'etape' => $etape
),
......@@ -336,16 +380,30 @@ function formulaires_formidable_verifier_traitements($id, $valeurs = array(), $i
* @param array $valeurs
* Valeurs par défauts passées au contexte du formulaire
* Exemple : array('hidden_1' => 3) pour que champ identifie "@hidden_1@" soit prerempli
* @param int|bool $id_formulaires_reponse
* Identifiant d'une réponse pour forcer la reedition de cette reponse spécifique
* @param bool|str $url_redirect Url de redirection qui prend éventuellement la main
* @param bool $forcer_modif permet de forcer la modif d'une réponse existante, même si le formulaire n'est pas configuré pour (cas de modif des réponses depuis l'espace privé)
* @return array
* @param array $options_appel options diverses à l'appel, pour l'heure :
* - id_formulaires_reponse (int) : identifiant d'une réponse pour forcer la reedition de cette reponse spécifique
* - url_redirect (string) : url de redirection qui prend éventuellement la main
* - forcer_modif (bool) : permet de forcer la modif de la réponse, même si non autorisé (cas de l'édition des réponses dans l'espace privé)
* <!> Anciennement c'était id_formulaires_reponse. On assure la retrocompat.
* @param bool|str $deprecated_url_redirect
* @param bool $deprecated_url_redirect
* Tableau des erreurs
**/
function formulaires_formidable_traiter_dist($id, $valeurs = array(), $id_formulaires_reponse = false, $url_redirect = false, $forcer_modif = false) {
function formulaires_formidable_traiter_dist($id, $valeurs = [], $options_appel = [], $deprecated_url_redirect = false, $deprecated_forcer_modif = false) {
$retours = array();
// Retrocompatiblité
if (!is_array($options_appel)) {
$options_appel = ['id_formulaires_reponse' => $options_appel];
$options_appel['url_redirect'] = $deprecated_url_redirect;
$options_appel['forcer_modif'] = $deprecated_forcer_modif;
}
// Valeur par défaut pour les options
$id_formulaires_reponse = $options_appel['id_formulaires_reponse'] ?? false;
$url_redirect = $options_appel['url_redirect'] ?? false;
$forcer_modif = $options_appel['forcer_modif'] ?? false;
include_spip('inc/texte');
// POST Mortem de securite : on log le $_POST pour ne pas le perdre si quelque chose se passe mal
include_spip('inc/json');
......@@ -439,6 +497,7 @@ function formulaires_formidable_traiter_dist($id, $valeurs = array(), $id_formul
array(
'formulaire' => $formulaire,
'options' => $options,
'options_appel' => $options_appel,
'id_formulaire' => $id_formulaire,
'valeurs' => $valeurs,
'id_formulaires_reponse' => $id_formulaires_reponse,
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter