// On cherche si le formulaire existe
if ($formulaire = sql_fetsel('*', 'spip_formulaires', $where)) {
- // on ajoute un point d'entrée avec les infos de ce formulaire
+ // On ajoute un point d'entrée avec les infos de ce formulaire
// pour d'eventuels plugins qui en ont l'utilité
- $contexte += array('_formidable' => $formulaire);
+ $contexte['_formidable'] = $formulaire;
+
// Est-ce que la personne a le droit de répondre ?
if (autoriser('repondre', 'formulaire', $formulaire['id_formulaire'], null, array('formulaire'=>$formulaire))){
$saisies = unserialize($formulaire['saisies']);
$traitements = unserialize($formulaire['traitements']);
- // On déclare les champs
- $contexte += array_fill_keys(saisies_lister_champs($saisies), '');
+
+ // On déclare les champs avec les valeurs par défaut
+ $contexte = array_merge(saisies_lister_valeurs_defaut($saisies), $contexte);
$contexte['mechantrobot'] = '';
// On ajoute le formulaire complet
$contexte['_saisies'] = $saisies;
}
}
- // On regarde si maintenant on a un tableau
+ // Si on a un tableau, alors on écrase avec les valeurs données depuis l'appel
if ($valeurs and is_array($valeurs)){
$contexte = array_merge($contexte, $valeurs);
}
} else {
// 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 = $traitements['enregistrement']
+ if ($options
and !$options['multiple']
and $options['modifiable']
and $reponses = formidable_verifier_reponse_formulaire($formulaire['id_formulaire'], $options['identification'], $anonymisation)
* Tableau des erreurs
**/
function formulaires_formidable_traiter($id_formulaire, $valeurs=array(), $id_formulaires_reponse=false){
- $retours = array();
-
+ $retours = array();
$id_formulaire = intval(_request('id_formulaire'));
$formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire);
$traitements = unserialize($formulaire['traitements']);