source: spip-zone/_plugins_/souhaits/trunk/formulaires/offrir_souhait.php @ 107875

Last change on this file since 107875 was 107875, checked in by rastapopoulos@…, 3 years ago

chaine déplacé

File size: 6.2 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) return;
5
6function formulaires_offrir_souhait_saisies_dist($id_souhait, $retour=''){
7        $saisies = array(
8                array(
9                        'saisie' => 'input',
10                        'options' => array(
11                                'nom' => 'nom',
12                                'label' => _T('souhait:offrir_nom_label'),
13                                'obligatoire' => 'oui'
14                        ),
15                        'verifier' => array(
16                                'type' => 'taille',
17                                'options' => array(
18                                        'min' => 3,
19                                )
20                        )
21                ),
22                array(
23                        'saisie' => 'input',
24                        'options' => array(
25                                'nom' => 'email',
26                                'label' => _T('souhait:offrir_email_label'),
27                        ),
28                        'verifier' => array(
29                                'type' => 'email',
30                        )
31                ),
32                array(
33                        'saisie' => 'textarea',
34                        'options' => array(
35                                'nom' => 'message',
36                                'label' => _T('souhait:offrir_message_label'),
37                                'rows' => 4,
38                        ),
39                ),
40        );
41       
42        if (include_spip('base/abstract_sql') and $souhait = sql_fetsel('titre,statut,propositions,prix', 'spip_souhaits', 'id_souhait = '.$id_souhait)){
43                $propositions = unserialize($souhait['propositions']);
44                if ($souhait['statut'] == 'libre'){
45                        $explication = _T('souhait:offrir_explication_libre', array('souhait' => $souhait['titre']));
46                }
47                elseif ($souhait['statut'] == 'cagnotte'){
48                        $deja_propose = 0;
49                        if (is_array($propositions)){
50                                $deja_propose += array_sum($propositions);
51                        }
52                        $reste = $souhait['prix'] - $deja_propose;
53                        $reste_devise = "$reste €";
54                       
55                        $explication = _T('souhait:offrir_explication_cagnotte', array('souhait' => $souhait['titre'], 'reste' => $reste_devise));
56                       
57                        array_unshift($saisies, array(
58                                'saisie' => 'input',
59                                'options' => array(
60                                        'nom' => 'contribution',
61                                        'label' => _T('souhait:offrir_contribution_label'),
62                                        'explication' => _T('souhait:offrir_contribution_explication'),
63                                        'obligatoire' => 'oui',
64                                ),
65                                'verifier' => array(
66                                        'type' => 'decimal',
67                                        'options' => array(
68                                                'min' => 0.01,
69                                                'max' => $reste
70                                        )
71                                )
72                        ));
73                }
74               
75                array_unshift($saisies, array(
76                        'saisie' => 'explication',
77                        'options' => array(
78                                'nom' => 'explication',
79                                'texte' => $explication
80                        )
81                ));
82        }
83       
84        return $saisies;
85}
86
87function formulaires_offrir_souhait_charger_dist($id_souhait, $retour=''){
88        static $contexte = array();
89       
90        if (!empty($contexte)) return $contexte;
91       
92        if (
93                !$id_souhait = intval($id_souhait)
94                or !$statut = sql_getfetsel('statut', 'spip_souhaits', 'id_souhait = '.$id_souhait)
95                or in_array($statut, array('propose', 'achete', 'poubelle'))
96        ){
97                return false;
98        }
99       
100        $contexte['saisies_texte_submit'] = _T('organiseur:bouton_envoyer_message');
101       
102        return $contexte;
103}
104
105function formulaires_offrir_souhait_verifier_dist($id_souhait, $retour=''){
106        $erreurs = array();
107       
108        return $erreurs;
109}
110
111function formulaires_offrir_souhait_traiter_dist($id_souhait, $retour=''){
112        if ($retour){ refuser_traiter_formulaire_ajax(); }
113        include_spip('action/editer_objet');
114        include_spip('inc/session');
115        $retours = array();
116       
117        $souhait = sql_fetsel('titre,statut,propositions,prix,id_rubrique', 'spip_souhaits', 'id_souhait = '.$id_souhait);
118       
119        // On ajoute les exceptions nécessaires pour pouvoir changer le statut sur un hit visiteur
120        include_spip('inc/autoriser');
121        autoriser_exception('modifier', 'souhait', $id_souhait);
122        autoriser_exception('instituer', 'souhait', $id_souhait);
123        autoriser_exception('publierdans', 'rubrique', $souhait['id_rubrique']);
124       
125        // Cadeau normal
126        if ($souhait['statut'] == 'libre'){
127                $modifs = array(
128                        'statut' => 'propose',
129                        'propositions' => _request('nom')
130                );
131                $erreur = objet_modifier('souhait', $id_souhait, $modifs);
132        }
133        // Cagnotte
134        elseif ($souhait['statut'] == 'cagnotte'){
135                $propositions = unserialize($souhait['propositions']);
136                // Si les propositions n'étaient pas un tableau de plusieurs contribs, on met tout à zéro, tableau vide
137                if (!is_array($propositions)){ $propositions = array(); }
138                // On ajoute la proposition actuelle
139                $propositions[_request('nom')] = _request('contribution');
140                // On ajoute le tableau modifié aux changements
141                $modifs = array('propositions' => serialize($propositions));
142                // On regarde à combien en est la cagnotte
143                $deja_propose = array_sum($propositions);
144                // Si tout est payé on change aussi le statut
145                if ($deja_propose == $souhait['prix']){
146                        $modifs['statut'] = 'propose';
147                }
148                $erreur = objet_modifier('souhait', $id_souhait, $modifs);
149        }
150       
151        // On enlève les exceptions
152        autoriser_exception('publierdans', 'rubrique', $souhait['id_rubrique'], false);
153        autoriser_exception('instituer', 'souhait', $id_souhait, false);
154        autoriser_exception('modifier', 'souhait', $id_souhait, false);
155       
156        // S'il n'y a pas eu d'erreur, on envoie un courriel aux auteurs du souhait pour les prévenirs
157        if (!$erreur){
158                include_spip('action/editer_liens');
159               
160                // On récupère les auteurs
161                $auteurs = objet_trouver_liens(array('auteur'=>'*'), array('souhait'=>$id_souhait));
162                if ($auteurs){
163                        include_spip('inc/envoyer_mail');
164                        include_spip('inc/urls');
165                       
166                        $destinataires = array();
167                        foreach($auteurs as $auteur){
168                                if ($email = sql_getfetsel('email', 'spip_auteurs', 'id_auteur = '.$auteur['id_auteur'])){
169                                        $destinataires[] = $email;
170                                }
171                        }
172                        if ($destinataires){
173                                $destinataires = join(',', $destinataires);
174                       
175                                if ($souhait['statut'] == 'cagnotte') {
176                                        $sujet = _T(
177                                                'souhait:offrir_courriel_sujet_cagnotte',
178                                                array(
179                                                        'souhait' => $souhait['titre'],
180                                                        'contribution' => _request('contribution').' €',
181                                                        'nom' => _request('nom')
182                                                )
183                                        );
184                                }
185                                else{
186                                        $sujet = _T(
187                                                'souhait:offrir_courriel_sujet_propose',
188                                                array(
189                                                        'souhait' => $souhait['titre'],
190                                                        'nom' => _request('nom')
191                                                )
192                                        );
193                                }
194                                $message = _request('message');
195                       
196                                $envoyer_mail = charger_fonction('envoyer_mail', 'inc/');
197                                $envoyer_mail( 
198                                        $destinataires,
199                                        $sujet,
200                                        array(
201                                                'texte' => $message."\n\n--\n"._T('souhait:offrir_courriel_merci')."\n".generer_url_ecrire_objet('souhait', $id_souhait, '', '', false),
202                                                'from' => _request('email'),
203                                                'nom_envoyeur' => _request('nom')
204                                        )
205                                );
206                        }
207                }
208        }
209       
210        if ($erreur){
211                $retours['message_erreur'] = $erreur;
212        }
213        else {
214                if ($souhait['statut'] == 'cagnotte'){ $retours['message_ok'] = _T('souhait:offrir_message_ok_merci_cagnotte'); }
215                else{ $retours['message_ok'] = _T('souhait:offrir_message_ok_merci'); } 
216        }
217       
218        return $retours;
219}
220
221?>
Note: See TracBrowser for help on using the repository browser.