#637: Check if the payment message is valid before submission
authorx2003bruneau <x2003bruneau@839d8a87-29fc-0310-9880-83ba4fa771e5>
Tue, 13 Mar 2007 16:49:03 +0000 (16:49 +0000)
committerx2003bruneau <x2003bruneau@839d8a87-29fc-0310-9880-83ba4fa771e5>
Tue, 13 Mar 2007 16:49:03 +0000 (16:49 +0000)
git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@1567 839d8a87-29fc-0310-9880-83ba4fa771e5

ChangeLog
classes/session.php
include/validations/paiements.inc.php
modules/xnetevents.php
templates/xnetevents/edit.tpl

index 08c2046..0051eae 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -54,6 +54,9 @@ Bug/Wish:
     * Xnet:
         - #639: Fix the number of pages                                    -FRU
 
+    * XnetEvents:
+        - #637: Check payment before submission                            -FRU
+
 ================================================================================
 VERSION 0.9.13                                                        30 01 2007
 
index a06662b..c52e239 100644 (file)
@@ -26,7 +26,10 @@ class Session
         @session_start();
         if (empty($_SESSION['challenge'])) {
             $_SESSION['challenge'] = sha1(uniqid(rand(), true));
-       }
+        }
+        if (!isset($_SESSION['perms'])) {
+            $_SESSION['perms'] = new FlagSet();
+        }
     }
 
     public static function destroy()
index 9b3a634..7e7f96b 100644 (file)
@@ -79,6 +79,24 @@ class PayReq extends Validate
     }
   
     // }}}
+    // {{{ function accept()
+
+    // check the message
+    public function accept()
+    {
+        // no text [AI JMIAJM IJA MIJ]
+        if (preg_match('/\[[-\'"A-Z ]+\]/', $this->msg_reponse)) {
+            $this->trig("La demande de paiement n'est pas valide. Merci de compléter le texte avant de la soumettre");
+            return false;
+        }
+        if (!preg_match('/<montant>/', $this->msg_reponse)) {
+            $this->trig("Le demande de paiement ne contient pas la balise obligatoire &lt;montant&gt;");
+            return false;
+        }
+        return true;
+    }
+
+    // }}}    
     // {{{ function submit() 
   
     // supprime les demandes de paiments pour le meme evenement
index ff366b2..dde6c99 100644 (file)
@@ -433,13 +433,19 @@ class XnetEventsModule extends PLModule
                                 Post::v('site'), $money_defaut,
                                 Post::v('confirmation'), 0, 999,
                                 $globals->asso('id'), $eid);
-                $p->submit();
+                if ($p->accept()) {
+                    $p->submit();
+                } else {
+                    $page->assign('paiement_message', Post::v('confirmation'));
+                    $page->assign('paiement_site', Post::v('site'));
+                    $error = true;
+                }
             }
 
             // events with no sub-event: add a sub-event with no name
             if ($nb_moments == 0) {
                 XDB::execute("INSERT INTO groupex.evenements_items
-                                        VALUES ({?}, {?}, '', '', 0)", $eid, 1);
+                                   VALUES ({?}, {?}, '', '', 0)", $eid, 1);
             }
 
             if (!$error) {
index 4860d75..9163587 100644 (file)
@@ -136,12 +136,12 @@ function deadlineChange(box)
     <tr>
       <th colspan="2">
         Paiement&nbsp;:&nbsp;
-        <select name="paiement_id" onchange="document.getElementById('new_pay').style.display=(value &lt; 0?'':'none')">
+        <select name="paiement_id" id="payid"  onchange="document.getElementById('new_pay').style.display=(value &lt; 0?'':'none')">
           {if $evt.paiement_id eq -2}
           <option value='-2'>Paiement en attente de validation</option>
           {/if}
           <option value=''>Pas de paiement</option>
-          <option value='-1'>- Nouveau paiement -</option>
+          <option value='-1' {if $paiement_message}selected="selected"{/if}>- Nouveau paiement -</option>
           {html_options options=$paiements selected=$evt.paiement_id}
         </select>
       </th>
@@ -153,17 +153,21 @@ function deadlineChange(box)
           <li><strong>Remplace les crochets</strong> ([...]) par le texte que tu désires y voir apparaître</li>
           <li>&lt;salutation&gt;, &lt;prenom&gt;, &lt;nom&gt; et &lt;montant&gt; seront <strong>automatiquement</strong> remplacés par les informations adaptées</li>
         </ul>
-        <textarea name="confirmation" rows="12" cols="65">&lt;salutation&gt; &lt;prenom&gt; &lt;nom&gt;,
+        <textarea name="confirmation" rows="12" cols="65">{if $paiement_message}{$paiement_message}{else}&lt;salutation&gt; &lt;prenom&gt; &lt;nom&gt;,
 
     Ton inscription à [METS LE NOM DE L'EVENEMENT ICI] a bien été enregistrée et ton paiement de &lt;montant&gt; a bien été reçu. 
     [COMPLETE EN PRECISANT LA DATE ET LA PERSONNE A CONTACTER]
 
     A très bientôt,
 
-    {$smarty.session.prenom} {$smarty.session.nom}</textarea><br />
-        Page internet de l'événement&nbsp;: <input size="40" name="site" value="{$asso.site|default:$platal->ns}" /><br />
+    {$smarty.session.prenom} {$smarty.session.nom}{/if}</textarea><br />
+        Page internet de l'événement&nbsp;: <input size="40" name="site" value="{$paiement_site|default:$asso.site|default:$platal->ns}" /><br />
         Le nouveau paiement sera activé automatiquement après validation par le trésorier de Polytechnique.org,
         ce qui sera fait sous peu.
+        <script type="text/javascript">//<![CDATA[
+          document.getElementById('new_pay').style.display=
+            (document.getElementById('payid').value < 0?'':'none');
+        //]]></script>
       </td>
     </tr>
   </table>