Changeset 65544 in spip-zone


Ignore:
Timestamp:
Sep 5, 2012, 7:36:28 AM (7 years ago)
Author:
marcimat@…
Message:

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

Location:
_plugins_/formidable/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/formidable/trunk/formulaires/formidable.php

    r51687 r65544  
    103103                $contexte['message_erreur'] = _T('formidable:erreur_inexistant');
    104104        }
    105        
     105        if (!isset($contexte['_hidden'])) {
     106                $contexte['_hidden'] = '';
     107        }
    106108        $contexte['_hidden'] .= "\n".'<input type="hidden" name="formidable_afficher_apres'/*.$formulaire['id_formulaire']*/.'" value="'.$formulaire['apres'].'"/>';// marche pas
    107109       
  • _plugins_/formidable/trunk/inc/formidable.php

    r38690 r65544  
    4545        $fichier = find_in_path("traiter/$type_traitement.yaml");
    4646        $traitement = yaml_decode_file($fichier);
    47         if (is_array($traitement)){
     47
     48        if (is_array($traitement)) {
     49                $traitement += array('titre' => '', 'description' => '', 'icone' => '');
    4850                $traitement['titre'] = $traitement['titre'] ? _T_ou_typo($traitement['titre']) : $type_traitement;
    4951                $traitement['description'] = $traitement['description'] ? _T_ou_typo($traitement['description']) : '';
     
    99101        global $auteur_session;
    100102        $id_auteur = $auteur_session ? intval($auteur_session['id_auteur']) : 0;
    101         $cookie = $_COOKIE[formidable_generer_nom_cookie($id_formulaire)];
     103        $nom_cookie = formidable_generer_nom_cookie($id_formulaire);
     104        $cookie = isset($_COOKIE[$nom_cookie]) ? $_COOKIE[$nom_cookie] : false;
    102105
    103106        // ni cookie ni id, on ne peut rien faire
     
    149152function formidable_analyser_saisie($saisie, $valeurs=array(), $reponses_total=0){
    150153        // Si le paramètre n'est pas bon ou que c'est un conteneur, on génère du vide
    151         if (!is_array($saisie) or $saisie['saisies'])
     154        if (!is_array($saisie) or (isset($saisie['saisies']) and $saisie['saisies']))
    152155                return '';
    153156       
     
    181184}
    182185
     186
     187/**
     188 * Tente de déserialiser un texte
     189 *
     190 * Si le paramètre est un tableau, retourne le tableau,
     191 * Si c'est une chaîne, tente de la désérialiser, sinon
     192 * retourne la chaîne.
     193 *
     194 * @filtre tenter_unserialize
     195 *
     196 * @param string|array $texte
     197 *     Le texte (possiblement sérializé) ou un tableau
     198 * @return array|string
     199 *     Tableau, texte désérializé ou texte
     200**/
     201function filtre_tenter_unserialize_dist($texte) {
     202        if (is_array($texte)) {
     203                return $texte;
     204        }
     205        if ($tmp = @unserialize($texte)) {
     206                return $tmp;
     207        }
     208        return $texte;
     209}
     210
    183211?>
  • _plugins_/formidable/trunk/modeles/formulaire_analyse.html

    r36638 r65544  
    55<BOUCLE_reponses(FORMULAIRES_REPONSES){id_formulaire}>
    66<BOUCLE_champs(FORMULAIRES_REPONSES_CHAMPS){id_formulaires_reponse}>
    7 #SET{test_array, #VALEUR|unserialize}
    8 #SET{valeur, #GET{test_array}|is_array|?{#GET{test_array},#VALEUR}}
    9 #SET_MERGE{liste_valeurs, #GET{valeurs}|table_valeur{#NOM}|sinon{#ARRAY}, #ARRAY{0, #GET{valeur}}}
     7#SET_MERGE{liste_valeurs, #GET{valeurs}|table_valeur{#NOM}|sinon{#ARRAY}, #ARRAY{0,#VALEUR|tenter_unserialize}}
    108#SET_MERGE{valeurs, #ARRAY{#NOM,#GET{liste_valeurs}}}
    119</BOUCLE_champs>
  • _plugins_/formidable/trunk/modeles/formulaires_reponse.html

    r37324 r65544  
    33#SET{valeurs,#ARRAY}
    44<BOUCLE_champs(FORMULAIRES_REPONSES_CHAMPS){id_formulaires_reponse}>
    5 #SET{test_array,#VALEUR|unserialize}
    6 #SET{valeur,#GET{test_array}|is_array|?{#GET{test_array},#VALEUR}}
    7 #SET_MERGE{valeurs,#ARRAY{#NOM,#GET{valeur}}}
     5#SET_MERGE{valeurs,#ARRAY{#NOM,#VALEUR|tenter_unserialize}}
    86</BOUCLE_champs>
    97
Note: See TracChangeset for help on using the changeset viewer.