Changeset 94822 in spip-zone


Ignore:
Timestamp:
Jan 30, 2016, 3:40:30 PM (4 years ago)
Author:
abelass@…
Message:

permettre de réutiliser une adresse email

Location:
_plugins_/reservation_evenement/trunk/formulaires
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/reservation_evenement/trunk/formulaires/configurer_reservation_evenement.php

    r94820 r94822  
    300300                                        )
    301301                                ),
     302                                array(
     303                                        'saisie' => 'oui_non',
     304                                        'options' => array(
     305                                                'nom' => 'email_reutilisable',
     306                                                'label' => _T('reservation:label_email_reutilisable'),
     307                                                'explication' => _T('reservation:explication_email_reutilisable'),
     308                                                'defaut' => $config['email_reutilisable'],
     309                                                'afficher_si' => '@enregistrement_inscrit_obligatoire@ == ""',
     310                                        )
     311                                ),
    302312                        )
    303313                )
  • _plugins_/reservation_evenement/trunk/formulaires/reservation.php

    r92045 r94822  
    1111
    1212if (!defined("_ECRIRE_INC_VERSION"))
    13   return;
     13        return;
    1414
    1515include_spip('inc/actions');
    1616include_spip('inc/editer');
    1717
    18 function 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;
     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;
    129129}
    130130
    131131function 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;
     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                include_spip('inc/config');
     172                $email_reutilisable = lire_config('reservation_evenement/email_reutilisable','');
     173                $obligatoires = array(
     174                        'nom',
     175                        'email'
     176                );
     177
     178                if (test_plugin_actif('declinaisons'))
     179                        array_push($obligatoires, 'id_objet_prix');
     180                else
     181                        array_push($obligatoires, 'id_evenement');
     182
     183                foreach ($obligatoires AS $champ) {
     184                        if (!_request($champ))
     185                                $erreurs[$champ] = _T("info_obligatoire");
     186                }
     187        }
     188
     189        if ($email) {
     190                include_spip('inc/filtres');
     191                // un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un
     192                if (!email_valide($email)) {
     193                        $erreurs['email'] = $id_auteur ? _T('form_email_non_valide') : _T('form_prop_indiquer_email');
     194                }
     195                elseif (!$id_auteur AND !$email_reutilisable) {
     196                        if ($email_utilise = sql_getfetsel('email', 'spip_auteurs', 'email=' . sql_quote($email)))
     197                                $erreurs['email'] = _T('reservation:erreur_email_utilise');
     198                }
     199        }
     200
     201        //les champs extras auteur
     202        include_spip('cextras_pipelines');
     203
     204        if (function_exists('champs_extras_objet')) {
     205                include_spip('inc/saisies');
     206                //Charger les définitions
     207                $champs_extras_auteurs = champs_extras_objet(table_objet_sql('auteur'));
     208                $erreurs = array_merge($erreurs, saisies_verifier($champs_extras_auteurs));
     209        }
     210        if (count($erreurs) AND !isset($erreurs['message_erreur']))
     211                $erreurs['message_erreur'] = _T('reservation:message_erreur');
     212        return $erreurs;
    211213}
    212214
    213215function 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;
     216        if ($retour) {
     217                refuser_traiter_formulaire_ajax();
     218        }
     219        $enregistrer = charger_fonction('reservation_enregistrer', 'inc');
     220        if (isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur'] > 0) {
     221                $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
     222        }
     223
     224        $retours = $enregistrer($id, $id_article, $id_auteur);
     225
     226        // Si on demande une redirection
     227        if ($retour)
     228                $retours['redirect'] = $retour;
     229
     230        return $retours;
    229231}
    230232?>
Note: See TracChangeset for help on using the changeset viewer.