From: x2003bruneau Date: Tue, 28 Feb 2006 21:31:19 +0000 (+0000) Subject: Possibilité de choisir un ordre préférentiel des formats de texte à afficher... X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=cc43419f905e061155a60fd0ccf3f3282dc6a9da;p=banana.git Possibilité de choisir un ordre préférentiel des formats de texte à afficher... Par défaut : text/plain puis text/html puis text/richtext puis format disponible git-svn-id: svn+ssh://murphy/home/svn/banana/trunk@10 9869982d-c50d-0410-be91-f2a2ec7c7c7b --- diff --git a/banana/banana.inc.php.in b/banana/banana.inc.php.in index 022278c..2b745f1 100644 --- a/banana/banana.inc.php.in +++ b/banana/banana.inc.php.in @@ -17,6 +17,9 @@ class Banana 'message-id', 'newsgroups', 'organization', 'references', 'subject', 'x-face'); var $show_hdr = array('from', 'subject', 'newsgroups', 'followup', 'date', 'organization', 'references', 'x-face'); + /** Favorites MIMEtypes to use, by order for reading multipart messages + */ + var $body_mime = array('text/plain', 'text/html', 'text/richtext'); var $tbefore = 5; var $tafter = 5; @@ -60,7 +63,7 @@ class Banana $group = empty($_GET['group']) ? null : strtolower($_GET['group']); $artid = empty($_GET['artid']) ? null : strtolower($_GET['artid']); - $partid = empty($_GET['part']) ? 0 : $_GET['part']; + $partid = !isset($_GET['part']) ? -1 : $_GET['part']; $banana->state = Array ('group' => $group, 'artid' => $artid); if (is_null($group)) { diff --git a/banana/post.inc.php b/banana/post.inc.php index 1987b56..df64f27 100644 --- a/banana/post.inc.php +++ b/banana/post.inc.php @@ -52,12 +52,12 @@ class BananaPost if (preg_match("@multipart/([^;]+);@", $this->headers['content-type'], $mpart_type)) { preg_match("/boundary=\"?([^ \"]+)\"?/", $this->headers['content-type'], $mpart_boundary); $this->_split_multipart($mpart_type[1], $mpart_boundary[1]); - } - - if (preg_match('!charset=([^;]*)\s*(;|$)!', $this->headers['content-type'], $matches)) { - $this->body = iconv($matches[1], 'utf-8', $this->body); } else { - $this->body = utf8_encode($this->body); + if (preg_match('!charset=([^;]*)\s*(;|$)!', $this->headers['content-type'], $matches)) { + $this->body = iconv($matches[1], 'utf-8', $this->body); + } else { + $this->body = utf8_encode($this->body); + } } } @@ -76,11 +76,9 @@ class BananaPost $this->_add_attachment($part); } else if (isset($local_header['content-type']) && preg_match("@text/([^;]+);@", $local_header['content-type'], $format)) { array_push($this->messages, $part); + } } - } - if (count($this->messages) > 0) { - $this->set_body_to_part(0); - } + $this->set_body_to_part(0); } /** extract new headers from the part @@ -204,6 +202,12 @@ class BananaPost $this->headers[$hdr] = $local_header[$hdr]; } } + + if (preg_match('!charset=([^;]*)\s*(;|$)!', $this->headers['content-type'], $matches)) { + $this->body = iconv($matches[1], 'utf-8', $this->body); + } else { + $this->body = utf8_encode($this->body); + } return true; } @@ -254,12 +258,33 @@ class BananaPost /** convert message to html * @param partid INT id of the multipart message that must be displaid */ - function to_html($partid = 0) + function to_html($partid = -1) { global $banana; - if ($partid != 0) { - $this->set_body_to_part($partid); + if (count($this->messages) > 1) { + if ($partid != -1) { + $this->set_body_to_part($partid); + } else { + // Select prefered text-format + foreach ($banana->body_mime as $mime) { + for ($id = 0 ; $id < count($this->messages) ; $id++) { + if (preg_match("@$mime@", $this->messages[$id]['headers']['content-type'])) { + $partid = $id; + $this->set_body_to_part($partid); + break; + } + } + if ($partid != -1) { + break; + } + } + if ($partid == -1) { + $partid = 0; + } + } + } else { + $partid = 0; } $res = ''; @@ -317,7 +342,7 @@ class BananaPost $res .= ''; } - $res .= ''; + $res .= ''; $ndx = $banana->spool->getndx($this->id); $res .= '';
'._b_('apercu').'
'._b_('Apercu').'
'.$banana->spool->to_html($ndx-$banana->tbefore, $ndx+$banana->tafter, $ndx).'