* Copyright: See COPYING files that comes with this distribution
********************************************************************************/
+require_once dirname(__FILE__) . '/text.func.inc.php';
+
class Banana
{
'autoup' => 1);
static public $boxpattern;
static public $withtabs = true;
+ static public $mimeparts = array();
### Spool ###
static public $spool_max = 3000;
### Message display ###
static public $msgshow_headers = array('from', 'newsgroups', 'followup-to', 'to', 'cc', 'reply-to',
'organization', 'date', 'references', 'in-reply-to');
- static public $msgshow_mimeparts = array('multipart/report', 'multipart/mixed', 'text/html', 'text/plain', 'text/enriched', 'text', 'message');
+ static public $msgshow_mimeparts = array('multipart/report', 'multipart/mixed',
+ 'text/html', 'text/plain', 'text/enriched', 'text', 'message');
static public $msgshow_xface = true;
static public $msgshow_wrap = 78;
static public $msgshow_externalimages = false;
*/
public function __construct($params = null, $protocole = 'NNTP', $pageclass = 'BananaPage')
{
- Banana::load('text.func');
if (is_null($params)) {
$this->params = $_GET;
} else {
Banana::load('page');
}
Banana::$page = new $pageclass;
+
+ $types = array('multipart/report' => _b_('Rapport d\'erreur'),
+ 'multipart/mixed' => _b_('Composition'),
+ 'text/html' => _b_('Texte formaté'),
+ 'text/plain' => _b_('Texte brut'),
+ 'text/enriched' => _b_('Texte enrichi'),
+ 'text' => _b_('Texte'),
+ 'message/rfc822' => _b_('Mail'),
+ 'message' => _b_('Message'),
+ 'source' => _b_('Source'));
+ Banana::$mimeparts = array_merge($types, Banana::$mimeparts);
}
/** Fill state vars (Banana::$group, Banana::$artid, Banana::$action, Banana;:$part, Banana::$first)
}
exit;
} elseif ($partid == 'text') {
- Banana::$page->assign('body', $msg->getFormattedBody());
+ $partid = null;
+ Banana::$page->assign('body', $msg->getFormattedBody($partid));
} elseif ($partid == 'source') {
$text = Banana::$protocole->getMessageSource($artid);
if (!is_utf8($text)) {
}
Banana::$page->assign_by_ref('message', $msg);
Banana::$page->assign('headers', Banana::$msgshow_headers);
+ Banana::$page->assign('type', $partid);
return true;
}
exit;
}
- public function getFormattedBody($type = null)
+ public function getFormattedBody(&$reqtype = null)
{
$types = Banana::$msgshow_mimeparts;
- if (!is_null($type)) {
- array_unshift($types, $type);
+ if (!is_null($reqtype)) {
+ array_unshift($types, $reqtype);
}
foreach ($types as $type) {
@list($type, $subtype) = explode('/', $type);
if (empty($parts)) {
continue;
}
+ $reqtype = implode('/', $parts[0]->getType());
return $parts[0]->toHtml();
}
return null;
return array();
}
+ public function getAlternatives()
+ {
+ $types =& Banana::$msgshow_mimeparts;
+ $names =& Banana::$mimeparts;
+ $source = null;
+ if (in_array('source', $types)) {
+ $source = @$names['source'] ? $names['source'] : 'source';
+ }
+ if (!$this->isType('multipart', 'alternative') && !$this->isType('multipart', 'related')) {
+ if ($source) {
+ $parts = array($this);
+ } else {
+ return array();
+ }
+ } else {
+ $parts =& $this->multipart;
+ }
+ $alt = array();
+ foreach ($parts as &$part) {
+ list($type, $subtype) = $part->getType();
+ $ct = $type . '/' . $subtype;
+ if (in_array($ct, $types) || in_array($type, $types)) {
+ if (isset($names[$ct])) {
+ $alt[$ct] = $names[$ct];
+ } elseif (isset($names[$type])) {
+ $alt[$ct] = $names[$type];
+ } else {
+ $alt[$ct] = $ct;
+ }
+ }
+ }
+ if ($source) {
+ $alt['source'] = $source;
+ }
+ return $alt;
+ }
+
public function getPartById($id)
{
if ($this->id == $id) {