source: spip-zone/_plugins_/reservation_evenement/trunk/formulaires/reservation.php @ 92045

Last change on this file since 92045 was 92045, checked in by abelass@…, 4 years ago

oups

  • Property svn:executable set to *
File size: 7.6 KB
Line 
1<?php
2/**
3 * Le Formulaire réservation
4 *
5 * @plugin     Réservation Événements
6 * @copyright  2013
7 * @author     Rainer Müller
8 * @licence    GNU/GPL
9 * @package    SPIP\Reservation_evenement\Formulaires
10 */
11
12if (!defined("_ECRIRE_INC_VERSION"))
13  return;
14
15include_spip('inc/actions');
16include_spip('inc/editer');
17
18function formulaires_reservation_charger_dist($id=array(), $id_article = '', $retour = '') {
19  include_spip('inc/config');
20  include_spip('formulaires/selecteur/generique_fonctions');
21
22  $config = lire_config('reservation_evenement',array());
23  $enregistrement_inscrit = isset($config['enregistrement_inscrit']) ? $config['enregistrement_inscrit'] : 'on';
24  $enregistrement_inscrit_obligatoire = isset($config['enregistrement_inscrit_obligatoire']) ? $config['enregistrement_inscrit_obligatoire'] : '';
25
26  //Si l'affichage n'est pas déjà définie on établit si une zone s'applique
27  if (!$id_article AND !$id) {
28    include_spip('inc/reservation_evenements');
29
30    $rubrique_reservation = isset($config['rubrique_reservation']) ? $config['rubrique_reservation'] : '';
31    if (is_array($rubrique_reservation)) {
32      $rubrique_reservation = picker_selected($rubrique_reservation, 'rubrique');
33      $zone = rubrique_reservation('', 'evenement', $rubrique_reservation, array(
34        'tableau' => 'oui',
35        'where' => 'e.date_fin>NOW() AND e.inscription=1 AND e.statut="publie"',
36        'select' => '*',
37        'resultat' => 'par_id'
38      ));
39    }
40  }
41
42  //Si pas de zone, on établit les événements à afficher
43  if (!is_array($zone)) {
44    $where = array('date_fin>NOW() AND inscription=1 AND statut="publie"');
45    //Si filtré par événement/s
46    if ($id) {
47      if (is_array($id))
48        $id = implode(',', $id);
49        $sql = sql_select('id_evenement_source,id_evenement','spip_evenements','id_evenement IN (' . $id . ')');
50 
51      $id = array();
52     
53      while ($row = sql_fetch($sql)) {
54        if ($row['id_evenement_source'] == 0)
55          $id[] = $row['id_evenement'];
56        else
57          $id[] = $row['id_evenement_source'];
58      }
59        $where[] = 'id_evenement IN (' . implode(',', $id). ')';
60    }
61   
62    //Si filtré par article/s
63    if ($id_article) {
64      if (is_array($id_article))
65        $id_article= implode(',', $id_article);
66
67        $where[] = 'id_article IN (' . $id_article . ')';
68    }
69
70    $sql = sql_select('*', 'spip_evenements', $where, '', 'date_debut,date_fin');
71
72    $evenements = array();
73    $articles = array();
74    while ($row = sql_fetch($sql)) {
75      $evenements[$row['id_evenement']] = $row;
76      $articles[] = $row['id_article'];
77    }
78  }
79  //Sinon on affiche les événements de la zone établit
80  else {
81    $evenements = $zone;
82  }
83
84  // valeurs d'initialisation
85  $valeurs = array(
86    'evenements' => $evenements,
87    'articles' => $evenements,
88    'lang' => $GLOBALS['spip_lang'],
89    'id_evenement' => $id
90  );
91
92  if (intval($GLOBALS['visiteur_session'])) {
93    $session = $GLOBALS['visiteur_session'];
94    $nom = $session['nom'];
95    $email = $session['email'];
96  }
97
98  $valeurs['id_objet_prix'] = _request('id_objet_prix') ? (is_array(_request('id_objet_prix')) ? _request('id_objet_prix') : array(_request('id_objet_prix'))) : array();
99
100  $valeurs['nom'] = $nom;
101  $valeurs['email'] = $email;
102  $valeurs['enregistrer'] = _request('enregistrer');
103  $valeurs['new_pass'] = _request('new_pass');
104  $valeurs['new_pass2'] = _request('new_pass2');
105  $valeurs['new_login'] = _request('new_login');
106  $valeurs['statut'] = 'encours';
107  $valeurs['quantite'] = _request('quantite') ? _request('quantite') : 1;
108  $valeurs['enregistrement_inscrit'] = $enregistrement_inscrit;
109  $valeurs['enregistrement_inscrit_obligatoire'] = $enregistrement_inscrit_obligatoire;
110
111  //les champs extras auteur
112  include_spip('cextras_pipelines');
113
114  if (function_exists('champs_extras_objet')) {
115    //Charger les définitions pour la création des formulaires
116    $valeurs['champs_extras_auteurs'] = champs_extras_objet(table_objet_sql('auteur'));
117    foreach ($valeurs['champs_extras_auteurs'] as $key => $value) {
118      $valeurs[$value['options']['nom']] = $session[$value['options']['nom']];
119      $valeurs['champs_extras_auteurs'][$key]['options']['label'] = extraire_multi($value['options']['label']);
120
121    }
122  }
123
124  $valeurs['_hidden'] .= '<input type="hidden" name="statut" value="' . $valeurs['statut'] . '"/>';
125  $valeurs['_hidden'] .= '<input type="hidden" name="lang" value="' . $valeurs['lang'] . '"/>';
126  if ($enregistrement_inscrit_obligatoire)
127    $valeurs['_hidden'] .= '<input type="hidden" name="enregistrer[]" value="1"/>';
128  return $valeurs;
129}
130
131function formulaires_reservation_verifier_dist($id = '', $id_article = '', $retour = '') {
132  $erreurs = array();
133  $email = _request('email');
134  $id_auteur = '';
135
136  if (isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur'] > 0) {
137    $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
138  }
139
140  // Si l'enregistrement est choisi
141  if (_request('enregistrer')) {
142    include_spip('inc/auth');
143    $obligatoires = array(
144      'nom',
145      'email',
146      'new_pass',
147      'new_login'
148    );
149    foreach ($obligatoires AS $champ) {
150      if (!_request($champ))
151        $erreurs[$champ] = _T("info_obligatoire");
152    }
153    //Vérifier le login
154    if ($err = auth_verifier_login($auth_methode, _request('new_login'), $id_auteur)) {
155      $erreurs['new_login'] = $err;
156      $erreurs['message_erreur'] .= $err;
157    }
158
159    //Vérifier les mp
160    if ($p = _request('new_pass')) {
161      if ($p != _request('new_pass2')) {
162        $erreurs['new_pass'] = _T('info_passes_identiques');
163        $erreurs['message_erreur'] .= _T('info_passes_identiques');
164      }
165      elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'), $p, $id_auteur)) {
166        $erreurs['new_pass'] = $err;
167      }
168    }
169  }
170  else {
171    $obligatoires = array(
172      'nom',
173      'email'
174    );
175
176    if (test_plugin_actif('declinaisons'))
177      array_push($obligatoires, 'id_objet_prix');
178    else
179      array_push($obligatoires, 'id_evenement');
180
181    foreach ($obligatoires AS $champ) {
182      if (!_request($champ))
183        $erreurs[$champ] = _T("info_obligatoire");
184    }
185  }
186
187  if ($email) {
188    include_spip('inc/filtres');
189    // un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un
190    if (!email_valide($email)) {
191      $erreurs['email'] = $id_auteur ? _T('form_email_non_valide') : _T('form_prop_indiquer_email');
192    }
193    elseif (!$id_auteur) {
194      if ($email_utilise = sql_getfetsel('email', 'spip_auteurs', 'email=' . sql_quote($email)))
195        $erreurs['email'] = _T('reservation:erreur_email_utilise');
196    }
197  }
198
199  //les champs extras auteur
200  include_spip('cextras_pipelines');
201
202  if (function_exists('champs_extras_objet')) {
203    include_spip('inc/saisies');
204    //Charger les définitions
205    $champs_extras_auteurs = champs_extras_objet(table_objet_sql('auteur'));
206    $erreurs = array_merge($erreurs, saisies_verifier($champs_extras_auteurs));
207  }
208  if (count($erreurs) AND !isset($erreurs['message_erreur']))
209    $erreurs['message_erreur'] = _T('reservation:message_erreur');
210  return $erreurs;
211}
212
213function formulaires_reservation_traiter_dist($id = '', $id_article = '', $retour = '') {
214  if ($retour) {
215    refuser_traiter_formulaire_ajax();
216  }
217  $enregistrer = charger_fonction('reservation_enregistrer', 'inc');
218  if (isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur'] > 0) {
219    $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
220  }
221
222  $retours = $enregistrer($id, $id_article, $id_auteur);
223
224  // Si on demande une redirection
225  if ($retour)
226    $retours['redirect'] = $retour;
227
228  return $retours;
229}
230?>
Note: See TracBrowser for help on using the repository browser.