Skip to content
Extraits de code Groupes Projets
Valider 64c65497 rédigé par kent1@arscenic.info's avatar kent1@arscenic.info
Parcourir les fichiers

PSR SPIP

parent e0beb242
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -327,7 +327,11 @@ function formidable_importer_forms_donnees() { ...@@ -327,7 +327,11 @@ function formidable_importer_forms_donnees() {
$id_formulaires_reponse = sql_insertq('spip_formulaires_reponses', $reponse); $id_formulaires_reponse = sql_insertq('spip_formulaires_reponses', $reponse);
#var_dump($id_formulaires_reponse); #var_dump($id_formulaires_reponse);
if ($id_formulaires_reponse) { if ($id_formulaires_reponse) {
$donnees = sql_allfetsel("$id_formulaires_reponse as id_formulaires_reponse,champ as nom,valeur", 'spip_forms_donnees_champs', 'id_donnee='.intval($row['id_donnee'])); $donnees = sql_allfetsel(
"$id_formulaires_reponse as id_formulaires_reponse,champ as nom,valeur",
'spip_forms_donnees_champs',
'id_donnee='.intval($row['id_donnee'])
);
$data = array(); $data = array();
foreach ($donnees as $donnee) { foreach ($donnees as $donnee) {
$data[$donnee['nom']][] = $donnee; $data[$donnee['nom']][] = $donnee;
...@@ -358,5 +362,4 @@ function formidable_importer_forms_donnees() { ...@@ -358,5 +362,4 @@ function formidable_importer_forms_donnees() {
} }
} while ($rows = sql_allfetsel('*', 'spip_forms_donnees', sql_in('id_form', array_keys($trans)).' AND id_formulaires_reponse=0', '', 'id_donnee', '0,100')); } while ($rows = sql_allfetsel('*', 'spip_forms_donnees', sql_in('id_form', array_keys($trans)).' AND id_formulaires_reponse=0', '', 'id_donnee', '0,100'));
} }
} }
...@@ -4,14 +4,15 @@ ...@@ -4,14 +4,15 @@
if (!defined('_ECRIRE_INC_VERSION')) { if (!defined('_ECRIRE_INC_VERSION')) {
return; return;
} }
include_spip("inc/utils"); include_spip('inc/utils');
include_spip('inc/formidable_fichiers'); include_spip('inc/formidable_fichiers');
function traiter_email_dist($args, $retours) { function traiter_email_dist($args, $retours) {
if (!isset($retours['fichiers'])) { if (!isset($retours['fichiers'])) {
$retours['fichiers'] = array(); $retours['fichiers'] = array();
$ajouter_fichier = True; $ajouter_fichier = true;
} else { } else {
$ajouter_fichier = False; $ajouter_fichier = false;
} }
$timestamp = time(); $timestamp = time();
$retours['timestamp'] = $timestamp; $retours['timestamp'] = $timestamp;
...@@ -22,7 +23,6 @@ function traiter_email_dist($args, $retours) { ...@@ -22,7 +23,6 @@ function traiter_email_dist($args, $retours) {
$champs = saisies_lister_champs($saisies); $champs = saisies_lister_champs($saisies);
$destinataires = array(); $destinataires = array();
// On récupère les destinataires // On récupère les destinataires
if ($options['champ_destinataires']) { if ($options['champ_destinataires']) {
$destinataires = _request($options['champ_destinataires']); $destinataires = _request($options['champ_destinataires']);
...@@ -86,7 +86,10 @@ function traiter_email_dist($args, $retours) { ...@@ -86,7 +86,10 @@ function traiter_email_dist($args, $retours) {
// On parcourt les champs pour générer le tableau des valeurs // On parcourt les champs pour générer le tableau des valeurs
$valeurs = array(); $valeurs = array();
$saisies_fichiers = saisies_lister_avec_type($saisies,'fichiers');// On utilise pas formulaires_formidable_fichiers, car celui-ci retourne les saisies fichiers du formulaire dans la base… or, on sait-jamais, il peut y avoir eu une modification entre le moment où l'utilisateur a vu le formulaire et maintenant $saisies_fichiers = saisies_lister_avec_type($saisies, 'fichiers');
// On utilise pas formulaires_formidable_fichiers,
// car celui-ci retourne les saisies fichiers du formulaire dans la base… or, on sait-jamais,
// il peut y avoir eu une modification entre le moment où l'utilisateur a vu le formulaire et maintenant
foreach ($champs as $champ) { foreach ($champs as $champ) {
if (array_key_exists($champ, $saisies_fichiers)) {// si on a affaire à une saisie de type fichiers, on traite à part if (array_key_exists($champ, $saisies_fichiers)) {// si on a affaire à une saisie de type fichiers, on traite à part
$valeurs[$champ] = traiter_email_fichiers($saisies_fichiers[$champ], $champ, $formulaire['id_formulaire'], $retours, $timestamp); $valeurs[$champ] = traiter_email_fichiers($saisies_fichiers[$champ], $champ, $formulaire['id_formulaire'], $retours, $timestamp);
...@@ -147,7 +150,7 @@ function traiter_email_dist($args, $retours) { ...@@ -147,7 +150,7 @@ function traiter_email_dist($args, $retours) {
$notification, $notification,
array( array(
'id_formulaire' => $args['id_formulaire'], 'id_formulaire' => $args['id_formulaire'],
'id_formulaires_reponse' => isset($retours['id_formulaires_reponse']) ? $retours['id_formulaires_reponse']:'', 'id_formulaires_reponse' => isset($retours['id_formulaires_reponse']) ? $retours['id_formulaires_reponse'] : '',
'titre' => _T_ou_typo($formulaire['titre']), 'titre' => _T_ou_typo($formulaire['titre']),
'traitements' => $traitements, 'traitements' => $traitements,
'saisies' => $saisies, 'saisies' => $saisies,
...@@ -173,7 +176,7 @@ function traiter_email_dist($args, $retours) { ...@@ -173,7 +176,7 @@ function traiter_email_dist($args, $retours) {
$courriel_from = ''; $courriel_from = '';
if ($courriel_envoyeur && $options['activer_vrai_envoyeur']) { if ($courriel_envoyeur && $options['activer_vrai_envoyeur']) {
$courriel_from = $courriel_envoyeur; $courriel_from = $courriel_envoyeur;
} else if ($courriel_envoyeur) { } elseif ($courriel_envoyeur) {
$corps['repondre_a'] = $courriel_envoyeur; $corps['repondre_a'] = $courriel_envoyeur;
} }
...@@ -206,7 +209,8 @@ function traiter_email_dist($args, $retours) { ...@@ -206,7 +209,8 @@ function traiter_email_dist($args, $retours) {
} }
$sujet_accuse = filtrer_entites($sujet_accuse); $sujet_accuse = filtrer_entites($sujet_accuse);
// Si un nom d'expéditeur est précisé pour l'AR, on l'utilise, sinon on utilise le nomde l'envoyeur du courriel principal // Si un nom d'expéditeur est précisé pour l'AR, on l'utilise,
// sinon on utilise le nomde l'envoyeur du courriel principal
$nom_envoyeur_accuse = trim($options['nom_envoyeur_accuse']); $nom_envoyeur_accuse = trim($options['nom_envoyeur_accuse']);
if (!$nom_envoyeur_accuse) { if (!$nom_envoyeur_accuse) {
$nom_envoyeur_accuse = $nom_envoyeur; $nom_envoyeur_accuse = $nom_envoyeur;
...@@ -236,7 +240,7 @@ function traiter_email_dist($args, $retours) { ...@@ -236,7 +240,7 @@ function traiter_email_dist($args, $retours) {
// On génère l'accusé de réception // On génère l'accusé de réception
if (_FORMIDABLE_LIENS_FICHIERS_ACCUSE_RECEPTION == false) { if (_FORMIDABLE_LIENS_FICHIERS_ACCUSE_RECEPTION == false) {
$valeurs = vues_saisies_supprimer_action_recuperer_fichier_par_email($saisies,$valeurs); $valeurs = vues_saisies_supprimer_action_recuperer_fichier_par_email($saisies, $valeurs);
} }
$html_accuse = recuperer_fond( $html_accuse = recuperer_fond(
$accuse, $accuse,
...@@ -269,7 +273,7 @@ function traiter_email_dist($args, $retours) { ...@@ -269,7 +273,7 @@ function traiter_email_dist($args, $retours) {
$retours['message_ok'] = _T('formidable:traiter_email_message_ok'); $retours['message_ok'] = _T('formidable:traiter_email_message_ok');
} }
} else { } else {
if (isset ($retours['message_erreur'])) { if (isset($retours['message_erreur'])) {
$retours['message_erreur'] .= "\n"._T('formidable:traiter_email_message_erreur'); $retours['message_erreur'] .= "\n"._T('formidable:traiter_email_message_erreur');
} else { } else {
$retours['message_erreur'] = _T('formidable:traiter_email_message_erreur'); $retours['message_erreur'] = _T('formidable:traiter_email_message_erreur');
...@@ -286,13 +290,13 @@ function traiter_email_dist($args, $retours) { ...@@ -286,13 +290,13 @@ function traiter_email_dist($args, $retours) {
/** /**
* Retourne la liste des destinataires sélectionnés en fonction * Retourne la liste des destinataires sélectionnés en fonction
* de l'option 'destinataires_selon_champ' du traitement email. * de l'option 'destinataires_selon_champ' du traitement email.
* *
* @param string $description * @param string $description
* Description saisie dans l'option du traitement du formulaire, * Description saisie dans l'option du traitement du formulaire,
* qui respecte le schéma prévu, c'est à dire : 1 description par ligne, * qui respecte le schéma prévu, c'est à dire : 1 description par ligne,
* tel que `@champ@/valeur : mail@domain.tld, mail@domain.tld, ...` * tel que `@champ@/valeur : mail@domain.tld, mail@domain.tld, ...`
* {@example : `@selection_2@/choix_1 : toto@domain.tld`} * {@example : `@selection_2@/choix_1 : toto@domain.tld`}
* @return array * @return array
* Liste des destinataires, s'il y en a. * Liste des destinataires, s'il y en a.
**/ **/
function formidable_traiter_email_destinataire_selon_champ($description) { function formidable_traiter_email_destinataire_selon_champ($description) {
...@@ -347,8 +351,10 @@ function formidable_traiter_email_destinataire_selon_champ($description) { ...@@ -347,8 +351,10 @@ function formidable_traiter_email_destinataire_selon_champ($description) {
* Gère une saisie de type fichiers dans le traitement par email. * Gère une saisie de type fichiers dans le traitement par email.
* C'est à dire: * C'est à dire:
* - S'il y a eu un enregistement avant, ne déplace pas le fichier * - S'il y a eu un enregistement avant, ne déplace pas le fichier
* - S'il n'y a pas eu d'enregistrement avant, déplace le fichier dans un dossier nommé en fonction du timestamp du traitement * - S'il n'y a pas eu d'enregistrement avant, déplace le fichier
* - Renvoie un tableau décrivant les fichiers, avec une url d'action sécurisée valable seulement _FORMIDABLE_EXPIRATION_FICHIERS_EMAIL (sauf si cette constantes est définie à 0) * dans un dossier nommé en fonction du timestamp du traitement
* - Renvoie un tableau décrivant les fichiers, avec une url d'action sécurisée valable seulement
* _FORMIDABLE_EXPIRATION_FICHIERS_EMAIL (sauf si cette constantes est définie à 0)
* @param array $saisie la description de la saisie * @param array $saisie la description de la saisie
* @param string $nom le nom de la saisie * @param string $nom le nom de la saisie
* @param int|string $id_formulaire le formulaire concerné * @param int|string $id_formulaire le formulaire concerné
...@@ -356,7 +362,7 @@ function formidable_traiter_email_destinataire_selon_champ($description) { ...@@ -356,7 +362,7 @@ function formidable_traiter_email_destinataire_selon_champ($description) {
* @param int $timestamp un timestamp correspondant au début du processus de création du courriel * @param int $timestamp un timestamp correspondant au début du processus de création du courriel
* @return array un tableau décrivant la saisie * @return array un tableau décrivant la saisie
**/ **/
function traiter_email_fichiers($saisie, $nom, $id_formulaire, $retours, $timestamp){ function traiter_email_fichiers($saisie, $nom, $id_formulaire, $retours, $timestamp) {
//Initialisation //Initialisation
$id_formulaire = strval($id_formulaire);//précaution $id_formulaire = strval($id_formulaire);//précaution
$vue = array(); $vue = array();
...@@ -364,16 +370,16 @@ function traiter_email_fichiers($saisie, $nom, $id_formulaire, $retours, $timest ...@@ -364,16 +370,16 @@ function traiter_email_fichiers($saisie, $nom, $id_formulaire, $retours, $timest
if (isset($retours['id_formulaires_reponse']) and $id_formulaires_reponse = $retours['id_formulaires_reponse']) { // cas simple: les réponses ont été enregistrées if (isset($retours['id_formulaires_reponse']) and $id_formulaires_reponse = $retours['id_formulaires_reponse']) { // cas simple: les réponses ont été enregistrées
if (isset($retours['fichiers'][$nom])) { // petite précaution if (isset($retours['fichiers'][$nom])) { // petite précaution
$options = array( $options = array(
'id_formulaire' => $id_formulaire, 'id_formulaire' => $id_formulaire,
'id_formulaires_reponse' => $retours['id_formulaires_reponse'] 'id_formulaires_reponse' => $retours['id_formulaires_reponse']
); );
$vue = ajouter_action_recuperer_fichier_par_email($retours['fichiers'][$nom], $nom, $options); $vue = ajouter_action_recuperer_fichier_par_email($retours['fichiers'][$nom], $nom, $options);
} }
} else { // si les réponses n'ont pas été enregistrées } else { // si les réponses n'ont pas été enregistrées
$vue = formidable_deplacer_fichiers_produire_vue_saisie($saisie,array('id_formulaire'=>$id_formulaire,'timestamp'=>$timestamp)); $vue = formidable_deplacer_fichiers_produire_vue_saisie($saisie, array('id_formulaire' => $id_formulaire, 'timestamp' => $timestamp));
$options = array( $options = array(
'id_formulaire' => $id_formulaire, 'id_formulaire' => $id_formulaire,
'timestamp' => $timestamp 'timestamp' => $timestamp
); );
$vue = ajouter_action_recuperer_fichier_par_email($vue, $nom, $options); $vue = ajouter_action_recuperer_fichier_par_email($vue, $nom, $options);
} }
...@@ -398,12 +404,12 @@ function ajouter_action_recuperer_fichier_par_email($saisie_a_modifier, $nom_sai ...@@ -398,12 +404,12 @@ function ajouter_action_recuperer_fichier_par_email($saisie_a_modifier, $nom_sai
if (_FORMIDABLE_EXPIRATION_FICHIERS_EMAIL > 0) { if (_FORMIDABLE_EXPIRATION_FICHIERS_EMAIL > 0) {
$delai = secondes_en_jour(_FORMIDABLE_EXPIRATION_FICHIERS_EMAIL); $delai = secondes_en_jour(_FORMIDABLE_EXPIRATION_FICHIERS_EMAIL);
} }
foreach ($saisie_a_modifier as $i => $valeur){ foreach ($saisie_a_modifier as $i => $valeur) {
$url = formidable_generer_url_action_recuperer_fichier_email($nom_saisie, $valeur['nom'], $options); $url = formidable_generer_url_action_recuperer_fichier_email($nom_saisie, $valeur['nom'], $options);
$saisie_a_modifier[$i]['url'] = $url; $saisie_a_modifier[$i]['url'] = $url;
if (_FORMIDABLE_EXPIRATION_FICHIERS_EMAIL > 0) { if (_FORMIDABLE_EXPIRATION_FICHIERS_EMAIL > 0) {
$saisie_a_modifier[$i]['fichier'] = $valeur['nom']; $saisie_a_modifier[$i]['fichier'] = $valeur['nom'];
$saisie_a_modifier[$i]['nom'] = "["._T("formidable:lien_expire", array("delai"=>$delai))."] ".$valeur['nom']; $saisie_a_modifier[$i]['nom'] = '['._T('formidable:lien_expire', array('delai' => $delai)).'] '.$valeur['nom'];
} else { } else {
$saisie_a_modifier[$i]['fichier'] = $valeur['nom']; $saisie_a_modifier[$i]['fichier'] = $valeur['nom'];
$saisie_a_modifier[$i]['nom'] = $valeur['nom']; $saisie_a_modifier[$i]['nom'] = $valeur['nom'];
...@@ -418,11 +424,11 @@ function ajouter_action_recuperer_fichier_par_email($saisie_a_modifier, $nom_sai ...@@ -418,11 +424,11 @@ function ajouter_action_recuperer_fichier_par_email($saisie_a_modifier, $nom_sai
* Supprime dans une vue de saisie 'fichiers' * Supprime dans une vue de saisie 'fichiers'
* l'url de récupération par email * l'url de récupération par email
* et l'information sur le délai d'expiration * et l'information sur le délai d'expiration
* @param array $vue * @param array $vue
* @return array $vue * @return array $vue
**/ **/
function supprimer_action_recuperer_fichier_par_email($vue) { function supprimer_action_recuperer_fichier_par_email($vue) {
foreach ($vue as $f => &$desc){ foreach ($vue as $f => &$desc) {
if (isset($desc['url'])) { if (isset($desc['url'])) {
unset($desc['url']); unset($desc['url']);
} }
...@@ -439,11 +445,10 @@ function supprimer_action_recuperer_fichier_par_email($vue) { ...@@ -439,11 +445,10 @@ function supprimer_action_recuperer_fichier_par_email($vue) {
* @param array $vues * @param array $vues
* @return array $vues * @return array $vues
**/ **/
function function vues_saisies_supprimer_action_recuperer_fichier_par_email($saisies, $vues) {
vues_saisies_supprimer_action_recuperer_fichier_par_email($saisies, $vues) { foreach ($saisies as $saisie => $description) {
foreach ($saisies as $saisie=>$description){
if ($description['saisie'] == 'fichiers') { // si de type fichiers if ($description['saisie'] == 'fichiers') { // si de type fichiers
$nom_saisie = $description['options']['nom']; $nom_saisie = $description['options']['nom'];
$vues[$nom_saisie] = supprimer_action_recuperer_fichier_par_email($vues[$nom_saisie]); $vues[$nom_saisie] = supprimer_action_recuperer_fichier_par_email($vues[$nom_saisie]);
} }
} }
...@@ -462,18 +467,17 @@ function secondes_en_jour($secondes) { ...@@ -462,18 +467,17 @@ function secondes_en_jour($secondes) {
$secondes = $secondes-$jours*24*3600-$heures*3600-$minutes*60; $secondes = $secondes-$jours*24*3600-$heures*3600-$minutes*60;
$param = array( $param = array(
'j' => $jours, 'j' => $jours,
'h' => $heures, 'h' => $heures,
'm' => $minutes, 'm' => $minutes,
's' => $secondes 's' => $secondes
); );
if ($jours > 0) { if ($jours > 0) {
return _T('formidable:jours_heures_minutes_secondes',$param); return _T('formidable:jours_heures_minutes_secondes', $param);
} elseif ($heures > 0) { } elseif ($heures > 0) {
return _T('formidable:heures_minutes_secondes',$param); return _T('formidable:heures_minutes_secondes', $param);
} elseif ($minutes > 0) { } elseif ($minutes > 0) {
return _T('formidable:minutes_secondes',$param); return _T('formidable:minutes_secondes', $param);
} else { } else {
return _T('formidable:secondes',$param); return _T('formidable:secondes', $param);
} }
} }
...@@ -16,7 +16,8 @@ function traiter_enregistrement_dist($args, $retours) { ...@@ -16,7 +16,8 @@ function traiter_enregistrement_dist($args, $retours) {
$saisies = saisies_lister_par_nom($saisies); $saisies = saisies_lister_par_nom($saisies);
// La personne a-t-elle un compte ? // La personne a-t-elle un compte ?
$id_auteur = isset($GLOBALS['visiteur_session']) ? (isset($GLOBALS['visiteur_session']['id_auteur']) ? $GLOBALS['visiteur_session']['id_auteur'] : 0) : 0; $id_auteur = isset($GLOBALS['visiteur_session']) ? (isset($GLOBALS['visiteur_session']['id_auteur']) ?
$GLOBALS['visiteur_session']['id_auteur'] : 0) : 0;
// traitement de l'anonymisation // traitement de l'anonymisation
if ($options['anonymiser'] == 'on') { if ($options['anonymiser'] == 'on') {
...@@ -70,7 +71,13 @@ function traiter_enregistrement_dist($args, $retours) { ...@@ -70,7 +71,13 @@ function traiter_enregistrement_dist($args, $retours) {
// 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'
or autoriser('instituer', 'formulairesreponse', $id_formulaires_reponse, null, array('id_formulaire' => $id_formulaire, 'nouveau_statut' => 'publie'))) { or autoriser(
'instituer',
'formulairesreponse',
$id_formulaires_reponse,
null,
array('id_formulaire' => $id_formulaire, 'nouveau_statut' => 'publie')
)) {
$statut='publie'; $statut='publie';
} else { } else {
$statut = 'prop'; $statut = 'prop';
...@@ -116,7 +123,7 @@ function traiter_enregistrement_dist($args, $retours) { ...@@ -116,7 +123,7 @@ function traiter_enregistrement_dist($args, $retours) {
$insertions = array(); $insertions = array();
foreach ($saisies as $nom => $saisie) { foreach ($saisies as $nom => $saisie) {
if ($saisie['saisie'] == 'fichiers') { // traiter à part le cas des saisies fichiers if ($saisie['saisie'] == 'fichiers') { // traiter à part le cas des saisies fichiers
$valeur = traiter_enregistrement_fichiers($saisie, $id_formulaire, $id_formulaires_reponse); $valeur = traiter_enregistrement_fichiers($saisie, $id_formulaire, $id_formulaires_reponse);
if (($valeur !== null)) { if (($valeur !== null)) {
$champs[] = $nom; $champs[] = $nom;
$insertions[] = array( $insertions[] = array(
...@@ -124,10 +131,12 @@ function traiter_enregistrement_dist($args, $retours) { ...@@ -124,10 +131,12 @@ function traiter_enregistrement_dist($args, $retours) {
'nom' => $nom, 'nom' => $nom,
'valeur' => is_array($valeur) ? serialize($valeur) : $valeur 'valeur' => is_array($valeur) ? serialize($valeur) : $valeur
); );
$retours['fichiers'][$nom] = $valeur; $retours['fichiers'][$nom] = $valeur;
} }
} }
if (($valeur = _request($nom)) !== null) {// Pour le saisies différentes de fichiers, on ne prend que les champs qui ont effectivement été envoyés par le formulaire if (($valeur = _request($nom)) !== null) {
// Pour le saisies différentes de fichiers,
// on ne prend que les champs qui ont effectivement été envoyés par le formulaire
$champs[] = $nom; $champs[] = $nom;
$insertions[] = array( $insertions[] = array(
'id_formulaires_reponse' => $id_formulaires_reponse, 'id_formulaires_reponse' => $id_formulaires_reponse,
...@@ -201,13 +210,14 @@ function traiter_enregistrement_update_dist($id_formulaire, $traitement, $saisie ...@@ -201,13 +210,14 @@ function traiter_enregistrement_update_dist($id_formulaire, $traitement, $saisie
} }
/** /**
* Pour une saisie 'fichiers' particulière, * Pour une saisie 'fichiers' particulière,
* déplace chaque fichier envoyé dans le dossier config/fichiers/formidable/formulaire_$id_formulaire/reponse_$id_formulaires_reponse. * déplace chaque fichier envoyé dans le dossier
* config/fichiers/formidable/formulaire_$id_formulaire/reponse_$id_formulaires_reponse.
* @param array $saisie la description de la saisie * @param array $saisie la description de la saisie
* @param int $id_formulaire le formulaire * @param int $id_formulaire le formulaire
* @param int $id_formulaires_reponse * @param int $id_formulaires_reponse
* return array|null un tableau organisé par fichier, contenant 'nom', 'extension','mime','taille' * return array|null un tableau organisé par fichier, contenant 'nom', 'extension','mime','taille'
**/ **/
function traiter_enregistrement_fichiers($saisie, $id_formulaire, $id_formulaires_reponse){ function traiter_enregistrement_fichiers($saisie, $id_formulaire, $id_formulaires_reponse) {
return formidable_deplacer_fichiers_produire_vue_saisie($saisie,array('id_formulaire'=>$id_formulaire,'id_formulaires_reponse'=>$id_formulaires_reponse)); return formidable_deplacer_fichiers_produire_vue_saisie($saisie, array('id_formulaire' => $id_formulaire, '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