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

Début pour le passage du stockage de `serialize` à `json_encode()`.

- Le filtre `|tenter_unserialize` est déprécié.
- Il est remplacé par `|formidable_deserialize`.
- Ce filtre peut recevoir au choix :
  * Un tableau, qu'il retourne tel quel
  * Un tableau serializé via `json_encode`
  * Un tableau serializé via `serialize`
- Dans les deux dernier cas, il renvoie la version deserializé, en cas
de réussite, sinon l'argument passé.

Exemple

````
include_spip('formidable_fonctions');
'filtre');
$a = ['a' => 'a'];

$a = json_encode($a);
var_dump($a);

$a = formidable_deserialize($a);
var_dump($a);

$a = serialize($a);
var_dump($a);

$a = formidable_deserialize($a);
var_dump($a);

$a = serialize($a).'plop';//Serialisation corrompu
var_dump($a);

$a = formidable_deserialize($a);
var_dump($a);
````

Ainsi, pas besoin de convertir tous les formulaires de `serialize`  à
`json_encode`  à la mise à jour du plugin formidable :
on peut le faire au fur à mesure qu'on modifie les champs/traitements
d'un formulaire.

On utilisera donc ce filtre à chaque fois que l'on veut déchiffrer
depuis la BDD :
- * traitements d'un formulaire
- * saisies d'un formulaire
- * réponse d'un champ multivalué (ex: checkbox)
parent e90f7607
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Affichage de
avec 143 ajouts et 86 suppressions
...@@ -6,6 +6,11 @@ ...@@ -6,6 +6,11 @@
- Lors de la construction du formulaire, vérifier à la fin si les champs conditionnant des affichages sont bien présents, retourner un message d'erreur dans le cas contraire - Lors de la construction du formulaire, vérifier à la fin si les champs conditionnant des affichages sont bien présents, retourner un message d'erreur dans le cas contraire
- #105 Ajout des pipelines `formidable_pre_raccourcis_arobases` et `formidable_post_raccourcis_arobases` pour ajustement les traitements avant/après l'interprétation des raccourcis `@champs@` - #105 Ajout des pipelines `formidable_pre_raccourcis_arobases` et `formidable_post_raccourcis_arobases` pour ajustement les traitements avant/après l'interprétation des raccourcis `@champs@`
- #99 #111 Ajout du filtre `|formidable_deserialize` qui reçoit au choix :
* Un tableau déjà déserializé
* Un tableau serializé via `json_encode()`
* Un tableau serializé via `serialize()`
Et renvoie le tableau deserializé, ou la valeur reçue en cas d'échec.
### Changed ### Changed
...@@ -36,6 +41,11 @@ ...@@ -36,6 +41,11 @@
### Removed ### Removed
- #105 pipeline `formidable_affiche_resume_reponse` supprimé, remplacée par `formidable_pre_raccourcis_arobases` et `formidable_post_raccourcis_arobases` - #105 pipeline `formidable_affiche_resume_reponse` supprimé, remplacée par `formidable_pre_raccourcis_arobases` et `formidable_post_raccourcis_arobases`
### Deprecated
- Filtre `tenter_unserialize`, utiliser à la place `formidable_deserialize`
### Fixed ### Fixed
- #114 Afficher correctement les erreurs lors de la saisie d'une configuration de formulaire - #114 Afficher correctement les erreurs lors de la saisie d'une configuration de formulaire
......
...@@ -18,9 +18,9 @@ if (!defined('_ECRIRE_INC_VERSION')) { ...@@ -18,9 +18,9 @@ if (!defined('_ECRIRE_INC_VERSION')) {
function afficher_diff_array_serialized($champ, $old, $new, $format = 'diff') { function afficher_diff_array_serialized($champ, $old, $new, $format = 'diff') {
// Pour le diff de saisies, faire comme un diff de yaml // Pour le diff de saisies, faire comme un diff de yaml
include_spip('inc/yaml'); include_spip('inc/yaml');
$tenter_unserialize = charger_fonction('tenter_unserialize', 'filtre/'); include_spip('formidable_fonctions');
$new = $tenter_unserialize($new); $new = formidable_deserialize($new);
$old = $tenter_unserialize($old); $old = formidable_deserialize($old);
if (is_array($new)) { if (is_array($new)) {
$new = yaml_encode($new); $new = yaml_encode($new);
} else { } else {
......
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
*/ */
function controleurs_formulaires_reponses_champ_dist($regs, $c = null) { function controleurs_formulaires_reponses_champ_dist($regs, $c = null) {
include_spip('inc/saisies'); include_spip('inc/saisies');
include_spip('formidable_fonctions');
list(,$crayon, $type, $champ, $id) = $regs; list(,$crayon, $type, $champ, $id) = $regs;
$id_formulaires_reponses_champ = $regs[4]; $id_formulaires_reponses_champ = $regs[4];
...@@ -27,7 +29,10 @@ function controleurs_formulaires_reponses_champ_dist($regs, $c = null) { ...@@ -27,7 +29,10 @@ function controleurs_formulaires_reponses_champ_dist($regs, $c = null) {
$nom = $data['nom']; $nom = $data['nom'];
$valeur = $data['valeur']; $valeur = $data['valeur'];
$saisie = saisies_chercher(unserialize($data['saisies']), $nom); $saisie = saisies_chercher(
formidable_deserialize($data['saisies']),
$nom
);
$valeur = $data['valeur']; $valeur = $data['valeur'];
$n = new Crayon( $n = new Crayon(
...@@ -41,11 +46,11 @@ function controleurs_formulaires_reponses_champ_dist($regs, $c = null) { ...@@ -41,11 +46,11 @@ function controleurs_formulaires_reponses_champ_dist($regs, $c = null) {
unset($saisie['options']['explication']); unset($saisie['options']['explication']);
unset($saisie['options']['class']); unset($saisie['options']['class']);
unset($saisie['options']['conteneur_class']); unset($saisie['options']['conteneur_class']);
// Crayons utilise son propre formalisme pour le 'name' des saisies. // Crayons utilise son propre formalisme pour le 'name' des saisies.
$nom_crayons = 'content_' . $key . '_valeur'; $nom_crayons = 'content_' . $key . '_valeur';
$saisie['options']['nom'] = $nom_crayons; $saisie['options']['nom'] = $nom_crayons;
include_spip('inc/formidable'); $valeur = formidable_deserialize($valeur);
$valeur = filtre_tenter_unserialize_dist($valeur);// Pour une raison mystérieuse, charger_fonction déclenche une erreur (!)
$contexte = array('_saisies' => array($saisie), $nom_crayons => $valeur); $contexte = array('_saisies' => array($saisie), $nom_crayons => $valeur);
$html = $n->formulaire($contexte); $html = $n->formulaire($contexte);
......
...@@ -7,6 +7,7 @@ if (!defined('_ECRIRE_INC_VERSION')) { ...@@ -7,6 +7,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
function echanger_formulaire_yaml_exporter_dist($id_formulaire) { function echanger_formulaire_yaml_exporter_dist($id_formulaire) {
include_spip('base/abstract_sql'); include_spip('base/abstract_sql');
include_spip('formidable_fonctions');
include_spip('inc/yaml'); include_spip('inc/yaml');
$id_formulaire = intval($id_formulaire); $id_formulaire = intval($id_formulaire);
$export = ''; $export = '';
...@@ -20,8 +21,8 @@ function echanger_formulaire_yaml_exporter_dist($id_formulaire) { ...@@ -20,8 +21,8 @@ function echanger_formulaire_yaml_exporter_dist($id_formulaire) {
); );
// On décompresse les trucs sérialisés // On décompresse les trucs sérialisés
$formulaire['saisies'] = unserialize($formulaire['saisies']); $formulaire['saisies'] = formidable_deserialize($formulaire['saisies']);
$formulaire['traitements'] = unserialize($formulaire['traitements']); $formulaire['traitements'] = formidable_deserialize($formulaire['traitements']);
// On envode en yaml // On envode en yaml
$export = yaml_encode($formulaire); $export = yaml_encode($formulaire);
......
<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* @deprecated
* @see `filtre_formidable_deserialize_dist()`
* @param string|array $texte
* @return array|string
**/
function filtre_tenter_deserialize_dist($texte) {
include_spip('formidable_fonctions');
return formidable_deserialize($texte);
}
...@@ -157,7 +157,8 @@ function autoriser_formulaire_repondre_dist($faire, $type, $id, $qui, $opt) { ...@@ -157,7 +157,8 @@ function autoriser_formulaire_repondre_dist($faire, $type, $id, $qui, $opt) {
$formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id); $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id);
} }
$traitements = unserialize($formulaire['traitements']); include_spip('formidable_fonctions');
$traitements = formidable_deserialize($formulaire['traitements']);
// S'il n'y a pas d'enregistrement, c'est forcément bon // S'il n'y a pas d'enregistrement, c'est forcément bon
if (!isset($traitements['enregistrement']) or !($options = $traitements['enregistrement'])) { if (!isset($traitements['enregistrement']) or !($options = $traitements['enregistrement'])) {
......
...@@ -13,6 +13,7 @@ if (!defined('_ECRIRE_INC_VERSION')) { ...@@ -13,6 +13,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
include_spip('inc/formidable'); include_spip('inc/formidable');
include_spip('public/formidable_criteres'); include_spip('public/formidable_criteres');
include_spip('filtre/tenter_unserialize');// Obsolète
/** /**
* #VOIR_REPONSE{checkbox_2} dans une boucle (FORMULAIRES_REPONSES) * #VOIR_REPONSE{checkbox_2} dans une boucle (FORMULAIRES_REPONSES)
* *
...@@ -55,11 +56,11 @@ function balise_VOIR_REPONSE_dist($p) { ...@@ -55,11 +56,11 @@ function balise_VOIR_REPONSE_dist($p) {
function calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $nom, $sql_serveur = '', $type_retour = null, $sans_reponse = null) { function calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $nom, $sql_serveur = '', $type_retour = null, $sans_reponse = null) {
static $formulaires_saisies = array(); static $formulaires_saisies = array();
static $reponses_valeurs = array(); static $reponses_valeurs = array();
$tenter_unserialize = charger_fonction('tenter_unserialize', 'filtre/'); include_spip('formidable_fonctions');
// Si pas déjà présent, on cherche les saisies de ce formulaire // Si pas déjà présent, on cherche les saisies de ce formulaire
if (!isset($formulaires_saisies[$id_formulaire])) { if (!isset($formulaires_saisies[$id_formulaire])) {
$formulaires_saisies[$id_formulaire] = unserialize( $formulaires_saisies[$id_formulaire] = formidable_deserialize(
sql_getfetsel('saisies',//select sql_getfetsel('saisies',//select
'spip_formulaires',//from 'spip_formulaires',//from
'id_formulaire = '.intval($id_formulaire),//where 'id_formulaire = '.intval($id_formulaire),//where
...@@ -86,7 +87,7 @@ function calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $nom, $s ...@@ -86,7 +87,7 @@ function calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $nom, $s
foreach ($champs as $champ) { foreach ($champs as $champ) {
$reponses_valeurs[$id_formulaires_reponse][$champ['nom']] = array( $reponses_valeurs[$id_formulaires_reponse][$champ['nom']] = array(
'valeur' => formidable_ajouter_action_recuperer_fichier( 'valeur' => formidable_ajouter_action_recuperer_fichier(
$tenter_unserialize($champ['valeur']), formidable_deserialize($champ['valeur']),
$champ['nom'], $champ['nom'],
$formulaires_saisies[$id_formulaire], $formulaires_saisies[$id_formulaire],
$id_formulaire, $id_formulaire,
...@@ -151,6 +152,8 @@ function affiche_resume_reponse($id_formulaires_reponse, $id_formulaire = null, ...@@ -151,6 +152,8 @@ function affiche_resume_reponse($id_formulaires_reponse, $id_formulaire = null,
static $modeles_resume = array(); static $modeles_resume = array();
static $saisies_form = array(); static $saisies_form = array();
include_spip('formidable_fonctions');
if (is_null($id_formulaire)) { if (is_null($id_formulaire)) {
$id_formulaire = sql_getfetsel( $id_formulaire = sql_getfetsel(
'id_formulaire', 'id_formulaire',
...@@ -161,9 +164,9 @@ function affiche_resume_reponse($id_formulaires_reponse, $id_formulaire = null, ...@@ -161,9 +164,9 @@ function affiche_resume_reponse($id_formulaires_reponse, $id_formulaire = null,
if (is_null($modele_resume) and !isset($modeles_resume[$id_formulaire])) { if (is_null($modele_resume) and !isset($modeles_resume[$id_formulaire])) {
$row = sql_fetsel('saisies, traitements', 'spip_formulaires', 'id_formulaire='.intval($id_formulaire)); $row = sql_fetsel('saisies, traitements', 'spip_formulaires', 'id_formulaire='.intval($id_formulaire));
$saisies = unserialize($row['saisies']); $saisies = formidable_deserialize($row['saisies']);
$saisies_form[$id_formulaire] = $saisies; $saisies_form[$id_formulaire] = $saisies;
$traitements = unserialize($row['traitements']); $traitements = formidable_deserialize($row['traitements']);
if (isset($traitements['enregistrement']['resume_reponse'])) { if (isset($traitements['enregistrement']['resume_reponse'])) {
$modeles_resume[$id_formulaire] = $traitements['enregistrement']['resume_reponse']; $modeles_resume[$id_formulaire] = $traitements['enregistrement']['resume_reponse'];
} else { } else {
...@@ -288,3 +291,38 @@ function formidable_afficher_statut_si_different_de($statut,$not_in = array()) { ...@@ -288,3 +291,38 @@ function formidable_afficher_statut_si_different_de($statut,$not_in = array()) {
return ''; return '';
} }
/**
* Tente de déserialiser un texte
*
* Si le paramètre est un tableau, retourne le tableau,
* Si c'est une chaîne, tente de la désérialiser
* - d'abord depuis du JSON
* - puis depuis de la serialsation par défaut
* Si échec, retourne la chaîne
* retourne la chaîne.
*
* @filtre
*
* @param string|array $texte
* Le texte (possiblement sérializé) ou un tableau
* @return array|string
* Tableau, texte désérializé ou texte
**/
function formidable_deserialize($texte) {
// Cas 1. Deja tableau
if (is_array($texte)) {
return $texte;
}
// Cas 2. Tableau serializé en json
$tmp = json_decode($texte, true);
if (is_array($tmp)) {
return $tmp;
}
// Cas 3. Tableau serializé en PHP, si jamais ca echout on renvoie le texte
$tmp = @unserialize($texte);
if (is_array($tmp)) {
return $tmp;
}
return $texte;
}
...@@ -362,7 +362,8 @@ function formidable_crayons_verifier($flux) { ...@@ -362,7 +362,8 @@ function formidable_crayons_verifier($flux) {
['spip_formulaires_reponses_champs AS c', 'spip_formulaires_reponses AS r', 'spip_formulaires AS f'], ['spip_formulaires_reponses_champs AS c', 'spip_formulaires_reponses AS r', 'spip_formulaires AS f'],
["id_formulaires_reponses_champ = $id", 'r.id_formulaires_reponse = c.id_formulaires_reponse', 'f.id_formulaire = r.id_formulaire'] ["id_formulaires_reponses_champ = $id", 'r.id_formulaires_reponse = c.id_formulaires_reponse', 'f.id_formulaire = r.id_formulaire']
); );
$saisies = unserialize($data['saisies']); include_spip('formidable_fonctions');
$saisies = formidable_deserialize($data['saisies']);
$saisie = saisies_chercher($saisies, $data['nom']); $saisie = saisies_chercher($saisies, $data['nom']);
if (saisies_saisie_est_tabulaire($saisie)) { if (saisies_saisie_est_tabulaire($saisie)) {
$atrouver = 'content_'.$flux['args']['wid'].'_valeur'; $atrouver = 'content_'.$flux['args']['wid'].'_valeur';
......
...@@ -9,19 +9,20 @@ function formulaires_editer_formulaire_champs_charger($id_formulaire) { ...@@ -9,19 +9,20 @@ function formulaires_editer_formulaire_champs_charger($id_formulaire) {
$id_formulaire = intval($id_formulaire); $id_formulaire = intval($id_formulaire);
$contexte = array(); $contexte = array();
$contexte['id_formulaire'] = $id_formulaire; $contexte['id_formulaire'] = $id_formulaire;
include_spip('formidable_fonctions');
// On teste si le formulaire existe // On teste si le formulaire existe
if ($id_formulaire if ($id_formulaire
and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire) and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire)
and autoriser('editer', 'formulaire', $id_formulaire) and autoriser('editer', 'formulaire', $id_formulaire)
) { ) {
$saisies = unserialize($formulaire['saisies']); $saisies = formidable_deserialize($formulaire['saisies']);
// Est-ce qu'on restaure une révision ? // Est-ce qu'on restaure une révision ?
if ($id_version = _request('id_version')) { if ($id_version = _request('id_version')) {
include_spip('inc/revisions'); include_spip('inc/revisions');
$old = recuperer_version($id_formulaire, 'formulaire', $id_version); $old = recuperer_version($id_formulaire, 'formulaire', $id_version);
$saisies = unserialize($old['saisies']); $saisies = formidable_deserialize($old['saisies']);
} }
if (!is_array($saisies)) { if (!is_array($saisies)) {
$saisies = array(); $saisies = array();
...@@ -157,7 +158,7 @@ function formulaires_editer_formulaire_champs_charger($id_formulaire) { ...@@ -157,7 +158,7 @@ function formulaires_editer_formulaire_champs_charger($id_formulaire) {
function formulaires_editer_formulaire_champs_verifier($id_formulaire) { function formulaires_editer_formulaire_champs_verifier($id_formulaire) {
include_spip('inc/saisies'); include_spip('inc/saisies');
$erreurs = array(); $erreurs = array();
include_spip('formidable_fonctions');
// Si c'est pas une confirmation ni une annulation, ni un revert // Si c'est pas une confirmation ni une annulation, ni un revert
if (!_request('enregistrer_confirmation') if (!_request('enregistrer_confirmation')
and !($annulation = _request('annulation')) and !($annulation = _request('annulation'))
...@@ -182,7 +183,7 @@ function formulaires_editer_formulaire_champs_verifier($id_formulaire) { ...@@ -182,7 +183,7 @@ function formulaires_editer_formulaire_champs_verifier($id_formulaire) {
// Attention à s'assurer que tout les elements du tableau soit bien soit des tableaux, soit un string // Attention à s'assurer que tout les elements du tableau soit bien soit des tableaux, soit un string
// En effet, le md5 du formulaire_initial est calculé à partir de ce qui est passé au squelette // En effet, le md5 du formulaire_initial est calculé à partir de ce qui est passé au squelette
// Or dès qu'une valeur est passée à un squelette, elle est changé en string, à cause du mode de compilation (?) // Or dès qu'une valeur est passée à un squelette, elle est changé en string, à cause du mode de compilation (?)
$saisies_anciennes = unserialize($saisies_anciennes); $saisies_anciennes = formidable_deserialize($saisies_anciennes);
$saisies_anciennes_str = $saisies_anciennes; $saisies_anciennes_str = $saisies_anciennes;
array_walk_recursive($saisies_anciennes_str, 'formidable_array_walk_recursive_strval'); array_walk_recursive($saisies_anciennes_str, 'formidable_array_walk_recursive_strval');
$md5_saisies_anciennes = md5(serialize($saisies_anciennes_str)); $md5_saisies_anciennes = md5(serialize($saisies_anciennes_str));
...@@ -227,6 +228,7 @@ function formulaires_editer_formulaire_champs_traiter($id_formulaire) { ...@@ -227,6 +228,7 @@ function formulaires_editer_formulaire_champs_traiter($id_formulaire) {
include_spip('inc/saisies'); include_spip('inc/saisies');
$retours = array(); $retours = array();
$id_formulaire = intval($id_formulaire); $id_formulaire = intval($id_formulaire);
include_spip('formidable_fonctions');
if (_request('revert')) { if (_request('revert')) {
session_set("constructeur_formulaire_formidable_$id_formulaire"); session_set("constructeur_formulaire_formidable_$id_formulaire");
...@@ -238,7 +240,7 @@ function formulaires_editer_formulaire_champs_traiter($id_formulaire) { ...@@ -238,7 +240,7 @@ function formulaires_editer_formulaire_champs_traiter($id_formulaire) {
$saisies_nouvelles = session_get("constructeur_formulaire_formidable_$id_formulaire"); $saisies_nouvelles = session_get("constructeur_formulaire_formidable_$id_formulaire");
// On récupère les anciennes saisies // On récupère les anciennes saisies
$saisies_anciennes = unserialize(sql_getfetsel( $saisies_anciennes = formidable_deserialize(sql_getfetsel(
'saisies', 'saisies',
'spip_formulaires', 'spip_formulaires',
'id_formulaire = '.$id_formulaire 'id_formulaire = '.$id_formulaire
...@@ -255,7 +257,7 @@ function formulaires_editer_formulaire_champs_traiter($id_formulaire) { ...@@ -255,7 +257,7 @@ function formulaires_editer_formulaire_champs_traiter($id_formulaire) {
session_set("constructeur_formulaire_formidable_$id_formulaire"); session_set("constructeur_formulaire_formidable_$id_formulaire");
session_set("constructeur_formulaire_formidable_$id_formulaire".'_md5_formulaire_initial'); session_set("constructeur_formulaire_formidable_$id_formulaire".'_md5_formulaire_initial');
// On va chercher les traitements // On va chercher les traitements
$traitements = unserialize(sql_getfetsel( $traitements = formidable_deserialize(sql_getfetsel(
'traitements', 'traitements',
'spip_formulaires', 'spip_formulaires',
'id_formulaire = '.$id_formulaire 'id_formulaire = '.$id_formulaire
......
...@@ -11,19 +11,20 @@ include_spip('inc/formidable_fichiers'); ...@@ -11,19 +11,20 @@ include_spip('inc/formidable_fichiers');
function formulaires_editer_formulaire_traitements_charger($id_formulaire) { function formulaires_editer_formulaire_traitements_charger($id_formulaire) {
$contexte = array(); $contexte = array();
$id_formulaire = intval($id_formulaire); $id_formulaire = intval($id_formulaire);
include_spip('formidable_fonctions');
// On teste si le formulaire existe // On teste si le formulaire existe
if ($id_formulaire if ($id_formulaire
and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire) and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire)
and autoriser('editer', 'formulaire', $id_formulaire) and autoriser('editer', 'formulaire', $id_formulaire)
) { ) {
$traitements = unserialize($formulaire['traitements']); $traitements = formidable_deserialize($formulaire['traitements']);
if ($id_version = _request('id_version')) { if ($id_version = _request('id_version')) {
include_spip('inc/revisions'); include_spip('inc/revisions');
$old = recuperer_version($id_formulaire, 'formulaire', $id_version); $old = recuperer_version($id_formulaire, 'formulaire', $id_version);
$traitements = unserialize($old['traitements']); $traitements = formidable_deserialize($old['traitements']);
} }
$saisies = unserialize($formulaire['saisies']); $saisies = formidable_deserialize($formulaire['saisies']);
if (!is_array($traitements)) { if (!is_array($traitements)) {
$traitements = array(); $traitements = array();
} }
......
...@@ -40,6 +40,7 @@ function formulaires_exporter_formulaire_analyse_traiter($id_formulaire = 0) { ...@@ -40,6 +40,7 @@ function formulaires_exporter_formulaire_analyse_traiter($id_formulaire = 0) {
*/ */
function action_exporter_analyse_reponses($id_formulaire, $delim = ',') { function action_exporter_analyse_reponses($id_formulaire, $delim = ',') {
// on ne fait des choses seulements si le formulaire existe et qu'il a des enregistrements // on ne fait des choses seulements si le formulaire existe et qu'il a des enregistrements
include_spip('formidable_fonctions');
$ok = false; $ok = false;
if ($id_formulaire > 0 if ($id_formulaire > 0
and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire) and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire)
...@@ -50,10 +51,10 @@ function action_exporter_analyse_reponses($id_formulaire, $delim = ',') { ...@@ -50,10 +51,10 @@ function action_exporter_analyse_reponses($id_formulaire, $delim = ',') {
include_spip('inc/filtres'); include_spip('inc/filtres');
$reponses_completes = array(); $reponses_completes = array();
$saisies = saisies_lister_par_nom(unserialize($formulaire['saisies']), false); $saisies = saisies_lister_par_nom(formidable_deserialize($formulaire['saisies']), false);
// exclure les champs non analysés // exclure les champs non analysés
$traitement = unserialize($formulaire['traitements']); $traitement = formidable_deserialize($formulaire['traitements']);
foreach (explode('|', $traitement['enregistrement']['analyse_exclure_champs']) as $exclure) { foreach (explode('|', $traitement['enregistrement']['analyse_exclure_champs']) as $exclure) {
unset($saisies[$exclure]); unset($saisies[$exclure]);
} }
...@@ -69,9 +70,7 @@ function action_exporter_analyse_reponses($id_formulaire, $delim = ',') { ...@@ -69,9 +70,7 @@ function action_exporter_analyse_reponses($id_formulaire, $delim = ',') {
$valeurs = array(); $valeurs = array();
while ($r = sql_fetch($res)) { while ($r = sql_fetch($res)) {
$valeurs[$r['nom']][] = is_array(unserialize($r['valeur'])) $valeurs[$r['nom']][] = formidable_deserialize($r['valeur']);
? unserialize($r['valeur'])
: $r['valeur'];
} }
foreach ($saisies as $nom => $saisie) { foreach ($saisies as $nom => $saisie) {
...@@ -80,9 +79,7 @@ function action_exporter_analyse_reponses($id_formulaire, $delim = ',') { ...@@ -80,9 +79,7 @@ function action_exporter_analyse_reponses($id_formulaire, $delim = ',') {
'spip_formulaires_reponses_champs', 'spip_formulaires_reponses_champs',
'id_formulaires_reponse = '.intval($reponse['id_formulaires_reponse']).' and nom = '.sql_quote($nom) 'id_formulaires_reponse = '.intval($reponse['id_formulaires_reponse']).' and nom = '.sql_quote($nom)
); );
if (is_array(unserialize($valeur))) { $valeur = formidable_deserialize($valeur);
$valeur = unserialize($valeur);
}
$reponse_complete[] = formidable_analyser_saisie($saisie, $valeurs, 0, true); $reponse_complete[] = formidable_analyser_saisie($saisie, $valeurs, 0, true);
} }
......
...@@ -12,10 +12,11 @@ include_spip('inc/config'); ...@@ -12,10 +12,11 @@ include_spip('inc/config');
function formulaires_exporter_formulaire_reponses_charger($id_formulaire = 0) { function formulaires_exporter_formulaire_reponses_charger($id_formulaire = 0) {
$contexte = array(); $contexte = array();
$contexte['id_formulaire'] = intval($id_formulaire); $contexte['id_formulaire'] = intval($id_formulaire);
include_spip('formidable_fonctions');
// Vérifier si le formulaire dispose de champs "fichiers", pour proposer de ne pas les joindre à l'export // Vérifier si le formulaire dispose de champs "fichiers", pour proposer de ne pas les joindre à l'export
$saisies = sql_getfetsel('saisies','spip_formulaires','id_formulaire = '.intval($id_formulaire)); $saisies = sql_getfetsel('saisies','spip_formulaires','id_formulaire = '.intval($id_formulaire));
$saisies_par_type = saisies_lister_par_type(unserialize($saisies), false); $saisies_par_type = saisies_lister_par_type(formidable_deserialize($saisies), false);
if(isset($saisies_par_type['fichiers'])){ if(isset($saisies_par_type['fichiers'])){
$contexte['fichiers'] = true; $contexte['fichiers'] = true;
} }
...@@ -139,6 +140,7 @@ function preparer_formulaire_reponses($formulaire, $reponses, $statut_reponses, ...@@ -139,6 +140,7 @@ function preparer_formulaire_reponses($formulaire, $reponses, $statut_reponses,
include_spip('inc/saisies'); include_spip('inc/saisies');
include_spip('facteur_fonctions'); include_spip('facteur_fonctions');
include_spip('inc/filtres'); include_spip('inc/filtres');
include_spip('formidable_fonctions');
$id_formulaire = $formulaire['id_formulaire']; $id_formulaire = $formulaire['id_formulaire'];
$reponses_completes = array(); $reponses_completes = array();
...@@ -159,7 +161,7 @@ function preparer_formulaire_reponses($formulaire, $reponses, $statut_reponses, ...@@ -159,7 +161,7 @@ function preparer_formulaire_reponses($formulaire, $reponses, $statut_reponses,
$titres[] = _T('formidable:reponse_statut'); $titres[] = _T('formidable:reponse_statut');
} }
$saisies = saisies_lister_par_nom(unserialize($formulaire['saisies']), false); $saisies = saisies_lister_par_nom(formidable_deserialize($formulaire['saisies']), false);
foreach ($saisies as $nom => $saisie) { foreach ($saisies as $nom => $saisie) {
if ($saisie['saisie'] != 'explication') { // on exporte tous les champs sauf explications if ($saisie['saisie'] != 'explication') { // on exporte tous les champs sauf explications
$options = $saisie['options']; $options = $saisie['options'];
...@@ -213,7 +215,7 @@ function preparer_formulaire_reponses($formulaire, $reponses, $statut_reponses, ...@@ -213,7 +215,7 @@ function preparer_formulaire_reponses($formulaire, $reponses, $statut_reponses,
unset($_reponses_valeurs); unset($_reponses_valeurs);
// Ensuite tous les champs // Ensuite tous les champs
$tenter_unserialize = charger_fonction('tenter_unserialize', 'filtre/'); include_spip('formidable_fonctions');
// On parcourt chaque réponse // On parcourt chaque réponse
foreach ($reponses as $i => $reponse) { foreach ($reponses as $i => $reponse) {
...@@ -244,7 +246,7 @@ function preparer_formulaire_reponses($formulaire, $reponses, $statut_reponses, ...@@ -244,7 +246,7 @@ function preparer_formulaire_reponses($formulaire, $reponses, $statut_reponses,
// Saisie de type fichier ? // Saisie de type fichier ?
if (!$ignorer_fichiers && $saisie['saisie'] == 'fichiers') { if (!$ignorer_fichiers && $saisie['saisie'] == 'fichiers') {
$_valeurs = $tenter_unserialize($valeurs[$nom]); $_valeurs = formidable_deserialize($valeurs[$nom]);
//tester s'il y a des saisies parmi les fichiers //tester s'il y a des saisies parmi les fichiers
if (is_array($_valeurs) and $_valeurs) { if (is_array($_valeurs) and $_valeurs) {
$chemin = _DIR_FICHIERS_FORMIDABLE . 'formulaire_' . $id_formulaire . '/reponse_' . $reponse['id_formulaires_reponse']; $chemin = _DIR_FICHIERS_FORMIDABLE . 'formulaire_' . $id_formulaire . '/reponse_' . $reponse['id_formulaires_reponse'];
...@@ -296,15 +298,13 @@ function preparer_formulaire_reponses($formulaire, $reponses, $statut_reponses, ...@@ -296,15 +298,13 @@ function preparer_formulaire_reponses($formulaire, $reponses, $statut_reponses,
*/ */
function formidable_generer_valeur_texte_saisie($valeur, $saisie, $cle_ou_valeur = 'valeur') { function formidable_generer_valeur_texte_saisie($valeur, $saisie, $cle_ou_valeur = 'valeur') {
static $resultats = array(); static $resultats = array();
static $tenter_unserialize = null; include_spip('formidable_fonctions');
if (is_null($tenter_unserialize)) {
$tenter_unserialize = charger_fonction('tenter_unserialize', 'filtre/');
}
$hash = ($saisie['saisie'] . ':' . serialize($saisie['options']) . ':' . $valeur); $hash = ($saisie['saisie'] . ':' . serialize($saisie['options']) . ':' . $valeur);
if (!isset($resultats[$hash])) { if (!isset($resultats[$hash])) {
$valeur = $tenter_unserialize($valeur); $valeur = formidable_deserialize($valeur);
// Il faut éviter de passer par là… ça prend du temps… // Il faut éviter de passer par là… ça prend du temps…
$resultats[$hash] = facteur_mail_html2text( $resultats[$hash] = facteur_mail_html2text(
recuperer_fond( recuperer_fond(
......
...@@ -61,12 +61,12 @@ function formidable_id_formulaire($id) { ...@@ -61,12 +61,12 @@ function formidable_id_formulaire($id) {
**/ **/
function formulaires_formidable_saisies_dist($id, $valeurs = array(), $id_formulaires_reponse = false) { function formulaires_formidable_saisies_dist($id, $valeurs = array(), $id_formulaires_reponse = false) {
$saisies = array(); $saisies = array();
include_spip('formidable_fonctions');
if ( if (
$id_formulaire = formidable_id_formulaire($id) $id_formulaire = formidable_id_formulaire($id)
and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = ' . intval($id_formulaire)) and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = ' . intval($id_formulaire))
) { ) {
$saisies = unserialize($formulaire['saisies']); $saisies = formidable_deserialize($formulaire['saisies']);
// Si on est en train de réafficher les valeurs postées, // Si on est en train de réafficher les valeurs postées,
// ne pas afficher les saisies hidden // ne pas afficher les saisies hidden
...@@ -107,6 +107,7 @@ function formulaires_formidable_saisies_dist($id, $valeurs = array(), $id_formul ...@@ -107,6 +107,7 @@ function formulaires_formidable_saisies_dist($id, $valeurs = array(), $id_formul
**/ **/
function formulaires_formidable_charger_dist($id, $valeurs = array(), $options_appel = [], $deprecated_url_redirect = false, $deprecated_forcer_modif = false) { function formulaires_formidable_charger_dist($id, $valeurs = array(), $options_appel = [], $deprecated_url_redirect = false, $deprecated_forcer_modif = false) {
$contexte = array(); $contexte = array();
include_spip('formidable_fonctions');
// Retrocompatiblité // Retrocompatiblité
if (!is_array($options_appel)) { if (!is_array($options_appel)) {
...@@ -133,7 +134,7 @@ function formulaires_formidable_charger_dist($id, $valeurs = array(), $options_a ...@@ -133,7 +134,7 @@ function formulaires_formidable_charger_dist($id, $valeurs = array(), $options_a
// Est-ce que la personne a le droit de répondre ? // Est-ce que la personne a le droit de répondre ?
if (autoriser('repondre', 'formulaire', $formulaire['id_formulaire'], null, array('formulaire' => $formulaire))) { if (autoriser('repondre', 'formulaire', $formulaire['id_formulaire'], null, array('formulaire' => $formulaire))) {
$traitements = unserialize($formulaire['traitements']); $traitements = formidable_deserialize($formulaire['traitements']);
$contexte['mechantrobot'] = ''; $contexte['mechantrobot'] = '';
...@@ -204,7 +205,7 @@ function formulaires_formidable_charger_dist($id, $valeurs = array(), $options_a ...@@ -204,7 +205,7 @@ function formulaires_formidable_charger_dist($id, $valeurs = array(), $options_a
$contexte['formidable_afficher_apres'] = $formulaire['apres']; $contexte['formidable_afficher_apres'] = $formulaire['apres'];
// Si le formulaire via d'être posté, ne pas preremplir le nouveau formulaire avec les valeurs postées // Si le formulaire via d'être posté, ne pas preremplir le nouveau formulaire avec les valeurs postées
if ($formulaire['apres'] == 'formulaire' and _request('formidable_traiter_ok')) { if ($formulaire['apres'] == 'formulaire' and _request('formidable_traiter_ok')) {
foreach (saisies_lister_par_nom(unserialize($formulaire['saisies'])) as $nom => $valeur) { foreach (saisies_lister_par_nom(formidable_deserialize($formulaire['saisies'])) as $nom => $valeur) {
set_request($nom, null); set_request($nom, null);
} }
set_request('cvtupload_etapes_files', null); set_request('cvtupload_etapes_files', null);
...@@ -328,15 +329,16 @@ function formulaires_formidable_verifier_etape_dist($etape, $id, $valeurs = arra ...@@ -328,15 +329,16 @@ function formulaires_formidable_verifier_etape_dist($etape, $id, $valeurs = arra
*/ */
function formulaires_formidable_verifier_traitements($id, $valeurs = array(), $options_appel = [], $etapes = array(), $etape = null) { function formulaires_formidable_verifier_traitements($id, $valeurs = array(), $options_appel = [], $etapes = array(), $etape = null) {
$erreurs = array(); $erreurs = array();
$id_formulaires_reponse = $options_appel['id_formulaires_reponse'] ?? false; $id_formulaires_reponse = $options_appel['id_formulaires_reponse'] ?? false;
include_spip('formidable_fonctions');
if ( if (
$id_formulaire = formidable_id_formulaire($id) $id_formulaire = formidable_id_formulaire($id)
and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = ' . intval($id_formulaire)) and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = ' . intval($id_formulaire))
and $traitements = unserialize($formulaire['traitements']) and $traitements = formidable_deserialize($formulaire['traitements'])
and is_array($traitements) and is_array($traitements)
) { ) {
$saisies = formidable_deserialize($formulaire['saisies']);
// Pour chaque traitement choisi, on cherche s'il propose une fonction de vérification propre à ses besoins // Pour chaque traitement choisi, on cherche s'il propose une fonction de vérification propre à ses besoins
foreach ($traitements as $type_traitement => $options) { foreach ($traitements as $type_traitement => $options) {
if ($verifier_traitement = charger_fonction('verifier', "traiter/$type_traitement", true)) { if ($verifier_traitement = charger_fonction('verifier', "traiter/$type_traitement", true)) {
...@@ -392,6 +394,7 @@ function formulaires_formidable_verifier_traitements($id, $valeurs = array(), $o ...@@ -392,6 +394,7 @@ function formulaires_formidable_verifier_traitements($id, $valeurs = array(), $o
**/ **/
function formulaires_formidable_traiter_dist($id, $valeurs = [], $options_appel = [], $deprecated_url_redirect = false, $deprecated_forcer_modif = false) { function formulaires_formidable_traiter_dist($id, $valeurs = [], $options_appel = [], $deprecated_url_redirect = false, $deprecated_forcer_modif = false) {
$retours = array(); $retours = array();
include_spip('formidable_fonctions');
// Retrocompatiblité // Retrocompatiblité
if (!is_array($options_appel)) { if (!is_array($options_appel)) {
...@@ -417,8 +420,8 @@ function formulaires_formidable_traiter_dist($id, $valeurs = [], $options_appel ...@@ -417,8 +420,8 @@ function formulaires_formidable_traiter_dist($id, $valeurs = [], $options_appel
} }
$formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = ' . $id_formulaire); $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = ' . $id_formulaire);
$saisies = unserialize($formulaire['saisies']); $saisies = formidable_deserialize($formulaire['saisies']);
$traitements = unserialize($formulaire['traitements']); $traitements = formidable_deserialize($formulaire['traitements']);
// On met à null les (sous-)saisies masquées par afficher_si // On met à null les (sous-)saisies masquées par afficher_si
formidable_saisies_afficher_si_masquees_set_request_null(); formidable_saisies_afficher_si_masquees_set_request_null();
...@@ -659,6 +662,7 @@ function formulaires_formidable_traiter_dist($id, $valeurs = [], $options_appel ...@@ -659,6 +662,7 @@ function formulaires_formidable_traiter_dist($id, $valeurs = [], $options_appel
* Tableau des champs de type fichier * Tableau des champs de type fichier
**/ **/
function formulaires_formidable_fichiers($id, $valeurs = array(), $id_formulaires_reponse = false) { function formulaires_formidable_fichiers($id, $valeurs = array(), $id_formulaires_reponse = false) {
include_spip('formidable_fonctions');
// On peut donner soit un id soit un identifiant // On peut donner soit un id soit un identifiant
if (!$id_formulaire = formidable_id_formulaire($id)) { if (!$id_formulaire = formidable_id_formulaire($id)) {
return array(); return array();
...@@ -666,7 +670,7 @@ function formulaires_formidable_fichiers($id, $valeurs = array(), $id_formulaire ...@@ -666,7 +670,7 @@ function formulaires_formidable_fichiers($id, $valeurs = array(), $id_formulaire
// On cherche les saisies du formulaire // On cherche les saisies du formulaire
if ($saisies = sql_getfetsel('saisies', 'spip_formulaires', 'id_formulaire = ' . intval($id_formulaire))) { if ($saisies = sql_getfetsel('saisies', 'spip_formulaires', 'id_formulaire = ' . intval($id_formulaire))) {
$saisies = unserialize($saisies); $saisies = formidable_deserialize($saisies);
include_spip('inc/saisies_lister'); include_spip('inc/saisies_lister');
$saisies_fichiers = array_keys(saisies_lister_avec_type($saisies, 'fichiers')); $saisies_fichiers = array_keys(saisies_lister_avec_type($saisies, 'fichiers'));
return $saisies_fichiers; return $saisies_fichiers;
...@@ -687,13 +691,14 @@ function formulaires_formidable_fichiers($id, $valeurs = array(), $id_formulaire ...@@ -687,13 +691,14 @@ 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) {
include_spip('formidable_fonctions');
if ($id_formulaires_reponse == false) { if ($id_formulaires_reponse == false) {
$ok = true; $ok = true;
return $contexte; 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 = unserialize($contexte['_formidable']['saisies']); $saisies = formidable_deserialize($contexte['_formidable']['saisies']);
$saisies_fichiers = saisies_lister_avec_type($saisies, 'fichiers');// les saisies de type fichier $saisies_fichiers = saisies_lister_avec_type($saisies, 'fichiers');// les saisies de type fichier
$fichiers = array(); $fichiers = array();
$id_formulaire = $contexte['_formidable']['id_formulaire']; $id_formulaire = $contexte['_formidable']['id_formulaire'];
...@@ -708,7 +713,7 @@ function formidable_definir_contexte_avec_reponse($contexte, $id_formulaires_rep ...@@ -708,7 +713,7 @@ function formidable_definir_contexte_avec_reponse($contexte, $id_formulaires_rep
// On remplit le contexte avec les résultats précédents // On remplit le contexte avec les résultats précédents
foreach ($champs as $champ) { foreach ($champs as $champ) {
if (array_key_exists($champ['nom'], $saisies_fichiers)) { if (array_key_exists($champ['nom'], $saisies_fichiers)) {
$valeur= unserialize($champ['valeur']); $valeur= formidable_deserialize($champ['valeur']);
$nom = $champ['nom']; $nom = $champ['nom'];
$fichiers[$nom] = array(); $fichiers[$nom] = array();
$chemin = _DIR_FICHIERS_FORMIDABLE $chemin = _DIR_FICHIERS_FORMIDABLE
...@@ -722,7 +727,7 @@ function formidable_definir_contexte_avec_reponse($contexte, $id_formulaires_rep ...@@ -722,7 +727,7 @@ function formidable_definir_contexte_avec_reponse($contexte, $id_formulaires_rep
} }
} }
} else { } else {
$test_array = filtre_tenter_unserialize_dist($champ['valeur']); $test_array = formidable_deserialize($champ['valeur']);
$contexte[$champ['nom']] = is_array($test_array) ? $test_array : $champ['valeur']; $contexte[$champ['nom']] = is_array($test_array) ? $test_array : $champ['valeur'];
} }
} }
......
...@@ -6,13 +6,15 @@ if (!defined('_ECRIRE_INC_VERSION')) { ...@@ -6,13 +6,15 @@ if (!defined('_ECRIRE_INC_VERSION')) {
} }
include_spip('inc/formidable_fichiers'); include_spip('inc/formidable_fichiers');
/** /**
* Effacer régulièrement les enregistrements obsolètes * Effacer régulièrement les enregistrements obsolètes
**/ **/
function genie_formidable_effacer_enregistrements($t) { function genie_formidable_effacer_enregistrements($t) {
$res = sql_select('id_formulaire,traitements', 'spip_formulaires'); $res = sql_select('id_formulaire,traitements', 'spip_formulaires');
include_spip('formidable_fonctions');
while ($result = sql_fetch($res)) { while ($result = sql_fetch($res)) {
$traitements = unserialize($result['traitements']); $traitements = formidable_deserialize($result['traitements']);
$id_formulaire = $result['id_formulaire']; $id_formulaire = $result['id_formulaire'];
if (isset($traitements['enregistrement']['effacement']) if (isset($traitements['enregistrement']['effacement'])
and $traitements['enregistrement']['effacement'] == 'on' and $traitements['enregistrement']['effacement'] == 'on'
......
...@@ -26,8 +26,8 @@ ...@@ -26,8 +26,8 @@
[(#SET{item, [(#GET{item}|push_table_valeur{data, [(#ARRAY{name,titre, value,#TITRE, prompt,<:info_titre:>})]})]})] [(#SET{item, [(#GET{item}|push_table_valeur{data, [(#ARRAY{name,titre, value,#TITRE, prompt,<:info_titre:>})]})]})]
[(#SET{item, [(#GET{item}|push_table_valeur{data, [(#ARRAY{name,descriptif, value,#DESCRIPTIF, prompt,<:info_descriptif:>})], #DESCRIPTIF})]})] [(#SET{item, [(#GET{item}|push_table_valeur{data, [(#ARRAY{name,descriptif, value,#DESCRIPTIF, prompt,<:info_descriptif:>})], #DESCRIPTIF})]})]
[(#SET{item, [(#GET{item}|push_table_valeur{data, [(#ARRAY{name,message_retour, value,[(#MESSAGE_RETOUR|propre)], prompt,<:formidable:editer_message_ok:>})], #MESSAGE_RETOUR})]})] [(#SET{item, [(#GET{item}|push_table_valeur{data, [(#ARRAY{name,message_retour, value,[(#MESSAGE_RETOUR|propre)], prompt,<:formidable:editer_message_ok:>})], #MESSAGE_RETOUR})]})]
[(#SET{item, [(#GET{item}|push_table_valeur{data, [(#ARRAY{name,saisies, array,[(#SAISIES|unserialize)], prompt,<:formidable:champs:>})], #SAISIES})]})] [(#SET{item, [(#GET{item}|push_table_valeur{data, [(#ARRAY{name,saisies, array,[(#SAISIES|formidable_deserialize)], prompt,<:formidable:champs:>})], #SAISIES})]})]
[(#SET{item, [(#GET{item}|push_table_valeur{data, [(#ARRAY{name,traitements, array,[(#TRAITEMENTS|unserialize)], prompt,<:formidable:voir_traitements:>})], #TRAITEMENTS})]})] [(#SET{item, [(#GET{item}|push_table_valeur{data, [(#ARRAY{name,traitements, array,[(#TRAITEMENTS|formidable_deserialize)], prompt,<:formidable:voir_traitements:>})], #TRAITEMENTS})]})]
] ]
[(#REM) Des champs au contenu BRUT qui peut être modifié ] [(#REM) Des champs au contenu BRUT qui peut être modifié ]
......
...@@ -391,29 +391,6 @@ function analyser_saisie($saisie) { ...@@ -391,29 +391,6 @@ function analyser_saisie($saisie) {
} }
/**
* Tente de déserialiser un texte
*
* Si le paramètre est un tableau, retourne le tableau,
* Si c'est une chaîne, tente de la désérialiser, sinon
* retourne la chaîne.
*
* @filtre
*
* @param string|array $texte
* Le texte (possiblement sérializé) ou un tableau
* @return array|string
* Tableau, texte désérializé ou texte
**/
function filtre_tenter_unserialize_dist($texte) {
if (is_array($texte)) {
return $texte;
}
if ($tmp = @unserialize($texte)) {
return $tmp;
}
return $texte;
}
/** /**
...@@ -709,3 +686,4 @@ function formidable_array_walk_recursive_strval(&$value, $key) { ...@@ -709,3 +686,4 @@ function formidable_array_walk_recursive_strval(&$value, $key) {
$value = strval($value); $value = strval($value);
} }
} }
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<dd><:formidable:editer_message_ok:></dd> <dd><:formidable:editer_message_ok:></dd>
</dl> </dl>
[(#ENV{source}|!={sessions}|oui) [(#ENV{source}|!={sessions}|oui)
#SET{saisies,#SAISIES*|unserialize} #SET{saisies,#SAISIES*|formidable_deserialize}
] ]
</BOUCLE_formulaire> </BOUCLE_formulaire>
<BOUCLE_session(CONDITION) {si #GET{source}|=={session}}> <BOUCLE_session(CONDITION) {si #GET{source}|=={session}}>
......
<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> <BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
#SET{exclure_champs,#TRAITEMENTS|unserialize|table_valeur{enregistrement}|table_valeur{analyse_exclure_champs}|explode{|}} #SET{exclure_champs,#TRAITEMENTS|formidable_deserialize|table_valeur{enregistrement}|table_valeur{analyse_exclure_champs}|explode{|}}
<div class='formidable_analyse'> <div class='formidable_analyse'>
[(#REM) On fait un tableau qui contient toutes les réponses, classées par champ, sauf pour les champs qui sont à ne pas prendre en compte ] [(#REM) On fait un tableau qui contient toutes les réponses, classées par champ, sauf pour les champs qui sont à ne pas prendre en compte ]
#SET{valeurs,#ARRAY} #SET{valeurs,#ARRAY}
#SET{reponses_total,0} #SET{reponses_total,0}
<BOUCLE_reponses(FORMULAIRES_REPONSES){id_formulaire}> <BOUCLE_reponses(FORMULAIRES_REPONSES){id_formulaire}>
<BOUCLE_champs(FORMULAIRES_REPONSES_CHAMPS){id_formulaires_reponse}{nom ?= #ENV{nom}}{!nom IN #GET{exclure_champs}}> <BOUCLE_champs(FORMULAIRES_REPONSES_CHAMPS){id_formulaires_reponse}{nom ?= #ENV{nom}}{!nom IN #GET{exclure_champs}}>
#SET_MERGE{liste_valeurs, #GET{valeurs}|table_valeur{#NOM}|sinon{#ARRAY}, #ARRAY{0,#VALEUR|tenter_unserialize}} #SET_MERGE{liste_valeurs, #GET{valeurs}|table_valeur{#NOM}|sinon{#ARRAY}, #ARRAY{0,#VALEUR|formidable_deserialize}}
#SET_MERGE{valeurs, #ARRAY{#NOM,#GET{liste_valeurs}}} #SET_MERGE{valeurs, #ARRAY{#NOM,#GET{liste_valeurs}}}
</BOUCLE_champs> </BOUCLE_champs>
</BOUCLE_reponses> </BOUCLE_reponses>
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
<strong class='nombre_reponse'><:formidable:reponse_aucune:></strong> <strong class='nombre_reponse'><:formidable:reponse_aucune:></strong>
<//B_reponses> <//B_reponses>
<BOUCLE_saisies(DATA){source tableau, #SAISIES|unserialize|saisies_lister_par_nom}> <BOUCLE_saisies(DATA){source tableau, #SAISIES|formidable_deserialize|saisies_lister_par_nom}>
[(#VAL{saisie}|array_key_exists{#VALEUR}|oui) [(#VAL{saisie}|array_key_exists{#VALEUR}|oui)
[(#CLE|=={#ENV{nom,#CLE}}|oui) [(#CLE|=={#ENV{nom,#CLE}}|oui)
[(#CLE|in_array{#GET{exclure_champs}}|non) [(#CLE|in_array{#GET{exclure_champs}}|non)
......
<BOUCLE_reponse(FORMULAIRES_REPONSES){tout}{id_formulaires_reponse}> <BOUCLE_reponse(FORMULAIRES_REPONSES){tout}{id_formulaires_reponse}>
<BOUCLE_formulaire(FORMULAIRES){tout}{id_formulaire}> <BOUCLE_formulaire(FORMULAIRES){tout}{id_formulaire}>
#SET{saisies,#SAISIES|unserialize} #SET{saisies,#SAISIES|formidable_deserialize}
</BOUCLE_formulaire> </BOUCLE_formulaire>
#SET{valeurs,#ARRAY} #SET{valeurs,#ARRAY}
<BOUCLE_champs(FORMULAIRES_REPONSES_CHAMPS){id_formulaires_reponse}> <BOUCLE_champs(FORMULAIRES_REPONSES_CHAMPS){id_formulaires_reponse}>
#SET_MERGE{valeurs,#ARRAY{#NOM,#VALEUR|tenter_unserialize|formidable_ajouter_action_recuperer_fichier{#NOM,#GET{saisies},#ID_FORMULAIRE,#ID_FORMULAIRES_REPONSE}} #SET_MERGE{valeurs,#ARRAY{#NOM,#VALEUR|formidable_deserialize|formidable_ajouter_action_recuperer_fichier{#NOM,#GET{saisies},#ID_FORMULAIRE,#ID_FORMULAIRES_REPONSE}}
</BOUCLE_champs> </BOUCLE_champs>
#VOIR_SAISIES{#GET{saisies}, #GET{valeurs}} #VOIR_SAISIES{#GET{saisies}, #GET{valeurs}}
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
|concat{<:formidable:traitements_actives:>},'sobre traitements mini'})] |concat{<:formidable:traitements_actives:>},'sobre traitements mini'})]
<B_traitements> <B_traitements>
<ul class='spip'> <ul class='spip'>
<BOUCLE_traitements(DATA){source tableau, #TRAITEMENTS|unserialize|sinon{#ARRAY}}> <BOUCLE_traitements(DATA){source tableau, #TRAITEMENTS|formidable_deserialize|sinon{#ARRAY}}>
<li>[(#GET{traitements_disponibles}|table_valeur{#CLE}|table_valeur{titre})]</li> <li>[(#GET{traitements_disponibles}|table_valeur{#CLE}|table_valeur{titre})]</li>
</BOUCLE_traitements> </BOUCLE_traitements>
</ul> </ul>
......
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