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

Last change on this file since 117625 was 117625, checked in by maieul@…, 6 months ago

Nouvelles option, permettant d'inscrire une personne plusieures fois à un même évènement (par ex. pour un groupe) en fonction du nombre indiqué dans un champ

  • Property svn:executable set to *
File size: 3.2 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                $nb_inscriptions = $flux['args']['nb_inscriptions'];
29                $id_formulaires_reponse = $flux['args']['id_formulaires_reponse'];
30                if($flux['args']['organisme']) $organisme = '('.$flux['args']['organisme'].')';
31                $nom = "$prenom $nom $organisme";
32
33                $champs = array(
34                        'id_auteur'=>$id_auteur,
35                        'nom'=>$nom,
36                        'email'=>$email,
37                        'reponse'=>$reponse,
38                        'id_evenement'=>$id_evenement,
39                        'date'=>date('Y-m-d H:i:s'),
40                        'id_formulaires_reponse' => $id_formulaires_reponse
41                );
42
43                // si evenement, on insere le participant et ses données
44                // et on laisse le traitement du nombre de places à la charge du webmestre et du squelette evenements
45                if(isset($id_evenement)){
46                                $i = 0;
47                                while ($i < $nb_inscriptions) {
48                                        $i++;
49                                        //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
50                                        if (sql_fetsel('reponse','spip_evenements_participants','id_evenement='.intval($id_evenement)." AND email=".sql_quote($email)) and !$flux['args']['autoriser_email_multiple']){
51                                                sql_updateq("spip_evenements_participants",$champs,'id_evenement='.intval($id_evenement).' AND email='.sql_quote($email));
52                                        }
53                                        else{
54                                                sql_insertq("spip_evenements_participants", $champs);
55                                        }
56                                }
57                }
58
59                spip_log("pipeline evenement $id_evenement pour $email et id_auteur=$id_auteur et id_formulaires_reponse=$id_formulaires_reponse et reponse=$reponse ($nb_inscriptions fois)","formidable_participation");
60        }
61
62   return $flux;
63}
64
65/**
66 * Lorsqu'une réponse est passée en refusée ou poubelle, supprimer l'inscription correspondant.
67 * Réciproquement, lorsqu'une réponse est passée en validée, créer une inscription
68 * @param array $flux
69 * @return array $flux
70 **/
71function formidableparticipation_post_edition($flux) {
72        if (isset($flux['args']['table'])
73                and $flux['args']['table'] == 'spip_formulaires_reponses'
74                and $flux['args']['action'] == 'instituer'
75                and $id_formulaires_reponse = $flux['args']['id_objet']
76                and isset($flux['data']['statut'])
77                and $statut = $flux['data']['statut']
78                and $statut_ancien = $flux['args']['statut_ancien']
79                and $statut != $statut_ancien
80        ) {
81                if ($statut == 'publie') {
82                        $champs = array('reponse' => 'oui');
83                } else {
84                        $champs = array('reponse' => 'non');
85                }
86                sql_updateq("spip_evenements_participants",$champs,'id_formulaires_reponse='.intval($id_formulaires_reponse));
87        }
88        return $flux;
89}
90
Note: See TracBrowser for help on using the repository browser.