After replying returns on the last message
[banana.git] / banana / banana.inc.php.in
index 362dbc4..a70aa46 100644 (file)
@@ -53,7 +53,7 @@ class Banana
      *   $matches[2] = "http://www.polytechnique.org"
      *   $matches[3] = "]"
      */
-    var $url_regexp  = '(["\[])?((?:https?|ftp|news)://(?:&|,?[a-z@0-9.~%$£µ&i#\-+=_/\?])*)(["\]])?';
+    var $url_regexp  = '(["\[])?((?:https?|ftp|news)://(?:&|,*[a-z@0-9.~%$£µ&i#\-+=_/\?])*)(["\]])?';
 
     
     /** Boundary for multipart messages
@@ -316,10 +316,14 @@ class Banana
              . "\n"
              . "Message canceled with Banana";
         if ($this->nntp->post($msg)) {
+            $ndx = $this->spool->getndx($artid) - 1;
+            if ($ndx > 50) {
+                $ndx = 0;
+            }
             $this->spool->delid($id);
             $this->nntp->quit();
             redirectInBanana(Array('group' => $group,
-                           'first' => $id));
+                                   'first' => $ndx));
         } else {
             return '<p class="error">'._b_('Impossible d\'annuler le message').'</p>';
         }
@@ -345,13 +349,17 @@ class Banana
             $this->nntp->group($group);
             if ($this->_newPost($id)) {
                 $subject  = 'Re: ' . preg_replace("/^re\s*:\s*/i", '', $this->post->headers['subject']);
-                $body     = utf8_encode($this->post->name." "._b_("a écrit"))." :\n"
+                $body     = to_entities(utf8_encode($this->post->name." "._b_("a écrit"))." :\n"
                                         . wrap($this->post->get_body(), "> ")
-                          . $this->profile['sig'] ? "\n\n-- \n". $this->profile['sig'] : '';
+                          . ($this->profile['sig'] ? "\n\n-- \n". $this->profile['sig'] : ''));
                 $target   = isset($this->post->headers['followup-to']) ?
                                 $this->post->headers['followup-to'] : $this->post->headers['newsgroups'];
                 $followup = null;
             }
+        } else {
+            $targe   = $group;
+            $subject = $followup = null;
+            $body    = $this->profile['sig'] ? "\n\n-- \n". $this->profile['sig'] : '';
         }
 
         $this->nntp->quit();
@@ -373,7 +381,7 @@ class Banana
                . '<td>' . $this->profile['org'] . '</td></tr>'
                . '<tr><th colspan="2">' . _b_('Corps') . '</th></tr>'
                . '<tr><td colspan="2"><textarea name="body" cols="74" rows="16">'
-               .  to_entities($body) . '</textarea></td></tr>';
+               .  $body . '</textarea></td></tr>';
         if ($this->can_attach) {
             $html .= '<tr><th colspan="2">' . _b_('Pièce jointe') . '</th></tr>'
                   . '<tr><td colspan="2">'
@@ -471,11 +479,12 @@ class Banana
         if ($this->nntp->post($msg)) {
             $dir = Array('group' => $group);
             if ($artid != -1) {
-                $dir['first'] = $artid;
+                $dir['artid'] = $artid;
             }
             redirectInBanana($dir);
         } else {
-            return '<p class="error">' . _b_('Impossible de poster le message') . '</p>'
+            return '<p class="error">' . _b_('Impossible de poster le message. Le serveur a retourné l\'erreur :') . '</p>'
+                   . '<pre class="error">' . utf8_encode($this->nntp->lasterrortext) .'</pre>'
                    . $this->action_newFup($group, $artid);
         }
     }