Erreur de conception : il ne faut pas creer une transaction a chaque modif de l'objet...
[spip_souscriptions.git] / action / editer_souscription.php
1 <?php
2 if (!defined("_ECRIRE_INC_VERSION")) return;
3
4 function action_editer_souscription_dist($arg = null){
5
6         if (is_null($arg)){
7                 $securiser_action = charger_fonction('securiser_action', 'inc');
8                 $arg = $securiser_action();
9         }
10
11         if (!$id_souscription = intval($arg)){
12                 $id_souscription = souscription_inserer();
13         }
14
15         if (!$id_souscription)
16                 return array(0, '');
17
18         $err = souscription_modifier($id_souscription);
19
20         return array($id_souscription, $err);
21 }
22
23 /**
24  * Inserer une nouvelle souscription en en base.
25  *
26  * @return bool
27  */
28 function souscription_inserer(){
29
30         $champs = array('date_souscription' => date('Y-m-d H:i:s'));
31
32         // Envoyer aux plugins
33         $champs = pipeline('pre_insertion',
34                 array('args' => array('table' => 'spip_souscriptions'),
35                         'data' => $champs)
36         );
37
38         $id_souscription = sql_insertq("spip_souscriptions", $champs);
39
40         pipeline('post_insertion',
41                 array('args' => array('table' => 'spip_souscriptions',
42                         'id_objet' => $id_souscription),
43                         'data' => $champs)
44         );
45
46         return $id_souscription;
47 }
48
49 /**
50  * Modifier une souscription
51  *
52  * $c est un contenu (par defaut on prend le contenu via _request())
53  *
54  * @param int $id_souscription
55  * @param array|bool $set
56  * @return string
57  */
58 function souscription_modifier($id_souscription, $set = false){
59         include_spip('inc/modifier');
60
61         $c = collecter_requests(
62         // white list
63                 array('courriel',
64                         'recu_fiscal',
65                         'envoyer_info',
66                         'informer_comite_local',
67                         'prenom',
68                         'nom',
69                         'adresse',
70                         'code_postal',
71                         'ville',
72                         'telephone',
73                         'id_souscription_campagne',
74                         'id_transaction',
75                         'type_souscription'),
76                 // black list
77                 array('statut', 'date'),
78                 // donnees eventuellement fournies
79                 $set
80         );
81
82
83         /* Récupération du nom du pays */
84         $code_pays = _request('pays');
85         $pays = sql_getfetsel(sql_multi("nom", $GLOBALS['spip_lang']), 'spip_pays', "code='$code_pays'");
86
87         $c = array_merge($c,array("pays" => $pays));
88
89         if ($err = objet_modifier_champs('souscription', $id_souscription, array(), $c))
90                 return $err;
91 }