Commit Graph

176 Commits (master)

Author SHA1 Message Date
Maïeul 2077bb4549 Les enregistrement en base des :
- saisies d'un formulaire
- traitements d'un formulaire
- réponse pour un champ multivalué

Sont désormais en json, via
```
$formidable_serialize = charger_fonction('formidable_serialize', 'filtre');
```
C'est un filtre pour faire le sysmétrique à `|formidable_serialize`,
même si en fait on n'a pas vraiment de raison de l'utiliser en filtre.

Sont gardés en serialize_php :
- les paramètres passées en url pour l'action de recup de fichier
- la base du calcul des hash md5 dans les sessions (utilisés pour
s'assurer qu'on ne perd pas des données en cas d'interruption de config
d'un formulaire -> il faut surtout pas rompre la compat).
1 year ago
Maïeul 3044de4c96 Perf : passer systématiquement aux traitements le tableau des saisies et
des traitements deja deserializé, pour ne pas avoir à le deserializé
dans chaque traitement.
1 year ago
Maïeul fbc1537623 Il existait un pipeline `formidable_affiche_resume_reponse`, utilisé
uniquement par le plugin `formidable_quizz`, actuellement non maintenu
et non publié.

Ce pipeline n'était pas générique, car le remplacement des `@@` ne
concerne pas que l'affichage résumé des réponses, mais aussi en
différent endroit (message de retour par exemple).

On créé deux pipelines plus générique :
- `formidable_pre_raccourcis_arobases`
- `formidable_post_raccourcis_arobases`

On supprime donc le pipeline `formidable_affiche_resume_reponse`.

On simplifie par ailleurs la signature de la fonction
`formidable_raccourcis_arobases_2_valeurs_champs()`.
1. En supprimant les deux derniers arguments passés par références (`$valeurs` et
`$valeurs_libellees`).
La seule raison de ce passage par référence, qui n'était utilisé sur
toute la zone que dans **UN** appel à la fonction, était précisement
de passer les valeurs libellées en arguments du pipeline `formidable_affiche_resume_reponse`. Puisqu'on supprime ce pipeline, plus besoin de ces valeurs.
2. On regroupe tout les paramètres en troisième arguments, dans
$options, tout en assurant une rétrocompatibilité (pas d'autre usage de
`formidable_raccourcis_arobases_2_valeurs_champs()` sur la zone, mais j'ai
du code perso qui l'utilise, et il n'est pas impossible que d'autres
fassent de même.
3. On ajoute une option `'contexte'` pour indiquer le contexte d'appel
de `formidable_raccourcis_arobases_2_valeurs_champs`, ce qui permet de
remplacer utilement le pipeline `formidable_affiche_resume_reponse`.
1 year ago
Maïeul c177c93011 Nouvelle option passable à l'appel d'un formulaire
`traiter_email_destinataires` : reçois un tableau d'emails (ou une liste
séparée des virgule).
Se complète avec l'option `traiter_email_destinataires_methode_methode`
qui peut être :
- `remplacer` pour que les destinataires passés par squelettes
remplacent ceux de config
- `ajouter` (valeur par défaut) pour qu'ils viennent compléter la liste.

Exemple d'appel

````

 #FORMULAIRE_FORMIDABLE{coordonnees,#ARRAY{input_1,plop}, #ARRAY{traiter_email_destinataires,22@22.fr,traiter_email_destinataires_methode,remplacer}}

````
1 year ago
Maïeul ca4e4b48e9 Ce n'est pas parce qu'on insère les fichiers directement dans l'email
qu'on ne veut pas, par ailleurs, disposer d'un lien et d'une information
sur "à quel champ correspond les fichiers".

D'autant plus que cette suppression dans le corps du mail ne marchait plus depuis un
certains temps (lorsqu'on a séparer `$saisies` et
`$saisies_notifications`).

En supprimant cette suppression (!), on bugfix le cas où :
- `_FORMIDABLE_LIENS_FICHIERS_ACCUSE_RECEPTION` était sur `false`
- mais on disait de mettre les fichiers dans le corps du mail
=> `_FORMIDABLE_LIENS_FICHIERS_ACCUSE_RECEPTION` à false ne changeait
rien.
Cf. https://discuter.spip.net/t/formulaire-formidable/160827/6
1 year ago
Maïeul 15f6f93689 Debug de la config `_FORMIDABLE_LIENS_FICHIERS_ACCUSE_RECEPTION`
lorsqu'une saisie fichiers se trouve dans un fieldset.
1 year ago
Maïeul 70d739342c utiliser array_column plutot que array_map sur reset 1 year ago
Maïeul 26ac44a92f un label aussi long, c'est une explication 1 year ago
RealET 8aa135edb0 refs #142 : corrige une erreur 500 en présence du plugin agenda
Voir spip-contrib-extensions/saisies#142 pour l'historique
2 years ago
nicod_ 19d6716fc2 Réparer la vérification d'unicité d'un champ en mode multi-étapes : l'index du tableau des étapes n'est pas un entier, mais une chaine 'etape_X'
(cherry picked from commit 75ffd233be)
2 years ago
Maïeul ec3e3178f4 fixe warning 2 years ago
Maïeul ed5035b861 du `lire_meta()` qui trainait et qui visiblement est supprimé en SPIP 4. 2 years ago
Maïeul 77492cedf3 fix warning php 2 years ago
Maïeul 84d600b954 unicité de champ : sprendre plutôt un select qu'un radio 2 years ago
Maïeul 4feb4cd7a2 Recupération des fichiers par email : passer les args en base64 histoire de ne pas avoir de surprise en case de fichier avec des noms tordus. Merci @nicod_ pour m'avoir aiguiller sur le problème des noms pour ce bug qui courait depuis longtemps. 2 years ago
Maïeul 37185c1e3b warning sur traiter/email.php si jamais on n'enregistre pas les réponse 2 years ago
Maïeul 8cb042d012 fix warning 2 years ago
Maïeul 373d76be5e li_class>conteneur_class 2 years ago
Maïeul 400ae92540 Saisies : datas->data
Sauf pour les importes depuis f&t, vu que tjr en .yaml + chaine de
langue + maintien compat historique

On en profite pour passer systématiquement datas à `saises_chaine2tableau()`, afin
de profiter systématiquement de `_T_ou_typo()` (même si en l'occurence,
ca passait deja tout le temps, on ne sait jamais pour l'avenir si on
stocke autrement les saisies de formidable...)
2 years ago
Maïeul afd577db25 Nouvelle solution à #58 : plus de case à cocher. Chaque traitement
décide s'il affiche ou pas son message spécifique, en connaissant par
ailleur le message general.

Up de y.
Fix #58 (again !)
2 years ago
Maïeul b417b32e56 maintenant que le formulaire s'occupe lui même de concatener les messages_ok, on peut s'épargner ces 2 tests 2 years ago
Maïeul 7394d43458 Même si l'on ne veut pas de certaines saisies dans la notif construite
automatiquement, il faut que les @@ soit interprétés partout ailleurs
(coprs du message, en tete, sujet, etc).
2 years ago
Maïeul 6a65577feb typo 2 years ago
Maïeul d86d3cb9c3 Code mort
hop @rastapopoulos

en faisant de l'archéologie dans la doc de de formidable, j'ai suis tombé sur https://contrib.spip.net/ecrire/?exec=article&id_article=3486

j'ai vu que prévoyais au départ une fonction `update` pour les traitements. Et de facto cette fonction existait pour le traitement enregistrement.

Mais par ailleurs il n'y a aucun appel à cette fonction dans le code. De plus il me semble que c'est piégeux, car ca risque de demultiplier le code. Comme par ailleurs j'avais moi même ajouté `$retours['modification_reponse'] = true` au retour du traitement enregistrer, permettant aux traitements ultérieurs d'avoir l'info, je ne vois pas la logique de cette fonction distincte.

Je supprime donc.
2 years ago
Maïeul 3071ad2033 coquille log 3 years ago
Maïeul 3b6ab7a0d6 précisions dans les logs 3 years ago
Maïeul 9b8f5fa5ce différents logs 3 years ago
Maïeul e45db20e14 Suite discussion croisée @rastapopoulos + @nicod_ + JBB
date_soumission devient date_envoi, plus proche du langage courant, tout
en évitant de confondre avec date_reponse qui pourrait être la date de
l'objet.
On fait pas de migration de structure SQL car il s'agissait d'une branche de dev qui n'a existait que 24h et n'a a priori été déployé que chez le dev.
3 years ago
Maïeul fb4ce962a0 bonus: pouvoir suffixer automatiquement les sujets d'email avec [Modification d'une réponse], si pertinent 3 years ago
Maïeul 610102dbcb issue #33 : modifier l'entête d'email pour indiquer la date de la précédente réponse en cas de modif 3 years ago
Maïeul 8de3a129f1 date de soumission de la réponse : implémentation dans traiter() 3 years ago
Maïeul 0c2f268f78 pipeline formidable_traiter_email_destinataires : passer également id_formulaires_reponse et id_formulaire 3 years ago
Maïeul b9259a51e6 ne pas modérer par défaut les admins (comportement historique) 3 years ago
Maïeul 19c72faa72 fix #26. Ajouter une option permettant de modérer également les admin 3 years ago
nicod@lerebooteux.fr 66fd29320b On peut vouloir envoyer un accusé de réception uniquement, sans le mail de notification de base (donc sans destinataire). 3 years ago
Maïeul bfa0af160f Un pipeline formidable_traiter_email_destinataires.
Permet d'ajouter automatiquement ses propres destinataires.
Exemple d'usage :
- j'associe via cextras un email aux evenements
- je crée un formulaire formidable avec une saisie evenements
- je notifie automatiquement tout les emails associés aux évenements
choisis par l'internaute
3 years ago
Maïeul 22404b8e7c Ne filtrer qu'une seule fois les destinataires des emails pour s'assurer des doublons + appliquer trim par securité 3 years ago
Maïeul 99527bf582 oups, dans la config d'un traitement, une case décochée a bien une valeur enregistré en base (''), donc faut modifier le test 3 years ago
Maïeul 92d614d168 Modification d'une réponse : avant d'enregistrer les nouveaux résultat,
effacer TOUT les anciens résultats, et pas uniquement pour les champs
qui viennent d'être postés.
En effet, les nouvelles valeurs peuvent conditionner le non-affichage
d'un champ pour laquelle une valeur avait été enregistrée avant. Dans ce
cas il faut aussi effacer cette valeur.
Exemple
- Le formulaire est configuré de sorte que si la case_1 est cochée, alors afficher le champ input_1.
- Premier enregistrement de la réponse : case_1 cochée, champ input_1
valant 'toto'
- Modification de la réponse : case_1 décochée.
  - Avant ce commit, la valeur 'toto' restait associée à case_1 en base,
  faussant tableau d'analyse et autre
  - après ce commit, ce n'est plus le cas
3 years ago
Maïeul d0177528fa retour ligne 3 years ago
Maïeul e0d97874b3 nouveau raccourci pour le message de l'accusé de réception : @message_retour@. Permet de prendre le message standard de retour de formulaire puis de le compléter 3 years ago
Maïeul 54b8b8bf25 notice php 3 years ago
Maïeul 3b83cd825d deux notices php en moins 3 years ago
Maïeul 6b94ac3b43 hasher plutot que crypter 4 years ago
yohooo 092f9a0ba1 Amélioration de l'anonymisation dans le cadre une d'identification par identifiant de la personne identifiée. Modification légère de la base. 4 years ago
yohooo f9b3ed4e65 Possibilité d'utiliser une méthode d'identification par l'identifiant de la personne identifiée tout en anonymisant les réponses. 4 years ago
maieul@maieul.net 47c7b2be66 Modification d'une réponse depuis l'espace privé : le faire même si le formulaire n'autorise pas la modification par les utilisateurs de leurs propres réponses 4 years ago
maieul@maieul.net e533e06e78 options pour ne pas envoyer d'email en cas de modif de réponse (par exemple: lorsqu'on modifie depuis l'espace privé) 4 years ago
maieul@maieul.net 8a5675b5dd lors de l'enregistrement d'une réponse, indiquer dans la chaine de traitement s'il s'agit d'une modif d'une reponse, pour que les les traitements ultérieures puissent, le cas échéant, avoir un comportement spécifique 4 years ago
maieul@maieul.net b8c6a207a7 pas de 'sans réponse' dans les intitulés des emails 4 years ago