Minor fix to newsletters: handle X.net 'ns' properly, don't explode when there is...
authorRaphaël Barrois <raphael.barrois@polytechnique.org>
Thu, 5 May 2011 22:08:45 +0000 (00:08 +0200)
committerRaphaël Barrois <raphael.barrois@polytechnique.org>
Thu, 5 May 2011 22:08:45 +0000 (00:08 +0200)
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
include/newsletter.inc.php
modules/newsletter.php

index 2faf993..b7e00ca 100644 (file)
@@ -501,10 +501,14 @@ class NewsLetter
     /** Get the prefix leading to the page for this NL
      * Only X.org / AX / X groups may be seen on X.org.
      */
-    public function prefix($enforce_xnet=true)
+    public function prefix($enforce_xnet=true, $with_group=true)
     {
         if (!empty($GLOBALS['IS_XNET_SITE'])) {
-            return $this->group . '/nl';
+            if ($with_group) {
+                return $this->group . '/nl';
+            } else {
+                return 'nl';
+            }
         }
         switch ($this->group) {
         case self::GROUP_XORG:
@@ -521,10 +525,14 @@ class NewsLetter
 
     /** Get the prefix to use for all 'admin' pages of this NL.
      */
-    public function adminPrefix($enforce_xnet=true)
+    public function adminPrefix($enforce_xnet=true, $with_group=true)
     {
         if (!empty($GLOBALS['IS_XNET_SITE'])) {
-            return $this->group . '/admin/nl';
+            if ($with_group) {
+                return $this->group . '/admin/nl';
+            } else {
+                return 'admin/nl';
+            }
         }
         switch ($this->group) {
         case self::GROUP_XORG:
@@ -825,7 +833,11 @@ class NLIssue
     public function last()
     {
         if (is_null($this->id_last)) {
-            $this->id_last = $this->nl->getIssue('last')->id;
+            try {
+                $this->id_last = $this->nl->getIssue('last')->id;
+            } catch (MailNotFound $e) {
+                $this->id_last = null;
+            }
         }
         return $this->id_last;
     }
index 02efc32..0f57706 100644 (file)
@@ -103,7 +103,7 @@ class NewsletterModule extends PLModule
         }
 
         if (!Post::has('nl_search')) {
-            pl_redirect($nl->prefix());
+            pl_redirect($nl->prefix(true, false));
         }
 
         $nl_search = Post::t('nl_search');
@@ -199,7 +199,7 @@ class NewsletterModule extends PLModule
             S::logger()->log('nl_issue_create', $nid);
 
             $id = $nl->createPending();
-            pl_redirect($nl->adminPrefix() . '/edit/' . $id);
+            pl_redirect($nl->adminPrefix(true, false) . '/edit/' . $id);
         }
 
         $page->assign_by_ref('nl', $nl);
@@ -273,7 +273,7 @@ class NewsletterModule extends PLModule
         // Delete an article
         if($action == 'delete') {
             $issue->delArticle($aid);
-            pl_redirect($nl->adminPrefix() . "/edit/$nid");
+            pl_redirect($nl->adminPrefix(true, false) . "/edit/$nid");
         }
 
         // Save an article
@@ -281,7 +281,7 @@ class NewsletterModule extends PLModule
             $art  = new NLArticle(Post::v('title'), Post::v('body'), Post::v('append'),
                                   $aid, Post::v('cid'), Post::v('pos'));
             $issue->saveArticle($art);
-            pl_redirect($nl->adminPrefix() . "/edit/$nid");
+            pl_redirect($nl->adminPrefix(true, false) . "/edit/$nid");
         }
 
         // Edit an article