Skip to content
Extraits de code Groupes Projets
Valider dfcf2af0 rédigé par maieul@maieul.net's avatar maieul@maieul.net
Parcourir les fichiers

refactorisation du code : une seule fonction pour trouver la réponse qui doit...

refactorisation du code : une seule fonction pour trouver la réponse qui doit être modifié si on autorise la modification des réponses
Pour le moment appeller:
  - lors du chargement du formulaire
  - lors de l'enregistrement des réponses
parent f252a490
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -126,36 +126,17 @@ function formulaires_formidable_charger($id, $valeurs = array(), $id_formulaires ...@@ -126,36 +126,17 @@ function formulaires_formidable_charger($id, $valeurs = array(), $id_formulaires
} }
} }
// Si on passe un identifiant de reponse, on edite cette reponse si elle existe //trouver la réponse à éditer
if ($id_formulaires_reponse = intval($id_formulaires_reponse)) { $options_enregistrement = isset($traitements['enregistrement']) ? $traitements['enregistrement'] : null;
$contexte = formidable_definir_contexte_avec_reponse($contexte, $id_formulaires_reponse, $ok); $id_formulaires_reponse = formidable_trouver_reponse_a_editer($formulaire['id_formulaire'], $id_formulaires_reponse, $options_enregistrement);
if ($ok == false) {
$contexte['editable'] = false; // adapter le contexte en conséquence
$contexte['message_erreur'] = _T( $contexte = formidable_definir_contexte_avec_reponse($contexte, $id_formulaires_reponse, $ok);
'formidable:traiter_enregistrement_erreur_edition_reponse_inexistante' if ($ok == false) {
); $contexte['editable'] = false;
} $contexte['message_erreur'] = _T(
} else { 'formidable:traiter_enregistrement_erreur_edition_reponse_inexistante'
// calcul des paramètres d'anonymisation );
$options = isset($traitements['enregistrement']) ? $traitements['enregistrement'] : null;
$anonymisation = (isset($options['anonymiser']) && $options['anonymiser']==true)
? isset($options['anonymiser_variable']) ? $options['anonymiser_variable'] : ''
: '';
// Si multiple = non mais que c'est modifiable, alors on va chercher
// la dernière réponse si elle existe
if ($options
and !$options['multiple']
and $options['modifiable']
and $reponses = formidable_verifier_reponse_formulaire(
$formulaire['id_formulaire'],
$options['identification'],
$anonymisation
)) {
$id_formulaires_reponse = array_pop($reponses);
$contexte = formidable_definir_contexte_avec_reponse($contexte, $id_formulaires_reponse, $ok);
}
} }
} else { } else {
$contexte['editable'] = false; $contexte['editable'] = false;
...@@ -539,6 +520,10 @@ function formulaires_formidable_fichiers($id, $valeurs = array(), $id_formulaire ...@@ -539,6 +520,10 @@ function formulaires_formidable_fichiers($id, $valeurs = array(), $id_formulaire
**/ **/
function formidable_definir_contexte_avec_reponse($contexte, $id_formulaires_reponse, &$ok) { function formidable_definir_contexte_avec_reponse($contexte, $id_formulaires_reponse, &$ok) {
if ($id_formulaires_reponse == false) {
$ok = true;
return $contexte;
}
// On prépare des infos si jamais on a des champs fichiers // On prépare des infos si jamais on a des champs fichiers
$saisies_fichiers = saisies_lister_avec_type($contexte['_saisies'], 'fichiers');// les saisies de type fichier $saisies_fichiers = saisies_lister_avec_type($contexte['_saisies'], 'fichiers');// les saisies de type fichier
$fichiers = array(); $fichiers = array();
......
...@@ -92,6 +92,56 @@ function formidable_generer_nom_cookie($id_formulaire) { ...@@ -92,6 +92,56 @@ function formidable_generer_nom_cookie($id_formulaire) {
return $GLOBALS['cookie_prefix'].'cookie_formidable_'.$id_formulaire; return $GLOBALS['cookie_prefix'].'cookie_formidable_'.$id_formulaire;
} }
/*
* Trouver la réponse à éditer pour un formulaire donné,
* dans un contexte donné
* en fonction de la configuration du formulaire.
* @param int $id_formulaire L'identifiant du formulaire
* @param int $id_formulaires_reponse L'identifant de réponse passé au moment de l'appel du formulaire
* @param array $options Les options d'enregistrement du formulaire
* @param boolean $verifier_est_auteur si égal à true, on vérifie si $id_formulaires_reponse est passé que l'auteur connecté est bien l'auteur de la réponse passée en argument
* @return int $id_formulaires_reponse L'identifiant de la réponse à modifier effectivement.
*
*/
function formidable_trouver_reponse_a_editer($id_formulaire, $id_formulaires_reponse, $options, $verifier_est_auteur = false) {
// Si on passe un identifiant de reponse, on edite cette reponse si elle existe
if ($id_formulaires_reponse = intval($id_formulaires_reponse) and $verifier_est_auteur == false) {
return $id_formulaires_reponse;
} else {
// calcul des paramètres d'anonymisation
$anonymisation = (isset($options['anonymiser']) && $options['anonymiser'] == 'on')
? isset($options['anonymiser_variable']) ? $options['anonymiser_variable'] : ''
: '';
$reponses = formidable_verifier_reponse_formulaire(
$id_formulaire,
$options['identification'],
$anonymisation
);
//A-t-on demandé de vérifier que l'auteur soit bien celui de la réponse?
if ($id_formulaires_reponse = intval($id_formulaires_reponse)
and $verifier_est_auteur == true) {
if (in_array($id_formulaires_reponse, $reponses) == false) {
$id_formulaires_reponse = false;
}
return $id_formulaires_reponse;
}
// Si multiple = non mais que c'est modifiable, alors on va chercher
// la dernière réponse si elle existe
if ($options
and !$options['multiple']
and $options['modifiable']
and is_array($reponses)
) {
$id_formulaires_reponse = array_pop($reponses);
}
}
return $id_formulaires_reponse;
}
/* /*
* Vérifie si le visiteur a déjà répondu à un formulaire * Vérifie si le visiteur a déjà répondu à un formulaire
* *
......
...@@ -39,35 +39,7 @@ function traiter_enregistrement_dist($args, $retours) { ...@@ -39,35 +39,7 @@ function traiter_enregistrement_dist($args, $retours) {
// On regarde si c'est une modif d'une réponse existante // On regarde si c'est une modif d'une réponse existante
$id_formulaires_reponse = $args['id_formulaires_reponse']; $id_formulaires_reponse = $args['id_formulaires_reponse'];
$id_formulaires_reponse = formidable_trouver_reponse_a_editer($id_formulaire, $id_formulaires_reponse, $options, true);
// recherche d'éventuelles anciennes réponses
$reponses = formidable_verifier_reponse_formulaire(
$id_formulaire,
$options['identification'],
($options['anonymiser'] == 'on')
? $options['anonymiser_variable']
: false
);
// pas d'id_formulaires_reponse : on cherche une éventuelle réponse en base
if ($id_formulaires_reponse == false) {
$traitements_formulaire = unserialize($formulaire['traitements']);
if (isset($traitements_formulaire['enregistrement'])) {
$options = $traitements_formulaire['enregistrement'];
if (isset($options['multiple']) && $options['multiple'] == ''
&& isset($options['modifiable']) && $options['modifiable'] == 'on'
&& is_array($reponses) && count($reponses) > 0) {
$id_formulaires_reponse = max($reponses);
}
}
} else {
// vérifier que l'auteur est bien l'auteur de la réponse, si non, on invalide l'id_formulaires_reponse
if (in_array($id_formulaires_reponse, $reponses) == false) {
$id_formulaires_reponse = false;
}
}
// Si la moderation est a posteriori ou que la personne est un boss, on publie direct // Si la moderation est a posteriori ou que la personne est un boss, on publie direct
if ($options['moderation'] == 'posteriori' if ($options['moderation'] == 'posteriori'
......
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