Fix References compliancy
[banana.git] / banana / message.inc.php
index 6d2eafe..56885f7 100644 (file)
@@ -36,7 +36,7 @@ final class BananaMessage extends BananaMimePart
     {
         $msg = new BananaMessage();
         $msg->msg_headers = $headers;
-        $msg->makeTextPart($body, 'text/plain', '8bits', 'UTF-8', 'fixed');
+        $msg->makeTextPart($body, 'text/plain', '8bits', 'UTF-8', 'flowed');
         if (!is_null($file)) {
             $msg->addAttachment($file);
         }
@@ -134,6 +134,8 @@ final class BananaMessage extends BananaMimePart
         }
         if ($hdr == 'date') {
             return strtotime($this->headers['date']);
+        } else if ($hdr == 'references' || $hdr == 'reply-to') {
+            return str_replace('><', '> <', $this->headers[$hdr]);
         } else {
             return $this->headers[$hdr];
         }
@@ -229,8 +231,14 @@ final class BananaMessage extends BananaMimePart
     static public function formatReferences(array &$refs)
     {
         if (isset($refs['references'])) {
-            $text = str_replace('><', '> <', $refs['references']);
-            return preg_split('/\s/', strtr($text, Banana::$spool->ids));
+            $text = preg_split('/\s/', str_replace('><', '> <', $refs['references']));
+            $references = array();
+            foreach ($text as $id=>&$value) {
+                if (isset(Banana::$spool->ids[$value])) {
+                    $references[] = Banana::$spool->ids[$value];
+                }
+            }
+            return $references;
         } elseif (isset($refs['in-reply-to']) && isset(Banana::$spool->ids[$refs['in-reply-to']])) {
             return array(Banana::$spool->ids[$refs['in-reply-to']]);
         } else {