Adds MailNotFound exception and use it for unknown newletters.
authorStéphane Jacob <jacou@melix.net>
Wed, 21 Jan 2009 09:44:47 +0000 (10:44 +0100)
committerStéphane Jacob <jacou@melix.net>
Wed, 21 Jan 2009 12:20:09 +0000 (13:20 +0100)
include/massmailer.inc.php
include/newsletter.inc.php
modules/newsletter.php

index f4e53df..3f7bcdd 100644 (file)
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************/
 
+// {{{ class MailNotFound
+
+class MailNotFound extends Exception {
+}
+
+// }}}
+
 // {{{ class MassMailer
 
 abstract class MassMailer
index fc94a03..c58844e 100644 (file)
@@ -45,6 +45,9 @@ class NewsLetter extends MassMailer
             }
             $res = XDB::query("SELECT * FROM newsletter WHERE bits='new'");
         }
+        if ($res->numRows() != 1) {
+            throw new MailNotFound();
+        }
         $nl = $res->fetchOneAssoc();
 
         $this->_id        = $nl['id'];
index 18118a9..62dd684 100644 (file)
@@ -56,18 +56,25 @@ class NewsletterModule extends PLModule
 
         require_once 'newsletter.inc.php';
 
-        $nl  = new NewsLetter($nid);
-        if (Get::has('text')) {
-            $nl->toText($page, S::v('prenom'), S::v('nom'), S::v('femme'));
-        } else {
-            $nl->toHtml($page, S::v('prenom'), S::v('nom'), S::v('femme'));
-        }
-        if (Post::has('send')) {
-            $res = XDB::query("SELECT hash FROM newsletter_ins WHERE user_id = {?}", S::i('uid'));
-            $nl->sendTo(S::user()->login(), S::user()->bestEmail(),
-                        S::v('prenom'), S::v('nom'),
-                        S::v('femme'), S::v('mail_fmt') != 'texte',
-                        $res->fetchOneCell());
+        try {
+            $nl = new NewsLetter($nid);
+            if (Get::has('text')) {
+                $nl->toText($page, S::v('prenom'), S::v('nom'), S::v('femme'));
+            } else {
+                $nl->toHtml($page, S::v('prenom'), S::v('nom'), S::v('femme'));
+            }
+            if (Post::has('send')) {
+                $res = XDB::query("SELECT  hash
+                                     FROM  newsletter_ins
+                                    WHERE  user_id = {?}",
+                                  S::i('uid'));
+                $nl->sendTo(S::user()->login(), S::user()->bestEmail(),
+                            S::v('prenom'), S::v('nom'),
+                            S::v('femme'), S::v('mail_fmt') != 'texte',
+                            $res->fetchOneCell());
+            }
+        } catch (MailNotFound $e) {
+            return PL_NOT_FOUND;
         }
     }