Browse Source

Notices PHP lors de l'utilisation de Formidable. Ajout d'un filtre pour désérialiser si possible sans générer d'erreur

svn/root/tags/v1.1.2
marcimat@rezo.net 10 years ago
parent
commit
ac9b37371b
  1. 6
      formulaires/formidable.php
  2. 34
      inc/formidable.php
  3. 4
      modeles/formulaire_analyse.html
  4. 4
      modeles/formulaires_reponse.html

6
formulaires/formidable.php

@ -102,7 +102,9 @@ function formulaires_formidable_charger($id_formulaire, $valeurs=array(), $id_fo
$contexte['editable'] = false;
$contexte['message_erreur'] = _T('formidable:erreur_inexistant');
}
if (!isset($contexte['_hidden'])) {
$contexte['_hidden'] = '';
}
$contexte['_hidden'] .= "\n".'<input type="hidden" name="formidable_afficher_apres'/*.$formulaire['id_formulaire']*/.'" value="'.$formulaire['apres'].'"/>';// marche pas
$contexte['formidable_afficher_apres']=$formulaire['apres'];
@ -212,4 +214,4 @@ function formidable_definir_contexte_avec_reponse($contexte, $id_formulaires_rep
return $contexte;
}
?>
?>

34
inc/formidable.php

@ -44,7 +44,9 @@ function traitements_charger_infos($type_traitement){
include_spip('inc/yaml');
$fichier = find_in_path("traiter/$type_traitement.yaml");
$traitement = yaml_decode_file($fichier);
if (is_array($traitement)){
if (is_array($traitement)) {
$traitement += array('titre' => '', 'description' => '', 'icone' => '');
$traitement['titre'] = $traitement['titre'] ? _T_ou_typo($traitement['titre']) : $type_traitement;
$traitement['description'] = $traitement['description'] ? _T_ou_typo($traitement['description']) : '';
$traitement['icone'] = $traitement['icone'] ? find_in_path($traitement['icone']) : '';
@ -98,7 +100,8 @@ function formidable_generer_nom_cookie($id_formulaire){
function formidable_verifier_reponse_formulaire($id_formulaire, $choix_identification='cookie'){
global $auteur_session;
$id_auteur = $auteur_session ? intval($auteur_session['id_auteur']) : 0;
$cookie = $_COOKIE[formidable_generer_nom_cookie($id_formulaire)];
$nom_cookie = formidable_generer_nom_cookie($id_formulaire);
$cookie = isset($_COOKIE[$nom_cookie]) ? $_COOKIE[$nom_cookie] : false;
// ni cookie ni id, on ne peut rien faire
if (!$cookie and !$id_auteur) {
@ -148,7 +151,7 @@ function formidable_verifier_reponse_formulaire($id_formulaire, $choix_identific
*/
function formidable_analyser_saisie($saisie, $valeurs=array(), $reponses_total=0){
// Si le paramètre n'est pas bon ou que c'est un conteneur, on génère du vide
if (!is_array($saisie) or $saisie['saisies'])
if (!is_array($saisie) or (isset($saisie['saisies']) and $saisie['saisies']))
return '';
$contexte = array('reponses_total'=>$reponses_total);
@ -180,4 +183,29 @@ function formidable_analyser_saisie($saisie, $valeurs=array(), $reponses_total=0
);
}
/**
* 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 tenter_unserialize
*
* @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;
}
?>

4
modeles/formulaire_analyse.html

@ -4,9 +4,7 @@
#SET{valeurs,#ARRAY}
<BOUCLE_reponses(FORMULAIRES_REPONSES){id_formulaire}>
<BOUCLE_champs(FORMULAIRES_REPONSES_CHAMPS){id_formulaires_reponse}>
#SET{test_array, #VALEUR|unserialize}
#SET{valeur, #GET{test_array}|is_array|?{#GET{test_array},#VALEUR}}
#SET_MERGE{liste_valeurs, #GET{valeurs}|table_valeur{#NOM}|sinon{#ARRAY}, #ARRAY{0, #GET{valeur}}}
#SET_MERGE{liste_valeurs, #GET{valeurs}|table_valeur{#NOM}|sinon{#ARRAY}, #ARRAY{0,#VALEUR|tenter_unserialize}}
#SET_MERGE{valeurs, #ARRAY{#NOM,#GET{liste_valeurs}}}
</BOUCLE_champs>
</BOUCLE_reponses>

4
modeles/formulaires_reponse.html

@ -2,9 +2,7 @@
#SET{valeurs,#ARRAY}
<BOUCLE_champs(FORMULAIRES_REPONSES_CHAMPS){id_formulaires_reponse}>
#SET{test_array,#VALEUR|unserialize}
#SET{valeur,#GET{test_array}|is_array|?{#GET{test_array},#VALEUR}}
#SET_MERGE{valeurs,#ARRAY{#NOM,#GET{valeur}}}
#SET_MERGE{valeurs,#ARRAY{#NOM,#VALEUR|tenter_unserialize}}
</BOUCLE_champs>
<BOUCLE_formulaire(FORMULAIRES){id_formulaire}>

Loading…
Cancel
Save