Changeset 88603 in spip-zone


Ignore:
Timestamp:
Apr 14, 2015, 12:47:57 PM (5 years ago)
Author:
kent1@…
Message:

utiliser $GLOBALSvisiteur_session? au lieu de global $auteur_session

Indentation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/formidable/trunk/traiter/enregistrement.php

    r85119 r88603  
    55
    66function traiter_enregistrement_dist($args, $retours){
    7     include_spip('inc/formidable');
    8     include_spip('base/abstract_sql');
    9     $options = $args['options'];
    10     $formulaire = $args['formulaire'];
    11     $id_formulaire = $args['id_formulaire'];
    12     $saisies = unserialize($formulaire['saisies']);
    13     $saisies = saisies_lister_par_nom($saisies);
     7        include_spip('inc/formidable');
     8        include_spip('base/abstract_sql');
     9        $options = $args['options'];
     10        $formulaire = $args['formulaire'];
     11        $id_formulaire = $args['id_formulaire'];
     12        $saisies = unserialize($formulaire['saisies']);
     13        $saisies = saisies_lister_par_nom($saisies);
    1414
    15     // La personne a-t-elle un compte ?
    16     global $auteur_session;
    17     $id_auteur = $auteur_session ? intval($auteur_session['id_auteur']) : 0;
     15        // La personne a-t-elle un compte ?
     16        $id_auteur = isset($GLOBALS['visiteur_session']) ? ($GLOBALS['visiteur_session']['id_auteur'] ? $GLOBALS['visiteur_session']['id_auteur'] : 0) : 0;
    1817
    19     // traitement de l'anonymisation
    20     if ($options['anonymiser'] == 'on') {
    21         // mod de l'id_auteur
    22         $variables_anonymisation =
    23             $GLOBALS['formulaires']['variables_anonymisation'][$options['anonymiser_variable']];
    24         $id = eval("return $variables_anonymisation;");
    25         $id_auteur = formidable_scramble($id, $id_formulaire);
    26     }
    27     // On cherche le cookie et sinon on le crée
    28     $nom_cookie = formidable_generer_nom_cookie($id_formulaire);
    29     if (isset($_COOKIE[$nom_cookie]))
    30         $cookie = $_COOKIE[$nom_cookie];
    31     else {
    32         include_spip("inc/acces");
    33         $cookie = creer_uniqid();
    34     }
     18        // traitement de l'anonymisation
     19        if ($options['anonymiser'] == 'on'){
     20                // mod de l'id_auteur
     21                $variables_anonymisation =
     22                        $GLOBALS['formulaires']['variables_anonymisation'][$options['anonymiser_variable']];
     23                $id = eval("return $variables_anonymisation;");
     24                $id_auteur = formidable_scramble($id, $id_formulaire);
     25        }
    3526
    36     // On regarde si c'est une modif d'une réponse existante
    37     $id_formulaires_reponse = $args['id_formulaires_reponse'];
     27        // On cherche le cookie et sinon on le crée
     28        $nom_cookie = formidable_generer_nom_cookie($id_formulaire);
     29        if (isset($_COOKIE[$nom_cookie]))
     30                $cookie = $_COOKIE[$nom_cookie];
     31        else {
     32                include_spip("inc/acces");
     33                $cookie = creer_uniqid();
     34        }
    3835
    39     // recherche d'éventuelles anciennes réponses
    40         $reponses = formidable_verifier_reponse_formulaire(
    41                         $id_formulaire,
    42                         $options['identification'],
    43                         ($options['anonymiser'] == 'on')
    44                                 ? $options['anonymiser_variable']
    45                                 : false
     36        // On regarde si c'est une modif d'une réponse existante
     37        $id_formulaires_reponse = $args['id_formulaires_reponse'];
     38
     39        // recherche d'éventuelles anciennes réponses
     40        $reponses = formidable_verifier_reponse_formulaire(
     41                        $id_formulaire,
     42                        $options['identification'],
     43                        ($options['anonymiser'] == 'on')
     44                                ? $options['anonymiser_variable']
     45                                : false
    4646        );
    47        
    48     // pas d'id_formulaires_reponse : on cherche une éventuelle réponse en base
    49     if ($id_formulaires_reponse == false) {
    50         $traitements_formulaire = unserialize($formulaire['traitements']);
    51        
    52         if (isset($traitements_formulaire['enregistrement'])) {
    53                 $options =  $traitements_formulaire['enregistrement'];
    5447
    55                 if (isset($options['multiple']) && $options['multiple'] == ''
    56                                 && isset($options['modifiable']) && $options['modifiable'] == 'on'
     48        // pas d'id_formulaires_reponse : on cherche une éventuelle réponse en base
     49        if ($id_formulaires_reponse == false) {
     50                $traitements_formulaire = unserialize($formulaire['traitements']);
     51
     52                if (isset($traitements_formulaire['enregistrement'])) {
     53                        $options =  $traitements_formulaire['enregistrement'];
     54
     55                        if (isset($options['multiple']) && $options['multiple'] == ''
     56                                        && isset($options['modifiable']) && $options['modifiable'] == 'on'
    5757                                        && is_array($reponses) && count($reponses) > 0) {
    58                         $id_formulaires_reponse = max($reponses);
    59                 }
    60         }
    61     } else {
    62         // vérifier que l'auteur est bien l'auteur de la réponse, si non, on invalide l'id_formulaires_reponse
    63         if (in_array($id_formulaires_reponse, $reponses) == false) $id_formulaires_reponse = false;
    64     }
    65    
    66     // Si la moderation est a posteriori ou que la personne est un boss, on publie direct
    67     if ($options['moderation'] == 'posteriori' or autoriser('instituer', 'formulaires_reponse', $id_formulaires_reponse, null, array('id_formulaire'=>$id_formulaire, 'nouveau_statut'=>'publie')))
    68         $statut='publie';
    69     else
    70         $statut = 'prop';
     58                                $id_formulaires_reponse = max($reponses);
     59                        }
     60                }
     61        } else {
     62                // vérifier que l'auteur est bien l'auteur de la réponse, si non, on invalide l'id_formulaires_reponse
     63                if (in_array($id_formulaires_reponse, $reponses) == false) $id_formulaires_reponse = false;
     64        }
     65       
     66        // Si la moderation est a posteriori ou que la personne est un boss, on publie direct
     67        if ($options['moderation'] == 'posteriori' or autoriser('instituer', 'formulaires_reponse', $id_formulaires_reponse, null, array('id_formulaire'=>$id_formulaire, 'nouveau_statut'=>'publie')))
     68                $statut='publie';
     69        else
     70                $statut = 'prop';
    7171
    72     // Si ce n'est pas une modif d'une réponse existante, on crée d'abord la réponse
    73     if (!$id_formulaires_reponse){
    74         $id_formulaires_reponse = sql_insertq(
    75             'spip_formulaires_reponses',
    76             array(
    77                 'id_formulaire' => $id_formulaire,
    78                 'id_auteur' => $id_auteur,
    79                 'cookie' => $cookie,
    80                 'ip' => $args['options']['ip'] == 'on' ? $GLOBALS['ip'] : '',
    81                 'date' => 'NOW()',
    82                 'statut' => $statut
    83             )
    84         );
    85         // Si on a pas le droit de répondre plusieurs fois ou que les réponses seront modifiables, il faut poser un cookie
    86         if (!$options['multiple'] or $options['modifiable']){
    87             include_spip("inc/cookie");
    88             // Expiration dans 30 jours
    89             spip_setcookie($nom_cookie, $_COOKIE[$nom_cookie] = $cookie, time() + 30 * 24 * 3600);
    90         }
    91     } else {
    92         // simple mise à jour du champ maj de la table spip_formulaires_reponses
    93         sql_updateq(
    94                 'spip_formulaires_reponses',
    95                 array('maj' => 'NOW()'),
    96                 "id_formulaires_reponse = $id_formulaires_reponse"
    97         );
    98     }
     72        // Si ce n'est pas une modif d'une réponse existante, on crée d'abord la réponse
     73        if (!$id_formulaires_reponse){
     74                $id_formulaires_reponse = sql_insertq(
     75                        'spip_formulaires_reponses',
     76                        array(
     77                                'id_formulaire' => $id_formulaire,
     78                                'id_auteur' => $id_auteur,
     79                                'cookie' => $cookie,
     80                                'ip' => $args['options']['ip'] == 'on' ? $GLOBALS['ip'] : '',
     81                                'date' => 'NOW()',
     82                                'statut' => $statut
     83                        )
     84                );
     85                // Si on a pas le droit de répondre plusieurs fois ou que les réponses seront modifiables, il faut poser un cookie
     86                if (!$options['multiple'] or $options['modifiable']){
     87                        include_spip("inc/cookie");
     88                        // Expiration dans 30 jours
     89                        spip_setcookie($nom_cookie, $_COOKIE[$nom_cookie] = $cookie, time() + 30 * 24 * 3600);
     90                }
     91        } else {
     92                // simple mise à jour du champ maj de la table spip_formulaires_reponses
     93                sql_updateq(
     94                        'spip_formulaires_reponses',
     95                        array('maj' => 'NOW()'),
     96                        "id_formulaires_reponse = $id_formulaires_reponse"
     97                );
     98        }
    9999
    100     // Si l'id n'a pas été créé correctement alors erreur
    101     if (!($id_formulaires_reponse > 0)){
    102         $retours['message_erreur'] .= "\n<br/>"._T('formidable:traiter_enregistrement_erreur_base');
    103     }
    104     // Sinon on continue à mettre à jour
    105     else{
    106         $champs = array();
    107         $insertions = array();
    108         foreach($saisies as $nom => $saisie){
    109             // On ne prend que les champs qui ont effectivement été envoyés par le formulaire
    110             if (($valeur = _request($nom)) !== null){
    111                 $champs[] = $nom;
    112                 $insertions[] = array(
    113                     'id_formulaires_reponse' => $id_formulaires_reponse,
    114                     'nom' => $nom,
    115                     'valeur' => is_array($valeur) ? serialize($valeur) : $valeur
    116                 );
    117             }
    118         }
     100        // Si l'id n'a pas été créé correctement alors erreur
     101        if (!($id_formulaires_reponse > 0)){
     102                $retours['message_erreur'] .= "\n<br/>"._T('formidable:traiter_enregistrement_erreur_base');
     103        }
     104        // Sinon on continue à mettre à jour
     105        else{
     106                $champs = array();
     107                $insertions = array();
     108                foreach($saisies as $nom => $saisie){
     109                        // On ne prend que les champs qui ont effectivement été envoyés par le formulaire
     110                        if (($valeur = _request($nom)) !== null){
     111                                $champs[] = $nom;
     112                                $insertions[] = array(
     113                                        'id_formulaires_reponse' => $id_formulaires_reponse,
     114                                        'nom' => $nom,
     115                                        'valeur' => is_array($valeur) ? serialize($valeur) : $valeur
     116                                );
     117                        }
     118                }
    119119
    120         // S'il y a bien des choses à modifier
    121         if ($champs){
    122             // On supprime d'abord les champs
    123             sql_delete(
    124                 'spip_formulaires_reponses_champs',
    125                 array(
    126                     'id_formulaires_reponse = '.$id_formulaires_reponse,
    127                     sql_in('nom', $champs)
    128                 )
    129             );
     120                // S'il y a bien des choses à modifier
     121                if ($champs){
     122                        // On supprime d'abord les champs
     123                        sql_delete(
     124                                'spip_formulaires_reponses_champs',
     125                                array(
     126                                        'id_formulaires_reponse = '.$id_formulaires_reponse,
     127                                        sql_in('nom', $champs)
     128                                )
     129                        );
    130130
    131             // Puis on insère les nouvelles valeurs
    132             sql_insertq_multi(
    133                 'spip_formulaires_reponses_champs',
    134                 $insertions
    135             );
    136         }
    137         if (!isset($retours['message_ok'])) { $retours['message_ok'] = ''; }
    138         $retours['message_ok'] .= "\n"._T('formidable:traiter_enregistrement_message_ok');
    139         $retours['id_formulaires_reponse'] = $id_formulaires_reponse;
    140     }
     131                        // Puis on insère les nouvelles valeurs
     132                        sql_insertq_multi(
     133                                'spip_formulaires_reponses_champs',
     134                                $insertions
     135                        );
     136                }
     137                if (!isset($retours['message_ok'])) { $retours['message_ok'] = ''; }
     138                $retours['message_ok'] .= "\n"._T('formidable:traiter_enregistrement_message_ok');
     139                $retours['id_formulaires_reponse'] = $id_formulaires_reponse;
     140        }
    141141
    142     // noter qu'on a deja fait le boulot, pour ne pas risquer double appel
    143     $retours['traitements']['enregistrement'] = true;
    144     return $retours;
     142        // noter qu'on a deja fait le boulot, pour ne pas risquer double appel
     143        $retours['traitements']['enregistrement'] = true;
     144        return $retours;
    145145}
    146146
    147147function traiter_enregistrement_update_dist($id_formulaire, $traitement, $saisies_anciennes, $saisies_nouvelles){
    148     include_spip('inc/saisies');
    149     include_spip('base/abstract_sql');
    150     $comparaison = saisies_comparer($saisies_anciennes, $saisies_nouvelles);
     148        include_spip('inc/saisies');
     149        include_spip('base/abstract_sql');
     150        $comparaison = saisies_comparer($saisies_anciennes, $saisies_nouvelles);
    151151
    152     // Si des champs ont été supprimés, il faut supprimer les réponses à ces champs
    153     if ($comparaison['supprimees']){
    154         // On récupère les réponses du formulaire
    155         $reponses = sql_allfetsel(
    156             'id_formulaires_reponse',
    157             'spip_formulaires_reponses',
    158             'id_formulaire = '.$id_formulaire
    159         );
    160         $reponses = array_map('reset', $reponses);
     152        // Si des champs ont été supprimés, il faut supprimer les réponses à ces champs
     153        if ($comparaison['supprimees']){
     154                // On récupère les réponses du formulaire
     155                $reponses = sql_allfetsel(
     156                        'id_formulaires_reponse',
     157                        'spip_formulaires_reponses',
     158                        'id_formulaire = '.$id_formulaire
     159                );
     160                $reponses = array_map('reset', $reponses);
    161161
    162         // Tous les noms de champs à supprimer
    163         $noms = array_keys($comparaison['supprimees']);
     162                // Tous les noms de champs à supprimer
     163                $noms = array_keys($comparaison['supprimees']);
    164164
    165         // On supprime
    166         sql_delete(
    167             'spip_formulaires_reponses_champs',
    168             array(
    169                 sql_in('id_formulaires_reponse', $reponses),
    170                 sql_in('nom', $noms)
    171             )
    172         );
    173     }
     165                // On supprime
     166                sql_delete(
     167                        'spip_formulaires_reponses_champs',
     168                        array(
     169                                sql_in('id_formulaires_reponse', $reponses),
     170                                sql_in('nom', $noms)
     171                        )
     172                );
     173        }
    174174}
    175175
Note: See TracChangeset for help on using the changeset viewer.