Ignore:
Timestamp:
Jul 1, 2017, 9:50:53 AM (3 years ago)
Author:
abelass@…
Message:

v1.26.0 - tenir compte des champs extras reservation sur le formulaire de réservation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/reservation_evenement/branches/v1/formulaires/reservation.php

    r102470 r105052  
    1212        return;
    1313
    14 include_spip('inc/actions');
    15 include_spip('inc/editer');
    16 
    17 /**
    18  * Chargement du formulaire réservation
    19  *
    20  * @param array|int|string $id
    21  *         Identifiant de l'événement, soit tableau, soit liste séparé par virgule, soit un numéro.
    22  * @param array|int|string $id_article
    23  *         Identifiant de l'article, soit tableau, soit liste séparé par virgule, soit un numéro.
    24  * @param string $retour
    25  *         Url de retour.
    26  * @param array|string $options
    27  *         Les options :
    28  *         id_evenement_source : Grouper les événements répétés (défault) ou les aficher séparément.
    29  *                               Valeurs: 0, '' ou string afficher séparément les événement répétés
    30  *                                        une integer supérieur 'a 0 groupe les événements avec le id_evenement_source indiqué.
    31  * @return array Environnement du formulaire.
    32  */
    33 function formulaires_reservation_charger_dist($id = array(), $id_article = '', $retour = '', $options = array()) {
    34 
    35         include_spip('inc/config');
    36         include_spip('formulaires/selecteur/generique_fonctions');
    37 
    38         $config = lire_config('reservation_evenement', array());
    39         $enregistrement_inscrit = isset($config['enregistrement_inscrit']) ? $config['enregistrement_inscrit'] : '';
    40         $enregistrement_inscrit_obligatoire = isset($config['enregistrement_inscrit_obligatoire']) ? $config['enregistrement_inscrit_obligatoire'] : '';
    41         $valeurs = array();
    42 
    43         // On obtient les options.
    44         if(!is_array($options)) {
    45                 $options = explode(',', $options);
    46                 foreach($options AS $option) {
    47                         list($variable, $valeur) = explode(':', $option);
    48                         $$variable = $valeurs[$variable] = $valeur;
    49                 }
     14        include_spip('inc/actions');
     15        include_spip('inc/editer');
     16
     17        /**
     18         * Chargement du formulaire réservation
     19         *
     20         * @param array|int|string $id
     21         *         Identifiant de l'événement, soit tableau, soit liste séparé par virgule, soit un numéro.
     22         * @param array|int|string $id_article
     23         *         Identifiant de l'article, soit tableau, soit liste séparé par virgule, soit un numéro.
     24         * @param string $retour
     25         *         Url de retour.
     26         * @param array|string $options
     27         *         Les options :
     28         *         id_evenement_source : Grouper les événements répétés (défault) ou les aficher séparément.
     29         *                               Valeurs: 0, '' ou string afficher séparément les événement répétés
     30         *                                        une integer supérieur 'a 0 groupe les événements avec le id_evenement_source indiqué.
     31         * @return array Environnement du formulaire.
     32         */
     33        function formulaires_reservation_charger_dist($id = array(), $id_article = '', $retour = '', $options = array()) {
     34
     35                include_spip('inc/config');
     36                include_spip('formulaires/selecteur/generique_fonctions');
     37
     38                $config = lire_config('reservation_evenement', array());
     39                $enregistrement_inscrit = isset($config['enregistrement_inscrit']) ? $config['enregistrement_inscrit'] : '';
     40                $enregistrement_inscrit_obligatoire = isset($config['enregistrement_inscrit_obligatoire']) ? $config['enregistrement_inscrit_obligatoire'] : '';
     41                $valeurs = array();
     42
     43                // On obtient les options.
     44                if(!is_array($options)) {
     45                        $options = explode(',', $options);
     46                        foreach($options AS $option) {
     47                                list($variable, $valeur) = explode(':', $option);
     48                                $$variable = $valeurs[$variable] = $valeur;
     49                        }
     50                }
     51                else {
     52                        foreach ($options AS $variable => $valeur) {
     53                                $$variable = $valeurs[$variable] = $valeur;
     54                        }
     55                }
     56
     57                if(isset($id_evenement_source)) {
     58                        if ($id_evenement_source == 0) {
     59                                $id_evenement_source = false;
     60                        }
     61                }
     62                else {
     63                        $id_evenement_source = 0;
     64                }
     65
     66
     67                if (intval($GLOBALS['visiteur_session'])) {
     68                        $session = $GLOBALS['visiteur_session'];
     69                        $nom = $session['nom'];
     70                        $email = $session['email'];
     71                        $id_auteur = isset($session['id_auteur']) ? $session['id_auteur'] : '';
     72                }
     73
     74                // Si l'affichage n'est pas déjà définie on établit si une zone s'applique
     75                if (!$id_article and !$id) {
     76                        include_spip('inc/reservation_evenements');
     77
     78                        $rubrique_reservation = isset($config['rubrique_reservation']) ? $config['rubrique_reservation'] : '';
     79                        if (is_array($rubrique_reservation)) {
     80                                $rubrique_reservation = picker_selected($rubrique_reservation, 'rubrique');
     81                                $zone = rubrique_reservation('', 'evenement', $rubrique_reservation, array(
     82                                        'tableau' => 'oui',
     83                                        'where' => 'e.date_fin>NOW() AND e.inscription=1 AND e.statut="publie"',
     84                                        'select' => '*',
     85                                        'resultat' => 'par_id'
     86                                ));
     87                        }
     88                }
     89
     90                // Si pas de zone, on établit les événements à afficher
     91                if (!is_array($zone)) {
     92                        $where = array(
     93                                'date_fin>NOW() AND inscription=1 AND statut="publie"'
     94                        );
     95
     96                        // Si filtré par événement/s
     97                        if ($id) {
     98                                if (is_array($id)){
     99                                        $id = implode(',', $id);
     100                                }
     101                                if ($id_evenement_source) {
     102                                        $sql = sql_select('id_evenement_source,id_evenement',
     103                                                        'spip_evenements',
     104                                                        'id_evenement IN (' . $id . ')');
     105
     106                                        $id = array();
     107                                        while ($row = sql_fetch($sql)) {
     108                                                if ($row['id_evenement_source'] == 0)
     109                                                        $id[] = $row['id_evenement'];
     110                                                        else
     111                                                                $id[] = $row['id_evenement_source'];
     112                                        }
     113                                        $id = implode(',', $id);
     114                                }
     115                                $where[] = 'id_evenement IN (' . $id . ')';
     116                        }
     117
     118                        // Si filtré par article/s
     119                        if ($id_article) {
     120                                if (is_array($id_article))
     121                                        $id_article = implode(',', $id_article);
     122
     123                                        $where[] = 'id_article IN (' . $id_article . ')';
     124                        }
     125
     126                        $sql = sql_select('*', 'spip_evenements', $where, '', 'date_debut,date_fin');
     127
     128                        $evenements = array();
     129                        $articles = array();
     130                        while ($row = sql_fetch($sql)) {
     131                                $evenements[$row['id_evenement']] = $row;
     132                                $articles[] = $row['id_article'];
     133                        }
     134                }
     135                // Sinon on affiche les événements de la zone établit
     136                else {
     137                        $evenements = $zone;
     138                }
     139
     140                // valeurs d'initialisation
     141                $valeurs['evenements'] = $evenements;
     142                $valeurs['articles'] = $evenements;
     143                $valeurs['lang'] = $GLOBALS['spip_lang'];
     144                $valeurs['id_evenement'] = $id;
     145                $valeurs['id_evenement_source'] = $id_evenement_source;
     146
     147
     148                $valeurs['id_objet_prix'] = _request('id_objet_prix') ? (is_array(_request('id_objet_prix')) ? _request('id_objet_prix') : array(
     149                        _request('id_objet_prix')
     150                )) : array();
     151                $valeurs['id_auteur'] = $id_auteur;
     152                $valeurs['modifier_donnees_auteur'] = _request('modifier_donnees_auteur');
     153                $valeurs['nom'] = $nom;
     154                $valeurs['email'] = $email;
     155                $valeurs['enregistrer'] = _request('enregistrer');
     156                $valeurs['new_pass'] = _request('new_pass');
     157                $valeurs['new_pass2'] = _request('new_pass2');
     158                $valeurs['new_login'] = _request('new_login');
     159                $valeurs['statut'] = 'encours';
     160                $valeurs['quantite'] = _request('quantite') ? _request('quantite') : 1;
     161                $valeurs['enregistrement_inscrit'] = $enregistrement_inscrit;
     162                $valeurs['enregistrement_inscrit_obligatoire'] = $enregistrement_inscrit_obligatoire;
     163
     164                // les champs extras
     165                include_spip('cextras_pipelines');
     166                if (function_exists('champs_extras_objet')) {
     167                        // Auteurs
     168                        $valeurs['champs_extras_auteurs'] = champs_extras_objet(table_objet_sql('auteur'));
     169                        foreach ($valeurs['champs_extras_auteurs'] as $key => $value) {
     170                                $valeurs[$value['options']['nom']] = $session[$value['options']['nom']];
     171                                $valeurs['champs_extras_auteurs'][$key]['options']['label'] = extraire_multi($value['options']['label']);
     172                        }
     173
     174                        // Réservations
     175                        $valeurs['champs_extras_reservations'] = champs_extras_objet(table_objet_sql('reservation'));
     176                        foreach ($valeurs['champs_extras_reservations'] as $key => $value) {
     177                                $valeurs[$value['options']['nom']] = $session[$value['options']['nom']];
     178                                $valeurs['champs_extras_reservations'][$key]['options']['label'] = extraire_multi($value['options']['label']);
     179                        }
     180                }
     181
     182                $valeurs['_hidden'] .= '<input type="hidden" name="statut" value="' . $valeurs['statut'] . '"/>';
     183                $valeurs['_hidden'] .= '<input type="hidden" name="lang" value="' . $valeurs['lang'] . '"/>';
     184                if ($id_auteur) {
     185                        $valeurs['_hidden'] .= '<input type="hidden" name="id_auteur" value="' . $valeurs['id_auteur'] . '"/>';
     186                }
     187                if ($enregistrement_inscrit_obligatoire)
     188                        $valeurs['_hidden'] .= '<input type="hidden" name="enregistrer[]" value="1"/>';
     189                        return $valeurs;
    50190        }
    51         else {
    52                 foreach ($options AS $variable => $valeur) {
    53                         $$variable = $valeurs[$variable] = $valeur;
    54                 }
     191
     192        /**
     193         * Vérifications du formulaire réservation
     194         *
     195         * @param array|int|string $id
     196         *         Identifiant de l'événement, soit tableau, soit liste séparé par virgule, soit un numéro.
     197         * @param array|int|string $id_article
     198         *         Identifiant de l'article, soit tableau, soit liste séparé par virgule, soit un numéro
     199         * @param string $retour
     200         *         Url de retour.
     201         * @param array|string $options
     202         *         Les options :
     203         *         id_evenement_source : Grouper les événements répétés (défault) ou les aficher séparément.
     204         *                               Valeurs: 0, '' ou string afficher séparément les événement répétés
     205         *                                        une integer supérieur 'a 0 groupe les événements avec le id_evenement_source indiqué.
     206         * @return array Tableau des erreurs.
     207         */
     208        function formulaires_reservation_verifier_dist($id = '', $id_article = '', $retour = '', $options = array()) {
     209                $erreurs = array();
     210                $email = _request('email');
     211                $id_auteur = _request('id_auteur');
     212                $obligatoires = array();
     213
     214                if (isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur'] > 0) {
     215                        $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
     216                }
     217
     218                // Si l'enregistrement est choisi
     219                if (_request('enregistrer')) {
     220                        include_spip('inc/auth');
     221                        $obligatoires = array(
     222                                'nom',
     223                                'email',
     224                                'new_pass',
     225                                'new_login'
     226                        );
     227                        foreach ($obligatoires as $champ) {
     228                                if (!_request($champ))
     229                                        $erreurs[$champ] = _T("info_obligatoire");
     230                        }
     231                        // Vérifier le login
     232                        if ($err = auth_verifier_login($auth_methode, _request('new_login'), $id_auteur)) {
     233                                $erreurs['new_login'] = $err;
     234                                $erreurs['message_erreur'] .= $err;
     235                        }
     236
     237                        // Vérifier les mp
     238                        if ($p = _request('new_pass')) {
     239                                if ($p != _request('new_pass2')) {
     240                                        $erreurs['new_pass'] = _T('info_passes_identiques');
     241                                        $erreurs['message_erreur'] .= _T('info_passes_identiques');
     242                                }
     243                                elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'), $p, $id_auteur)) {
     244                                        $erreurs['new_pass'] = $err;
     245                                }
     246                        }
     247                }
     248                elseif (!$id_auteur) {
     249                        include_spip('inc/config');
     250                        $email_reutilisable = lire_config('reservation_evenement/email_reutilisable', '');
     251                        $obligatoires = array(
     252                                'nom',
     253                                'email'
     254                        );
     255                }
     256
     257                if (test_plugin_actif('declinaisons'))
     258                        array_push($obligatoires, 'id_objet_prix');
     259                        else
     260                                array_push($obligatoires, 'id_evenement');
     261
     262                                foreach ($obligatoires as $champ) {
     263                                        if (!_request($champ))
     264                                                $erreurs[$champ] = _T("info_obligatoire");
     265                                }
     266
     267                                if ($email) {
     268                                        include_spip('inc/filtres');
     269                                        // un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un
     270                                        if (!email_valide($email)) {
     271                                                $erreurs['email'] = $id_auteur ? _T('form_email_non_valide') : _T('form_prop_indiquer_email');
     272                                        }
     273                                        elseif (!$id_auteur and !$email_reutilisable) {
     274                                                if ($email_utilise = sql_getfetsel('email', 'spip_auteurs', 'email=' . sql_quote($email)))
     275                                                        $erreurs['email'] = _T('reservation:erreur_email_utilise');
     276                                        }
     277                                }
     278
     279                                // les champs extras auteur
     280                                include_spip('cextras_pipelines');
     281
     282                                if (function_exists('champs_extras_objet')) {
     283                                        include_spip('inc/saisies');
     284                                        // Charger les définitions
     285                                        $champs_extras_auteurs = champs_extras_objet(table_objet_sql('auteur'));
     286                                        $erreurs = array_merge($erreurs, saisies_verifier($champs_extras_auteurs));
     287                                }
     288                                if (count($erreurs) and !isset($erreurs['message_erreur']))
     289                                        $erreurs['message_erreur'] = _T('reservation:message_erreur');
     290                                        return $erreurs;
    55291        }
    56292
    57         if(isset($id_evenement_source)) {
    58                 if ($id_evenement_source == 0) {
    59                         $id_evenement_source = false;
    60                 }
     293        /**
     294         * Traitement du formulaire de réservation.
     295         *
     296         * @param array|int|string $id
     297         *         Identifiant de l'événement, soit tableau, soit liste séparé par virgule, soit un numéro.
     298         * @param array|int|string $id_article
     299         *         Identifiant de l'article, soit tableau, soit liste séparé par virgule, soit un numéro
     300         * @param string $retour
     301         *         Url de retour.
     302         * @param array|string $options
     303         *         Les options :
     304         *         id_evenement_source : Grouper les événements répétés (défault) ou les aficher séparément.
     305         *                               Valeurs: 0, '' ou string afficher séparément les événement répétés
     306         *                                        une integer supérieur 'a 0 groupe les événements avec le id_evenement_source indiqué.
     307         * @return array Retours des traitements.
     308         */
     309        function formulaires_reservation_traiter_dist($id = '', $id_article = '', $retour = '', $options = array()) {
     310                if ($retour) {
     311                        refuser_traiter_formulaire_ajax();
     312                }
     313                $enregistrer = charger_fonction('reservation_enregistrer', 'inc');
     314                $id_auteur = _request('id_auteur');
     315
     316                $retours = $enregistrer($id, $id_article, $id_auteur);
     317
     318                // Si on demande une redirection
     319                if ($retour)
     320                        $retours['redirect'] = $retour;
     321
     322                        return $retours;
    61323        }
    62         else {
    63                 $id_evenement_source = 0;
    64         }
    65 
    66 
    67         if (intval($GLOBALS['visiteur_session'])) {
    68                 $session = $GLOBALS['visiteur_session'];
    69                 $nom = $session['nom'];
    70                 $email = $session['email'];
    71                 $id_auteur = isset($session['id_auteur']) ? $session['id_auteur'] : '';
    72         }
    73 
    74         // Si l'affichage n'est pas déjà définie on établit si une zone s'applique
    75         if (!$id_article and !$id) {
    76                 include_spip('inc/reservation_evenements');
    77 
    78                 $rubrique_reservation = isset($config['rubrique_reservation']) ? $config['rubrique_reservation'] : '';
    79                 if (is_array($rubrique_reservation)) {
    80                         $rubrique_reservation = picker_selected($rubrique_reservation, 'rubrique');
    81                         $zone = rubrique_reservation('', 'evenement', $rubrique_reservation, array(
    82                                 'tableau' => 'oui',
    83                                 'where' => 'e.date_fin>NOW() AND e.inscription=1 AND e.statut="publie"',
    84                                 'select' => '*',
    85                                 'resultat' => 'par_id'
    86                         ));
    87                 }
    88         }
    89 
    90         // Si pas de zone, on établit les événements à afficher
    91         if (!is_array($zone)) {
    92                 $where = array(
    93                         'date_fin>NOW() AND inscription=1 AND statut="publie"'
    94                 );
    95 
    96                 // Si filtré par événement/s
    97                 if ($id) {
    98                         if (is_array($id)){
    99                                 $id = implode(',', $id);
    100                         }
    101                         if ($id_evenement_source) {
    102                                 $sql = sql_select('id_evenement_source,id_evenement',
    103                                                 'spip_evenements',
    104                                                 'id_evenement IN (' . $id . ')');
    105 
    106                                 $id = array();
    107                                 while ($row = sql_fetch($sql)) {
    108                                         if ($row['id_evenement_source'] == 0)
    109                                                 $id[] = $row['id_evenement'];
    110                                                 else
    111                                                         $id[] = $row['id_evenement_source'];
    112                                 }
    113                                 $id = implode(',', $id);
    114                         }
    115                         $where[] = 'id_evenement IN (' . $id . ')';
    116                 }
    117 
    118                 // Si filtré par article/s
    119                 if ($id_article) {
    120                         if (is_array($id_article))
    121                                 $id_article = implode(',', $id_article);
    122 
    123                         $where[] = 'id_article IN (' . $id_article . ')';
    124                 }
    125 
    126                 $sql = sql_select('*', 'spip_evenements', $where, '', 'date_debut,date_fin');
    127 
    128                 $evenements = array();
    129                 $articles = array();
    130                 while ($row = sql_fetch($sql)) {
    131                         $evenements[$row['id_evenement']] = $row;
    132                         $articles[] = $row['id_article'];
    133                 }
    134         }
    135         // Sinon on affiche les événements de la zone établit
    136         else {
    137                 $evenements = $zone;
    138         }
    139 
    140         // valeurs d'initialisation
    141         $valeurs['evenements'] = $evenements;
    142         $valeurs['articles'] = $evenements;
    143         $valeurs['lang'] = $GLOBALS['spip_lang'];
    144         $valeurs['id_evenement'] = $id;
    145         $valeurs['id_evenement_source'] = $id_evenement_source;
    146 
    147 
    148         $valeurs['id_objet_prix'] = _request('id_objet_prix') ? (is_array(_request('id_objet_prix')) ? _request('id_objet_prix') : array(
    149                 _request('id_objet_prix')
    150         )) : array();
    151         $valeurs['id_auteur'] = $id_auteur;
    152         $valeurs['modifier_donnees_auteur'] = _request('modifier_donnees_auteur');
    153         $valeurs['nom'] = $nom;
    154         $valeurs['email'] = $email;
    155         $valeurs['enregistrer'] = _request('enregistrer');
    156         $valeurs['new_pass'] = _request('new_pass');
    157         $valeurs['new_pass2'] = _request('new_pass2');
    158         $valeurs['new_login'] = _request('new_login');
    159         $valeurs['statut'] = 'encours';
    160         $valeurs['quantite'] = _request('quantite') ? _request('quantite') : 1;
    161         $valeurs['enregistrement_inscrit'] = $enregistrement_inscrit;
    162         $valeurs['enregistrement_inscrit_obligatoire'] = $enregistrement_inscrit_obligatoire;
    163 
    164         // les champs extras auteur
    165         include_spip('cextras_pipelines');
    166         if (function_exists('champs_extras_objet')) {
    167                 // Charger les définitions pour la création des formulaires
    168                 $valeurs['champs_extras_auteurs'] = champs_extras_objet(table_objet_sql('auteur'));
    169                 foreach ($valeurs['champs_extras_auteurs'] as $key => $value) {
    170                         $valeurs[$value['options']['nom']] = $session[$value['options']['nom']];
    171                         $valeurs['champs_extras_auteurs'][$key]['options']['label'] = extraire_multi($value['options']['label']);
    172                 }
    173         }
    174 
    175         $valeurs['_hidden'] .= '<input type="hidden" name="statut" value="' . $valeurs['statut'] . '"/>';
    176         $valeurs['_hidden'] .= '<input type="hidden" name="lang" value="' . $valeurs['lang'] . '"/>';
    177         if ($id_auteur) {
    178                 $valeurs['_hidden'] .= '<input type="hidden" name="id_auteur" value="' . $valeurs['id_auteur'] . '"/>';
    179         }
    180         if ($enregistrement_inscrit_obligatoire)
    181                 $valeurs['_hidden'] .= '<input type="hidden" name="enregistrer[]" value="1"/>';
    182         return $valeurs;
    183 }
    184 
    185 /**
    186  * Vérifications du formulaire réservation
    187  *
    188  * @param array|int|string $id
    189  *         Identifiant de l'événement, soit tableau, soit liste séparé par virgule, soit un numéro.
    190  * @param array|int|string $id_article
    191  *         Identifiant de l'article, soit tableau, soit liste séparé par virgule, soit un numéro
    192  * @param string $retour
    193  *         Url de retour.
    194  * @param array|string $options
    195  *         Les options :
    196  *         id_evenement_source : Grouper les événements répétés (défault) ou les aficher séparément.
    197  *                               Valeurs: 0, '' ou string afficher séparément les événement répétés
    198  *                                        une integer supérieur 'a 0 groupe les événements avec le id_evenement_source indiqué.
    199  * @return array Tableau des erreurs.
    200  */
    201 function formulaires_reservation_verifier_dist($id = '', $id_article = '', $retour = '', $options = array()) {
    202         $erreurs = array();
    203         $email = _request('email');
    204         $id_auteur = _request('id_auteur');
    205         $obligatoires = array();
    206 
    207         if (isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur'] > 0) {
    208                 $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
    209         }
    210 
    211         // Si l'enregistrement est choisi
    212         if (_request('enregistrer')) {
    213                 include_spip('inc/auth');
    214                 $obligatoires = array(
    215                         'nom',
    216                         'email',
    217                         'new_pass',
    218                         'new_login'
    219                 );
    220                 foreach ($obligatoires as $champ) {
    221                         if (!_request($champ))
    222                                 $erreurs[$champ] = _T("info_obligatoire");
    223                 }
    224                 // Vérifier le login
    225                 if ($err = auth_verifier_login($auth_methode, _request('new_login'), $id_auteur)) {
    226                         $erreurs['new_login'] = $err;
    227                         $erreurs['message_erreur'] .= $err;
    228                 }
    229 
    230                 // Vérifier les mp
    231                 if ($p = _request('new_pass')) {
    232                         if ($p != _request('new_pass2')) {
    233                                 $erreurs['new_pass'] = _T('info_passes_identiques');
    234                                 $erreurs['message_erreur'] .= _T('info_passes_identiques');
    235                         }
    236                         elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'), $p, $id_auteur)) {
    237                                 $erreurs['new_pass'] = $err;
    238                         }
    239                 }
    240         }
    241         elseif (!$id_auteur) {
    242                 include_spip('inc/config');
    243                 $email_reutilisable = lire_config('reservation_evenement/email_reutilisable', '');
    244                 $obligatoires = array(
    245                         'nom',
    246                         'email'
    247                 );
    248         }
    249 
    250         if (test_plugin_actif('declinaisons'))
    251                 array_push($obligatoires, 'id_objet_prix');
    252         else
    253                 array_push($obligatoires, 'id_evenement');
    254 
    255         foreach ($obligatoires as $champ) {
    256                 if (!_request($champ))
    257                         $erreurs[$champ] = _T("info_obligatoire");
    258         }
    259 
    260         if ($email) {
    261                 include_spip('inc/filtres');
    262                 // un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un
    263                 if (!email_valide($email)) {
    264                         $erreurs['email'] = $id_auteur ? _T('form_email_non_valide') : _T('form_prop_indiquer_email');
    265                 }
    266                 elseif (!$id_auteur and !$email_reutilisable) {
    267                         if ($email_utilise = sql_getfetsel('email', 'spip_auteurs', 'email=' . sql_quote($email)))
    268                                 $erreurs['email'] = _T('reservation:erreur_email_utilise');
    269                 }
    270         }
    271 
    272         // les champs extras auteur
    273         include_spip('cextras_pipelines');
    274 
    275         if (function_exists('champs_extras_objet')) {
    276                 include_spip('inc/saisies');
    277                 // Charger les définitions
    278                 $champs_extras_auteurs = champs_extras_objet(table_objet_sql('auteur'));
    279                 $erreurs = array_merge($erreurs, saisies_verifier($champs_extras_auteurs));
    280         }
    281         if (count($erreurs) and !isset($erreurs['message_erreur']))
    282                 $erreurs['message_erreur'] = _T('reservation:message_erreur');
    283         return $erreurs;
    284 }
    285 
    286 /**
    287  * Traitement du formulaire de réservation.
    288  *
    289  * @param array|int|string $id
    290  *         Identifiant de l'événement, soit tableau, soit liste séparé par virgule, soit un numéro.
    291  * @param array|int|string $id_article
    292  *         Identifiant de l'article, soit tableau, soit liste séparé par virgule, soit un numéro
    293  * @param string $retour
    294  *         Url de retour.
    295  * @param array|string $options
    296  *         Les options :
    297  *         id_evenement_source : Grouper les événements répétés (défault) ou les aficher séparément.
    298  *                               Valeurs: 0, '' ou string afficher séparément les événement répétés
    299  *                                        une integer supérieur 'a 0 groupe les événements avec le id_evenement_source indiqué.
    300  * @return array Retours des traitements.
    301  */
    302 function formulaires_reservation_traiter_dist($id = '', $id_article = '', $retour = '', $options = array()) {
    303         if ($retour) {
    304                 refuser_traiter_formulaire_ajax();
    305         }
    306         $enregistrer = charger_fonction('reservation_enregistrer', 'inc');
    307         $id_auteur = _request('id_auteur');
    308 
    309         $retours = $enregistrer($id, $id_article, $id_auteur);
    310 
    311         // Si on demande une redirection
    312         if ($retour)
    313                 $retours['redirect'] = $retour;
    314 
    315         return $retours;
    316 }
Note: See TracChangeset for help on using the changeset viewer.