Catch message-id as a link to read the message
[banana.git] / banana / misc.inc.php
index f717c00..df81a6d 100644 (file)
@@ -300,7 +300,7 @@ function formatDisplayHeader($_header,$_text) {
 
         case "from":
             return formatFrom($_text);
-        
+
         case "references":
             $rsl     = "";
             $ndx     = 1;
@@ -571,6 +571,20 @@ function cleanurl($url)
     return '<a href="'.$url.'" title="'.$url.'">'.cutlink($url).'</a>';
 }
 
+function catchMailLink($email)
+{
+    global $banana;
+    $mid = '<' . $email . '>';
+    if (isset($banana->spool->ids[$mid])) {
+        return makeHREF(Array('group' => $banana->state['group'],
+                              'artid' => $banana->spool->ids[$mid]),
+                        $email);
+    } elseif (strpos($email, '$') !== false) {
+        return $email;
+    }   
+    return '<a href="mailto:' . $email . '">' . $email . '</a>';
+}
+
 /** Remove quotation marks
  */
 function replaceQuotes($text)
@@ -594,7 +608,9 @@ function formatbody($_text, $format='plain', $flowed=false)
         $url  = $banana->url_regexp;
         $res  = preg_replace("/(&lt;|&gt;|&quot;)/", " \\1 ", $res);
         $res  = preg_replace("!$url!ie", "'\\1'.cleanurl('\\2').'\\3'", $res);
-        $res  = preg_replace('/(["\[])?(?:mailto:)?([a-z0-9.\-+_]+@[a-z0-9.\-+_]+)(["\]])?/i', '\1<a href="mailto:\2">\2</a>\3', $res);
+        $res  = preg_replace('/(["\[])?(?:mailto:|news:)?([a-z0-9.\-+_\$]+@([\-.+_]?[a-z0-9])+)(["\]])?/ie',
+                             "'\\1' . catchMailLink('\\2') . '\\4'",
+                             $res);
         $res  = preg_replace("/ (&lt;|&gt;|&quot;) /", "\\1", $res);
 
         if ($format == 'richtext') {