source: spip-zone/_plugins_/formidable_participation/trunk/formidableparticipation_pipelines.php @ 115206

Last change on this file since 115206 was 115206, checked in by maieul@…, 2 years ago

lorsqu'on change le statut d'une réponse, changer la réponse dans la table spip_evenements_inscriptions

  • Property svn:executable set to *
File size: 3.1 KB
Line 
1<?php
2/**
3 * Utilisations de pipelines par Formulaires de participation
4 *
5 * @plugin     Formulaires de participation
6 * @copyright  2014
7 * @author     Anne-lise Martenot
8 * @licence    GNU/GPL
9 * @package    SPIP\Formidableparticipation\Pipelines
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) return;
13
14/**
15 * Traiter les formulaires de participation
16 * @param array $flux
17 * @return array
18 */
19function formidableparticipation_traiter_formidableparticipation($flux){
20        //au moins une reponse et un email
21        if ($flux['args']['choix_participation'] && $flux['args']['email']){
22                $id_evenement = $flux['args']['id_evenement'];
23                $reponse = $flux['args']['choix_participation'];
24                $email = $flux['args']['email'];
25                $id_auteur = $flux['args']['id_auteur'];
26                $nom = $flux['args']['nom'];
27                $prenom = $flux['args']['prenom'];
28                $id_formulaires_reponse = $flux['args']['id_formulaires_reponse'];
29                if($flux['args']['organisme']) $organisme = '('.$flux['args']['organisme'].')';
30                $nom = "$prenom $nom $organisme";
31
32                $champs = array(
33                        'id_auteur'=>$id_auteur,
34                        'nom'=>$nom,
35                        'email'=>$email,
36                        'reponse'=>$reponse,
37                        'id_evenement'=>$id_evenement,
38                        'date'=>date('Y-m-d H:i:s'),
39                        'id_formulaires_reponse' => $id_formulaires_reponse
40                );
41
42                // si evenement, on insere le participant et ses données
43                // et on laisse le traitement du nombre de places à la charge du webmestre et du squelette evenements
44                if(isset($id_evenement)){
45                                //on ne logue pas l'auteur, si l'email sur le même id_evenement existe, mettre à jour, sauf si on demande explictement de permettre à un même email de s'inscrire plusieurs fois
46                                if (sql_fetsel('reponse','spip_evenements_participants','id_evenement='.intval($id_evenement)." AND email=".sql_quote($email)) and !$flux['args']['autoriser_email_multiple']){
47                                        sql_updateq("spip_evenements_participants",$champs,'id_evenement='.intval($id_evenement).' AND email='.sql_quote($email));
48                                }
49                                else{
50                                        sql_insertq("spip_evenements_participants", $champs);
51                                }
52                }
53
54                spip_log("pipeline evenement $id_evenement pour $email et id_auteur=$id_auteur et id_formulaires_reponse=$id_formulaires_reponse et reponse=$reponse","formidable_participation");
55        }
56
57   return $flux;
58}
59
60/**
61 * Lorsqu'une réponse est passée en refusée ou poubelle, supprimer l'inscription correspondant.
62 * Réciproquement, lorsqu'une réponse est passée en validée, créer une inscription
63 * @param array $flux
64 * @return array $flux
65 **/
66function formidableparticipation_post_edition($flux) {
67        if (isset($flux['args']['table'])
68                and $flux['args']['table'] == 'spip_formulaires_reponses'
69                and $flux['args']['action'] == 'instituer'
70                and $id_formulaires_reponse = $flux['args']['id_objet']
71                and isset($flux['data']['statut'])
72                and $statut = $flux['data']['statut']
73                and $statut_ancien = $flux['args']['statut_ancien']
74                and $statut != $statut_ancien
75        ) {
76                if ($statut == 'publie') {
77                        $champs = array('reponse' => 'oui');
78                } else {
79                        $champs = array('reponse' => 'non');
80                }
81                sql_updateq("spip_evenements_participants",$champs,'id_formulaires_reponse='.intval($id_formulaires_reponse));
82        }
83        return $flux;
84}
85
Note: See TracBrowser for help on using the repository browser.