Changeset 41829 in spip-zone


Ignore:
Timestamp:
Oct 21, 2010, 2:08:30 PM (9 years ago)
Author:
jtlebi@…
Message:

Le plugin SPIP-formulaire n'étant plus maintenu,
ce commit fusionne la plupart des modifications et patch qui ont été développé en addition à ce plugin pour le site internet de la pastorale des jeunes du diocèse de Lyon: http://www.jeunes-lyon.cef.fr

Il corrige
-* le bug de compatibilité avec la version 2.1 de SPIP,
-* le bug de vérification de l'unicité des "applicant"

lorsque l'on demandait une unicité d'auteur de réponse, le test
était fait sur l'ENSEMBLE des formulaires
Il est maintenant restreint au formulaire courant uniquement

-* dans le même esprit, dans les fonctions du type "autoriser_*", ajout du paramètre id_formulaire pour permettre des autorisations plus fines
-* le mail de confirmation des réponses est aussi envoyé aux "applicant"

L'ensemble de ces corrections ont été faites dans un objectif de stabilisation de manière à le rendre
éfficace dans le cadre d'un système d'inscriptions en ligne.

Ce commit ne fusionne pas encore toutes les modifications. Il est possible que des erreurs se soient glissées lors de la fusion
des codes entre le SVN et notre version privée. Si un problème de compatibilité se pose, merci de m'envoyer un email directement:
jtlebi@…

En particulier, ce plugin exploite encore le mécanisme des balises dynamiques qui pose un certain nombre de problèmes dans la mesure
où leurs résultats sont mis en cache. Il s'agit non pas d'un bug du plugin mais d'un bug SPIP 2.* .
Nous le contournons en ajoutant de manière brutale un paramètre aléatoire aux URL.
L'idéal serait de passer au formalisme CVT.

Cette migration est actuellement à l'étude et toute aide sera la bienvenue!

Location:
_plugins_/spip-formulaires
Files:
24 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/spip-formulaires/action/editer_position_bloc.php

    r28051 r41829  
    2424                $ajax                   = $_REQUEST['ajax'];
    2525
    26                 if (autoriser('editer', 'formulaires')) {
     26                if (autoriser('editer', 'formulaires', $id_formulaire)) {
    2727
    2828                        $bloc = new bloc($id_formulaire, $id_bloc);
  • _plugins_/spip-formulaires/action/editer_position_choix_question.php

    r28051 r41829  
    2626                $ajax                           = $_REQUEST['ajax'];
    2727
    28                 if (autoriser('editer', 'formulaires')) {
     28                if (autoriser('editer', 'formulaires', $id_formulaire)) {
    2929
    3030                        $choix_question = new choix_question($id_formulaire, $id_bloc, $id_question, $id_choix_question);
  • _plugins_/spip-formulaires/action/editer_position_question.php

    r28051 r41829  
    2525                $ajax                   = $_REQUEST['ajax'];
    2626
    27                 if (autoriser('editer', 'formulaires')) {
     27                if (autoriser('editer', 'formulaires', $id_formulaire)) {
    2828
    2929                        $question = new question($id_formulaire, $id_bloc, $id_question);
  • _plugins_/spip-formulaires/action/statut_application.php

    r28170 r41829  
    2323                $application = new application($id_applicant, $id_formulaire, $id_application);
    2424
    25                 if (autoriser('editer', 'formulaires')) {
     25                if (autoriser('editer', 'formulaires', $id_formulaire)) {
    2626
    2727                        if ($_REQUEST['statut'] == 'poubelle') {
  • _plugins_/spip-formulaires/action/statut_formulaire.php

    r28173 r41829  
    2222                $redirection = generer_url_ecrire('formulaires', "id_formulaire=$id_formulaire", true);
    2323
    24                 if (autoriser('editer', 'formulaires')) {
     24                if (autoriser('editer', 'formulaires', $id_formulaire)) {
    2525
    2626                        $formulaire = new formulaire($id_formulaire);
     
    2828                        if (!empty($_REQUEST['statut'])) {
    2929                                $statut = $_REQUEST['statut'];
    30                                 $redirection = $formulaire->enregistrer_statut($statut);
     30                                if ($statut!="en_ligne" || autoriser('publierdans','rubrique',$formulaire->id_rubrique)) {
     31                                        $redirection = $formulaire->enregistrer_statut($statut);
     32                                }
    3133                        }
    3234               
  • _plugins_/spip-formulaires/action/supprimer_bloc.php

    r28051 r41829  
    2323                $ajax                   = $_REQUEST['ajax'];
    2424
    25                 if (autoriser('editer', 'formulaires')) {
     25                if (autoriser('editer', 'formulaires', $id_formulaire)) {
    2626
    2727                        $bloc = new bloc($id_formulaire, $id_bloc);
  • _plugins_/spip-formulaires/action/supprimer_choix_question.php

    r28051 r41829  
    2525                $ajax                           = $_REQUEST['ajax'];
    2626
    27                 if (autoriser('editer', 'formulaires')) {
     27                if (autoriser('editer', 'formulaires', $id_formulaire)) {
    2828
    2929                        $choix_question = new choix_question($id_formulaire, $id_bloc, $id_question, $id_choix_question);
  • _plugins_/spip-formulaires/action/supprimer_question.php

    r28051 r41829  
    2424                $ajax                   = $_REQUEST['ajax'];
    2525
    26                 if (autoriser('editer', 'formulaires')) {
     26                if (autoriser('editer', 'formulaires', $id_formulaire)) {
    2727
    2828                        $question = new question($id_formulaire, $id_bloc, $id_question);
  • _plugins_/spip-formulaires/action/valider_application.php

    r28170 r41829  
    1818
    1919        function action_valider_application() {
    20                 if (autoriser('editer', 'formulaires')) {
     20                $id_formulaire = $t['id_formulaire'];
     21                if (autoriser('editer', 'formulaires', $id_formulaire)) {
    2122                        $id_application = $_REQUEST['id_application'];
    2223                        $t = sql_fetsel('id_formulaire, id_applicant', 'spip_applications', 'id_application='.intval($id_application));
    23                         $id_formulaire = $t['id_formulaire'];
    2424                        $id_applicant = $t['id_applicant'];
    2525                        $application = new application($id_applicant, $id_formulaire, $id_application);
  • _plugins_/spip-formulaires/base/formulaires.php

    r28717 r41829  
    202202        function formulaires_install($action) {
    203203                include_spip('inc/plugin');
    204                 $info_plugin_formulaires = plugin_get_infos(_NOM_PLUGIN_FORMULAIRES);
     204                if(version_compare($GLOBALS['spip_version_code'],'15375','>=')) {
     205                        $get_infos = charger_fonction('get_infos','plugins');
     206                        $info_plugin_formulaires = $get_infos(_DIR_PLUGIN_SPIPBB);
     207                }
     208                else {
     209                        $info_plugin_formulaires = plugin_get_infos(_DIR_PLUGIN_SPIPBB);
     210                }
    205211                $version_plugin = $info_plugin_formulaires['version'];
    206212                switch ($action) {
  • _plugins_/spip-formulaires/exec/applications.php

    r28170 r41829  
    2323                global $spip_lang_right;
    2424
    25                 if (!autoriser('voir', 'formulaires')) {
     25                $id_application = intval($_GET['id_application']);
     26                $t = sql_fetsel('id_formulaire, id_applicant', 'spip_applications', 'id_application='.intval($id_application));
     27                $id_formulaire = $t['id_formulaire'];
     28                $id_applicant = $t['id_applicant'];
     29               
     30                if (!autoriser('voir', 'formulaires',$id_formulaire)) {
    2631                        include_spip('inc/minipres');
    2732                        echo minipres();
     
    2934                }
    3035
    31                 $id_application = intval($_GET['id_application']);
    32                 $t = sql_fetsel('id_formulaire, id_applicant', 'spip_applications', 'id_application='.intval($id_application));
    33                 $id_formulaire = $t['id_formulaire'];
    34                 $id_applicant = $t['id_applicant'];
    3536                $application = new application($id_applicant, $id_formulaire, $id_application);
    3637
     
    3839
    3940                $commencer_page = charger_fonction('commencer_page', 'inc');
    40                 echo $commencer_page($application->applicant->email, "naviguer", "formulaires_tous");
     41                echo $commencer_page($application->applicant->txt, "naviguer", "formulaires_tous");
    4142
    4243                echo debut_gauche('', true);
     
    8687                echo '</div>';
    8788
    88                 echo '<h1>'.$application->applicant->email.'</h1>';
     89                echo '<h1>'.$application->applicant->txt.'</h1>';
    8990
    9091                echo '<br class="nettoyeur" />';
  • _plugins_/spip-formulaires/exec/applications_edit.php

    r28170 r41829  
    2323                global $spip_lang_right;
    2424
    25                 if (!autoriser('editer', 'formulaires')) {
     25                $id_application = intval($_GET['id_application']);
     26                $t = sql_fetsel('id_formulaire, id_applicant', 'spip_applications', 'id_application='.intval($id_application));
     27                $id_applicant = $t['id_applicant'];
     28                $id_formulaire = $t['id_formulaire'];
     29                if (!autoriser('editer', 'formulaires',$id_formulaire)) {
    2630                        include_spip('inc/minipres');
    2731                        echo minipres();
     
    2933                }
    3034
    31                 $id_application = intval($_GET['id_application']);
    32                 $t = sql_fetsel('id_formulaire, id_applicant', 'spip_applications', 'id_application='.intval($id_application));
    33                 $id_formulaire = $t['id_formulaire'];
    34                 $id_applicant = $t['id_applicant'];
    3535                $application = new application($id_applicant, $id_formulaire, $id_application);
    3636
  • _plugins_/spip-formulaires/exec/blocs_edit.php

    r28070 r41829  
    2121        function exec_blocs_edit() {
    2222               
    23                 if (!autoriser('editer', 'formulaires')) {
     23               
     24                $id_formulaire  = intval($_GET['id_formulaire']);
     25                if (!autoriser('editer', 'formulaires', $id_formulaire)) {
    2426                        include_spip('inc/minipres');
    2527                        echo minipres();
     
    2729                }
    2830
    29                 $id_formulaire  = intval($_GET['id_formulaire']);
    3031                $id_bloc                = intval($_GET['id_bloc']);
    3132               
  • _plugins_/spip-formulaires/exec/blocs_tous.php

    r28051 r41829  
    2121        function exec_blocs_tous() {
    2222
    23                 if (!autoriser('editer', 'formulaires')) {
     23                $id_formulaire  = intval($_GET['id_formulaire']);
     24                if (!autoriser('editer', 'formulaires', $id_formulaire)) {
    2425                        include_spip('inc/minipres');
    2526                        echo minipres();
     
    2728                }
    2829
    29                 $formulaire = new formulaire($_GET['id_formulaire']);
     30                $formulaire = new formulaire($id_formulaire);
    3031
    3132                echo $formulaire->afficher();
  • _plugins_/spip-formulaires/exec/choix_question_edit.php

    r28070 r41829  
    2121        function exec_choix_question_edit() {
    2222               
    23                 if (!autoriser('editer', 'formulaires')) {
     23                $id_formulaire          = intval($_REQUEST['id_formulaire']);
     24                if (!autoriser('editer', 'formulaires', $id_formulaire)) {
    2425                        include_spip('inc/minipres');
    2526                        echo minipres();
     
    3233                        $spip_lettres_actif = false;
    3334
    34                 $id_formulaire          = intval($_REQUEST['id_formulaire']);
    3535                $id_bloc                        = intval($_REQUEST['id_bloc']);
    3636                $id_question            = intval($_REQUEST['id_question']);
  • _plugins_/spip-formulaires/exec/formulaires.php

    r33918 r41829  
    2323                global $spip_lang_right;
    2424
    25                 if (!autoriser('voir', 'formulaires')) {
     25                $id_formulaire = intval($_GET['id_formulaire']);
     26                if (!autoriser('voir', 'formulaires', $id_formulaire)) {
    2627                        include_spip('inc/minipres');
    2728                        echo minipres();
     
    2930                }
    3031
    31                 $id_formulaire = intval($_GET['id_formulaire']);
    3232                $formulaire = new formulaire($_GET['id_formulaire']);
    3333               
     
    7171                if ($formulaire->statut == 'hors_ligne') {
    7272                        echo '<li class="prepa selected">'.http_img_pack('puce-blanche.gif', 'puce-blanche', '')._T('formulairesprive:hors_ligne').'</li>';
    73                         echo '<li class="publie"><a href="'.generer_url_action('statut_formulaire', 'id_formulaire='.$formulaire->id_formulaire.'&statut=en_ligne', false, true).'">'.http_img_pack('puce-verte.gif', 'puce-verte', '')._T('formulairesprive:a_mettre_en_ligne').'</a></li>';
     73                        if (autoriser('publierdans','rubrique',$formulaire->id_rubrique)) {
     74                                echo '<li class="publie"><a href="'.generer_url_action('statut_formulaire', 'id_formulaire='.$formulaire->id_formulaire.'&statut=en_ligne', false, true).'">'.http_img_pack('puce-verte.gif', 'puce-verte', '')._T('formulairesprive:a_mettre_en_ligne').'</a></li>';
     75                        }
     76                        if ($formulaire->possede_applications())
     77                                echo '<li class="publie"><a href="'.generer_url_action('statut_formulaire', 'id_formulaire='.$formulaire->id_formulaire.'&statut=export', false, true).'">'.http_img_pack('puce-verte.gif', 'puce-verte', '')._T('formulairesprive:exporter_resultats').'</a></li>';
    7478                        echo '<li class="poubelle"><a href="'.generer_url_action('statut_formulaire', 'id_formulaire='.$formulaire->id_formulaire.'&statut=poubelle', false, true).'">'.http_img_pack('puce-poubelle.gif', 'puce-poubelle', '')._T('formulairesprive:a_supprimer').'</a></li>';
    7579                }
     
    7781                        echo '<li class="publie"><a href="'.generer_url_action('statut_formulaire', 'id_formulaire='.$formulaire->id_formulaire.'&statut=hors_ligne', false, true).'">'.http_img_pack('puce-blanche.gif', 'puce-blanche', '')._T('formulairesprive:a_mettre_hors_ligne').'</a></li>';
    7882                        echo '<li class="publie selected">'.http_img_pack('puce-verte.gif', 'puce-verte', '')._T('formulairesprive:a_mettre_en_ligne').'</li>';
    79                         if ($formulaire->limiter_invitation == 'oui' and $formulaire->possede_applications())
     83                        if ($formulaire->possede_applications())
    8084                                echo '<li class="publie"><a href="'.generer_url_action('statut_formulaire', 'id_formulaire='.$formulaire->id_formulaire.'&statut=export', false, true).'">'.http_img_pack('puce-verte.gif', 'puce-verte', '')._T('formulairesprive:exporter_resultats').'</a></li>';
    8185                        echo '<li class="poubelle"><a href="'.generer_url_action('statut_formulaire', 'id_formulaire='.$formulaire->id_formulaire.'&statut=poubelle', false, true).'">'.http_img_pack('puce-poubelle.gif', 'puce-poubelle', '')._T('formulairesprive:a_supprimer').'</a></li>';
     
    8690
    8791                if ($formulaire->statut == 'en_ligne') {
    88                         echo '<table class="cellule-h-table" cellpadding="0" style="vertical-align: middle"><tr><td><a href="'.generer_url_formulaire($formulaire->id_formulaire).'" class="cellule-h"><span class="cell-i"><img src="../prive/images/rien.gif" alt="'._T('formulairesprive:voir_en_ligne').'"  style="background: url(../prive/images/racine-24.gif) center center no-repeat;" /></span></a></td><td class="cellule-h-lien"><a href="'.generer_url_formulaire($formulaire->id_formulaire).'" class="cellule-h">'._T('formulairesprive:voir_en_ligne').'</a></td></tr></table>';
     92                        echo '<table class="cellule-h-table" cellpadding="0" style="vertical-align: middle"><tr><td><a href="'.generer_url_formulaire($formulaire->id_formulaire).'" class="cellule-h" target="_blank"><span class="cell-i"><img src="../prive/images/rien.gif" alt="'._T('formulairesprive:voir_en_ligne').'"  style="background: url(../prive/images/racine-24.gif) center center no-repeat;" /></span></a></td><td class="cellule-h-lien"><a href="'.generer_url_formulaire($formulaire->id_formulaire).'" class="cellule-h" target="_blank">'._T('formulairesprive:voir_en_ligne').'</a></td></tr></table>';
    8993                }
    9094                echo '</div>';
     
    123127                        $config.= '<tr><td>'._T('formulairesprive:limiter_applicant').'</td><td><strong>'._T('formulairesprive:'.$formulaire->limiter_applicant).'</strong></td></tr>';
    124128                $config.= '<tr><td>'._T('formulairesprive:notifier_auteurs').'</td><td><strong>'._T('formulairesprive:'.$formulaire->notifier_auteurs).'</strong></td></tr>';
     129                $config.= '<tr><td>'._T('formulairesprive:notifier_applicant').'</td><td><strong>'._T('formulairesprive:'.$formulaire->notifier_applicant).'</strong></td></tr>';
    125130                $config.= '</table>';
    126131                $config.= fin_cadre_enfonce(true);
     
    143148                echo '</div>';
    144149
    145                 echo '<h1>'.extraire_multi($formulaire->titre).'</h1>';
     150                echo '<h1>'.$formulaire->titre.'</h1>';
    146151               
    147152                echo '<br class="nettoyeur" />';
     
    171176                echo icone_inline(_T('formulairesprive:creer_nouveau_bloc'), generer_url_ecrire("blocs_edit","id_formulaire=".$formulaire->id_formulaire."&new=oui"), _DIR_PLUGIN_FORMULAIRES.'/prive/images/bloc.png', "creer.gif", $spip_lang_right);
    172177
    173                 if ($formulaire->limiter_invitation == 'oui') {
    174                         echo '<br class="nettoyeur" />';
    175                         echo afficher_objets('application', _T('formulairesprive:liste_applications'), array('FROM' => 'spip_applications', 'WHERE' => 'id_formulaire='.intval($formulaire->id_formulaire), 'ORDER BY' => 'maj DESC'));
     178                echo '<br class="nettoyeur" />';
     179                echo afficher_objets('application', _T('formulairesprive:liste_applications'), array('FROM' => 'spip_applications', 'WHERE' => 'id_formulaire='.intval($formulaire->id_formulaire), 'ORDER BY' => 'maj DESC'));
     180                if ($formulaire->limiter_invitation == 'oui') {
    176181                        echo icone_inline(_T('formulairesprive:creer_invitation'), generer_url_ecrire("invitations_edit","id_formulaire=".$formulaire->id_formulaire), _DIR_PLUGIN_FORMULAIRES.'/prive/images/invitation.png', "creer.gif", $spip_lang_right);
    177182                }
  • _plugins_/spip-formulaires/exec/formulaires_edit.php

    r28070 r41829  
    2222        function exec_formulaires_edit() {
    2323
    24                 if (!autoriser('editer', 'formulaires')) {
     24                $id_formulaire  = $_GET['id_formulaire'];
     25                $id_rubrique    = $_GET['id_rubrique'];
     26                $opt['id_rubrique'] = ($id_rubrique==NULL) ? $_POST['id_parent'] : $id_rubrique;
     27                if (!autoriser('editer', 'formulaires', $id_formulaire, NULL, $opt)) {
    2528                        include_spip('inc/minipres');
    2629                        echo minipres();
     
    2831                }
    2932
    30                 $id_formulaire  = $_GET['id_formulaire'];
    31                 $id_rubrique    = $_GET['id_rubrique'];
    32                
    3333                pipeline('exec_init', array('args' => array('exec' => 'formulaires_edit', 'id_formulaire' => $id_formulaire), 'data' => ''));
    3434
     
    4646                        if ($formulaire->limiter_invitation     == 'oui') {
    4747                                $formulaire->limiter_applicant = 'oui';
    48                                 $formulaire->notifier_applicant = 'non';
    4948                        } else {
    5049                                $formulaire->limiter_applicant = $_POST['limiter_applicant'];
    51                                 $formulaire->notifier_applicant = $_POST['notifier_applicant'];
    5250                        }
     51                        $formulaire->notifier_applicant = $_POST['notifier_applicant'];
    5352                        $formulaire->notifier_auteurs = $_POST['notifier_auteurs'];
    5453                        $formulaire->texte = $_POST['texte'];
     
    152151                echo '</select>';
    153152                echo '</li>';
     153               
     154                echo '<li class="obligatoire">';
     155                echo '<label for="notifier_applicant">'._T('formulairesprive:notifier_applicant').'</label>';
     156                echo '<select name="notifier_applicant" id="notifier_applicant" class="fondl">';               
     157                echo '<option value="non"'.(($formulaire->notifier_applicant == 'non') ? ' selected="selected"' : '' ).'>'._T('formulairesprive:non').'</option>';
     158                echo '<option value="oui"'.(($formulaire->notifier_applicant == 'oui') ? ' selected="selected"' : '' ).'>'._T('formulairesprive:oui').'</option>';
     159                echo '</select>';
     160                echo '</li>';
    154161
    155162            echo '<li class="obligatoire">';
     
    207214                echo '</ul>';
    208215
    209                 echo '<input type="hidden" name="notifier_applicant" value="non" />';
    210 
    211216                echo '<p class="boutons"><input type="submit" class="submit" name="enregistrer" value="'._T('formulairesprive:enregistrer').'" /></p>';
    212217
  • _plugins_/spip-formulaires/exec/invitations_edit.php

    r28173 r41829  
    2121        function exec_invitations_edit() {
    2222               
    23                 if (!autoriser('editer', 'formulaires')) {
     23                $id_formulaire  = intval($_GET['id_formulaire']);
     24                if (!autoriser('editer', 'formulaires', $id_formulaire)) {
    2425                        include_spip('inc/minipres');
    2526                        echo minipres();
     
    3233                        $spip_lettres_actif = false;
    3334
    34                 $id_formulaire  = intval($_GET['id_formulaire']);
    3535                $formulaire             = new formulaire($id_formulaire);
    3636               
  • _plugins_/spip-formulaires/exec/questions_edit.php

    r28170 r41829  
    2121        function exec_questions_edit() {
    2222               
    23                 if (!autoriser('editer', 'formulaires')) {
     23                $id_formulaire  = intval($_GET['id_formulaire']);
     24                if (!autoriser('editer', 'formulaires', $id_formulaire)) {
    2425                        include_spip('inc/minipres');
    2526                        echo minipres();
     
    3233                        $spip_lettres_actif = false;
    3334
    34                 $id_formulaire  = intval($_GET['id_formulaire']);
    3535                $id_bloc                = intval($_REQUEST['id_bloc']);
    3636                $id_question    = intval($_GET['id_question']);
     
    291291                echo '</script>'."\n";
    292292
    293                 echo '<input type="hidden" name="notifier_applicant" value="non" />';
    294 
    295293                echo '<p class="boutons"><input type="submit" class="submit" name="enregistrer" value="'._T('formulairesprive:enregistrer').'" /></p>';
    296294
  • _plugins_/spip-formulaires/inc/afficher_applications.php

    r28069 r41829  
    4343                        $vals[] = http_img_pack('puce-verte.gif', 'puce-verte', ' border="0" style="margin: 1px;"');
    4444
    45                 $vals[] = '<a href="'.generer_url_ecrire('applications','id_application='.$id_application).'">'.$application->applicant->email.'</a>';
     45                $vals[] = '<a href="'.generer_url_ecrire('applications','id_application='.$id_application).'">'.$application->applicant->txt.'</a>';
    4646
    4747                $vals[] = affdate_jourcourt($maj);
  • _plugins_/spip-formulaires/inc/formulaires_classes.php

    r39186 r41829  
    3333                var $mdp;
    3434                var $nom;
     35                var $txt;
    3536
    3637                var $existe = false;
     
    6263                                        $this->iv                       = base64_decode($tableau['iv']);
    6364                                        $this->email            = $tableau['email'];
     65                                        $this->txt                      = ($this->email!=NULL) ? $this->email : ("Visiteur n° " . $this->id_applicant);
    6466                                        $this->nom                      = $tableau['nom'];
    6567                                        $this->mdp                      = $tableau['mdp'];
     
    856858                                                if (!ereg(_REGEXP_EMAIL, $valeur))
    857859                                                        return false;
    858                                                 $verification = sql_select('id_applicant', 'spip_applicants', 'email="'.addslashes($valeur).'"');
     860
     861                                                //$verification = sql_select('id_applicant', 'spip_applicants', 'email="'.addslashes($valeur).'"');
     862                                                $verification = sql_select(
     863                                                                                        array(
     864                                                                                                'spip_applicants.id_applicant'
     865                                                                                        ),
     866                                                                                        array(
     867                                                                                                'spip_applicants',
     868                                                                                                'spip_applications'
     869                                                                                        ),
     870                                                                                        array(
     871                                                                                                '`spip_applications`.`id_applicant`=`spip_applicants`.`id_applicant`',
     872                                                                                                '`spip_applicants`.`email`="'.addslashes($valeur).'"',
     873                                                                                                '`spip_applications`.`id_formulaire`="'.addslashes($this->bloc->formulaire->id_formulaire).'"'/*,
     874                                                                                                '`spip_applications`.`statut`="valide"'*/
     875                                                                                        ));
     876/*
     877 * Cette requête a été complètement ré-écrite
     878 * pour gérer les cas où une même personne répond à plusieurs formulaires
     879 * en voici un code SQL exemple complet:
     880
     881SELECT spip_applicants.id_applicant
     882FROM `spip_applications`, `spip_applicants`
     883WHERE `spip_applications`.`id_applicant`=`spip_applicants`.`id_applicant`
     884      AND `spip_applicants`.`email`='jtlebi@gmail.com'
     885      AND `spip_applications`.`id_formulaire`=18
     886      AND `spip_applications`.`statut`='valide'
     887 */
    859888                                                if (sql_count($verification) == 0) {
    860889                                                        return true;
     
    10141043                        }
    10151044
    1016                         if ($this->formulaire->notifier_auteurs == 'oui') {
     1045                        if ($this->formulaire->notifier_auteurs == 'oui' || $this->formulaire->notifier_applicant == 'oui' ) {
    10171046                                include_spip('inc/facteur_classes');
    1018                                 $objet                  = recuperer_fond('notifications/notification_nouveau_resultat_titre', array('id_formulaire' => $this->formulaire->id_formulaire, 'id_application' => $this->id_application, 'lang' => $lang));
    1019                                 $message_html   = recuperer_fond('notifications/notification_nouveau_resultat_html', array('id_formulaire' => $this->formulaire->id_formulaire, 'id_application' => $this->id_application, 'lang' => $lang));
    1020                                 $message_texte  = recuperer_fond('notifications/notification_nouveau_resultat_texte', array('id_formulaire' => $this->formulaire->id_formulaire, 'id_application' => $this->id_application, 'lang' => $lang));
     1047                               
    10211048                                // réponses aux questions de type "auteurs"
    10221049                                $resA = sql_select('A.email',
     
    10351062                                                                        INNER JOIN spip_auteurs_formulaires AS AF ON AF.id_auteur=A.id_auteur',
    10361063                                                                        'AF.id_formulaire='.intval($this->formulaire->id_formulaire));
     1064                                $tableau_emails = array();
    10371065                                if (sql_count($resB) >= 1) {
    1038                                         $tableau_emails = array();
    10391066                                        if (sql_count($resA) >= 1) {
    10401067                                                while ($arr = sql_fetch($resA))
     
    10441071                                                        $tableau_emails[] = $arr['email'];
    10451072                                        }
    1046                                         $email_premier_auteur = $tableau_emails[0];
    1047                                         $notification = new Facteur($email_premier_auteur, $objet, $message_html, $message_texte);
    1048                                         $tableau_emails_sans_premier = array_slice($tableau_emails, 1);
    1049                                         foreach ($tableau_emails_sans_premier as $email_auteur)
    1050                                                 $notification->AddAddress($email_auteur);
    1051                                         $resC = sql_select('R.valeur AS email_applicant',
     1073                                }       
     1074                               
     1075                                //mail de la personne qui répond
     1076                                $resC = sql_select('R.valeur AS email',
    10521077                                                                                'spip_reponses AS R
    10531078                                                                                INNER JOIN spip_questions AS Q ON Q.id_question=R.id_question
     
    10561081                                                                                        AND B.id_formulaire='.intval($this->formulaire->id_formulaire).'
    10571082                                                                                        AND R.id_application='.intval($this->id_application), '', '1');
    1058                                         if (sql_count($resC) == 1) {
    1059                                                 $t = sql_fetch($resC);
    1060                                                 $notification->AddReplyTo($t['email_applicant']);
    1061                                         } else {
    1062                                                 $resD = sql_select('R.valeur AS email',
     1083                                if (sql_count($resC) == 1) {
     1084                                        $t = sql_fetch($resC);
     1085                                } else {
     1086                                        $resD = sql_select('R.valeur AS email',
    10631087                                                                                        'spip_reponses AS R
    10641088                                                                                        INNER JOIN spip_questions AS Q ON Q.id_question=R.id_question
     
    10671091                                                                                                AND B.id_formulaire='.intval($this->formulaire->id_formulaire).'
    10681092                                                                                                AND R.id_application='.intval($this->id_application), '', '1');
    1069                                                 if (sql_count($resD) == 1) {
    1070                                                         $t = sql_fetch($resD);
    1071                                                         $notification->AddReplyTo($t['email']);
    1072                                                 }
     1093                                        if (sql_count($resD) == 1) {
     1094                                                $t = sql_fetch($resC);
    10731095                                        }
    1074                                         $message_envoye = $notification->Send();
    1075                                 }
     1096                                }
     1097                                       
     1098                                //envoye des mails
     1099                                if ($this->formulaire->notifier_auteurs == 'oui' && count($tableau_emails)>0) {
     1100                                        $objet                  = recuperer_fond('notifications/notification_nouveau_resultat_titre', array('id_formulaire' => $this->formulaire->id_formulaire, 'id_application' => $this->id_application, 'lang' => $lang));
     1101                                        $message_html   = recuperer_fond('notifications/notification_nouveau_resultat_html', array('id_formulaire' => $this->formulaire->id_formulaire, 'id_application' => $this->id_application, 'lang' => $lang));
     1102                                        $message_texte  = recuperer_fond('notifications/notification_nouveau_resultat_texte', array('id_formulaire' => $this->formulaire->id_formulaire, 'id_application' => $this->id_application, 'lang' => $lang));
     1103
     1104                                        $email_premier_auteur = $tableau_emails[0];
     1105                                        $notification_auteur = new Facteur($email_premier_auteur, $objet, $message_html, $message_texte);
     1106                                        $tableau_emails_sans_premier = array_slice($tableau_emails, 1);
     1107                                        foreach ($tableau_emails_sans_premier as $email_auteur)
     1108                                                $notification_auteur->AddAddress($email_auteur);
     1109                                        if (isset($t['email'])) {
     1110                                                $notification_auteur->AddReplyTo($t['email']);
     1111                                        }
     1112                                        $message_envoye = $notification_auteur->Send();
     1113                                }
     1114                                if ($this->formulaire->notifier_applicant=='oui'  && isset($t['email']))  {
     1115                                       
     1116                                        $objet                  = recuperer_fond('notifications/notification_nouveau_resultat_applicant_titre', array('id_formulaire' => $this->formulaire->id_formulaire, 'id_application' => $this->id_application, 'lang' => $lang));
     1117                                        $message_html   = recuperer_fond('notifications/notification_nouveau_resultat_applicant_html', array('id_formulaire' => $this->formulaire->id_formulaire, 'id_application' => $this->id_application, 'lang' => $lang));
     1118                                        $message_texte  = recuperer_fond('notifications/notification_nouveau_resultat_applicant_texte', array('id_formulaire' => $this->formulaire->id_formulaire, 'id_application' => $this->id_application, 'lang' => $lang));
     1119
     1120                                        $notification_interroge = new Facteur($t['email'] ,$objet, $message_html, $message_texte);
     1121                                        foreach ($tableau_emails as $mail)
     1122                                                $notification_interroge->AddReplyTo($mail);
     1123                                        $notification_interroge->From=$tableau_emails[0];
     1124                                        $notification_interroge->FromName=$tableau_emails[0];
     1125                                        $message_envoye=$notification_interroge->Send();
     1126                                }
     1127                               
    10761128                        }
    10771129                }
  • _plugins_/spip-formulaires/inc/formulaires_pipelines.php

    r28636 r41829  
    236236                global $spip_lang_right;
    237237                $id_rubrique = $flux['args']['id_rubrique'];
    238                 if (autoriser('voir', 'formulaires')) {
     238                $opt['id_rubrique'] = $id_rubrique;
     239                if (autoriser('voir', 'formulaires', NULL, NULL, $opt)) {
    239240                        if ($id_rubrique) {
    240241                                $flux['data'].= afficher_objets('formulaire', _T('formulairesprive:tous_formulaires_rubrique'), array('FROM' => 'spip_formulaires', 'WHERE' => 'id_rubrique='.intval($id_rubrique), 'ORDER BY' => 'maj DESC'));
  • _plugins_/spip-formulaires/lang/formulairesprive_fr.php

    r28173 r41829  
    6262                'limiter_invitation' => "Sur invitation",
    6363                'limiter_applicant' => "Un seul résultat par usager",
    64                 'notifier_auteurs' => "Envoyer les résultats aux auteurs",
     64                'notifier_auteurs' => "Envoyer les résultats aux auteurs du formaulaire",
     65                'notifier_applicant' => "Envoyer un mail de confirmation ",
    6566                'modifier_formulaire' => "Modifier ce formulaire",
    6667                'creer_nouveau_bloc' => "Créer un nouveau bloc",
  • _plugins_/spip-formulaires/lang/formulairespublic_fr.php

    r28266 r41829  
    1717
    1818                'un_internaute_a_valide_le_formulaire' => 'Un internaute a validé le formulaire ',
     19                'vous_avez_completer_le_formulaire' => 'Vous avez complèté le formulaire ',
    1920                'types_fichier_autorises' => "Types de fichier autorisés",
    2021
Note: See TracChangeset for help on using the changeset viewer.