Merge branch 'platal-0.10.2'
[platal.git] / include / validations / paiements.inc.php
index 6782166..1ebafb5 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2007 Polytechnique.org                              *
+ *  Copyright (C) 2003-2010 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -38,15 +38,17 @@ class PayReq extends Validate
     public $evt;
     public $evt_intitule;
 
-    public $rules = "Laisser la validation à un trésorier";
+    public $rules = "Vérifier que les balises &lt;salutation&gt;, &lt;prenom&gt;, &lt;nom&gt;,  &lt;montant&gt; et &lt;comment&gt; n'ont pas été modifiées.
+Vérifier que le demandeur n'a pas laissé les crochets [].
+Si le télépaiement n'est pas lié à un groupe ou supérieur à 51 euros, laisser la validation à un trésorier";
     // }}}
     // {{{ constructor
 
-    public function __construct($_uid, $_intitule, $_site, $_montant, $_msg,
+    public function __construct(User &$_user, $_intitule, $_site, $_montant, $_msg,
                                 $_montantmin=0, $_montantmax=999, $_asso_id = 0,
                                 $_evt = 0, $_stamp=0)
     {
-        parent::__construct($_uid, false, 'paiements', $_stamp);
+        parent::__construct($_user, false, 'paiements', $_stamp);
 
         $this->titre        = $_intitule;
         $this->site         = $_site;
@@ -58,11 +60,11 @@ class PayReq extends Validate
         $this->montant_max  = $_montantmax;
 
         if ($_asso_id) {
-            $res = XDB::query("SELECT nom FROM groupex.asso WHERE id = {?}", $_asso_id);
+            $res = XDB::query("SELECT nom FROM groups WHERE id = {?}", $_asso_id);
             $this->asso = $res->fetchOneCell();
         }
         if ($_asso_id && $_evt) {
-            $res = XDB::query("SELECT intitule FROM groupex.evenements WHERE asso_id = {?} AND eid = {?}", $_asso_id, $_evt);
+            $res = XDB::query("SELECT intitule FROM group_events WHERE asso_id = {?} AND eid = {?}", $_asso_id, $_evt);
             $this->evt_intitule = $res->fetchOneCell();
         }
     }
@@ -86,11 +88,11 @@ class PayReq extends Validate
     {
         // 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");
+            $this->trigError("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;");
+            $this->trigError("Le demande de paiement ne contient pas la balise obligatoire &lt;montant&gt;");
             return false;
         }
         return true;
@@ -163,33 +165,27 @@ class PayReq extends Validate
 
     public function commit()
     {
-        global $globals;
-        $res = XDB::query("SELECT MAX(id) FROM paiement.paiements");
+        $res = XDB::query("SELECT MAX(id) FROM payments");
         $id = $res->fetchOneCell()+1;
-        $ret = XDB::execute("INSERT INTO paiement.paiements VALUES
+        $ret = XDB::execute("INSERT INTO payments VALUES
             ( {?}, {?}, {?}, '',
             {?}, {?}, {?},
             {?}, {?}, {?} )
             ",
             $id, $this->titre, $this->site,
             $this->montant, $this->montant_min, $this->montant_max,
-            $this->bestalias."@".$globals->mail->domain, $this->msg_reponse, $this->asso_id);
+            $this->user->bestEmail(), $this->msg_reponse, $this->asso_id);
         if ($this->asso_id && $this->evt) {
-            XDB::execute("UPDATE  groupex.evenements
+            XDB::execute("UPDATE  group_events
                              SET  paiement_id = {?}
                            WHERE  asso_id = {?} AND eid = {?}",
                          $id, $this->asso_id, $this->evt);
             $res = XDB::query("SELECT  a.nom, a.diminutif, e.intitule
-                                 FROM  groupex.asso AS a
-                           INNER JOIN  groupex.evenements AS e ON (a.id = e.asso_id)
+                                 FROM  groups AS a
+                           INNER JOIN  group_events AS e ON (a.id = e.asso_id)
                                 WHERE  e.eid = {?}",
                               $this->evt);
             list($nom, $diminutif, $evt) = $res->fetchOneRow();
-            $mailer = new PlMailer('xnetevents/mail.new_payment.tpl');
-            $mailer->assign('asso', $nom);
-            $mailer->assign('diminutif', $diminutif);
-            $mailer->assign('evt', $evt);
-            $mailer->assign('payment', $id);
             require_once dirname(__FILE__) . '/../../modules/xnetevents/xnetevents.inc.php';
             $participants = get_event_participants(get_event_detail($this->evt, false, $this->asso_id), null, 'nom');
             foreach ($participants as &$u) {
@@ -198,9 +194,19 @@ class PayReq extends Validate
                 }
                 $topay = $u['montant'] - $u['paid'];
                 if ($topay > 0) {
+                    $mailer = new PlMailer('xnetevents/newpayment.mail.tpl');
+                    $mailer->assign('asso', $nom);
+                    $mailer->assign('diminutif', $diminutif);
+                    $mailer->assign('evt', $evt);
+                    $mailer->assign('payment', $id);
                     $mailer->assign('prenom', $u['prenom']);
                     $mailer->assign('topay', $topay);
-                    $mailer->assign('to', $u['email']);
+
+                    if (strpos($u['email'], '@') === false) {
+                        $mailer->assign('to', $u['email'] . '@' . $globals->mail->domain);
+                    } else {
+                        $mailer->assign('to', $u['email']);
+                    }
                     $mailer->send();
                 }
             }