summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
authorsvncommit <devs@roundcube.net>2008-10-25 00:01:45 +0000
committersvncommit <devs@roundcube.net>2008-10-25 00:01:45 +0000
commitc9ca6ada03f27bfe8c86f61f418afb86971f9dff (patch)
treeb0369a4851c7e743181d0cc7da880c8d1c3e321c /program
parent1971ddc1dd0eb9bf07f17f72dde48d7edca7b69b (diff)
added obscure ASCII encoding aliases, added more error checking to RFC2822 date parsing
Diffstat (limited to 'program')
-rw-r--r--program/include/main.inc25
-rw-r--r--program/include/rcube_imap.php10
-rw-r--r--program/include/rcube_message.php2
-rw-r--r--program/lib/Mail/mime.php1
-rw-r--r--program/steps/mail/show.inc4
5 files changed, 23 insertions, 19 deletions
diff --git a/program/include/main.inc b/program/include/main.inc
index 75ad2b30b..8eb2c81f5 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -188,12 +188,14 @@ function rcube_charset_convert($str, $from, $to=NULL)
return $str;
$aliases = array(
- 'US-ASCII' => 'ISO-8859-1',
- 'UNKNOWN-8BIT' => 'ISO-8859-15',
- 'X-UNKNOWN' => 'ISO-8859-15',
- 'X-USER-DEFINED' => 'ISO-8859-15',
- 'ISO-8859-8-I' => 'ISO-8859-8',
- 'KS_C_5601-1987' => 'EUC-KR',
+ 'US-ASCII' => 'ISO-8859-1',
+ 'ANSI_X3.110-1983' => 'ISO-8859-1',
+ 'ANSI_X3.4-1968' => 'ISO-8859-1',
+ 'UNKNOWN-8BIT' => 'ISO-8859-15',
+ 'X-UNKNOWN' => 'ISO-8859-15',
+ 'X-USER-DEFINED' => 'ISO-8859-15',
+ 'ISO-8859-8-I' => 'ISO-8859-8',
+ 'KS_C_5601-1987' => 'EUC-KR',
);
// convert charset using iconv module
@@ -684,10 +686,10 @@ function format_date($date, $format=NULL)
$ts = $date;
else if (!empty($date))
{
- while (($ts = @strtotime($date))===false)
+ // if date parsing fails, we have a date in non-rfc format.
+ // remove token from the end and try again
+ while ((($ts = @strtotime($date))===false) || ($ts < 0))
{
- // if we have a date in non-rfc format
- // remove token from the end and try again
$d = explode(' ', $date);
array_pop($d);
if (!$d) break;
@@ -825,7 +827,7 @@ function write_log($name, $line)
$log_entry = sprintf("[%s]: %s\n",
date("d-M-Y H:i:s O", mktime()),
$line);
-
+
if ($CONFIG['log_driver'] == 'syslog') {
if ($name == 'errors')
$prio = LOG_ERR;
@@ -836,10 +838,11 @@ function write_log($name, $line)
// log_driver == 'file' is assumed here
if (empty($CONFIG['log_dir']))
$CONFIG['log_dir'] = INSTALL_PATH.'logs';
-
+
// try to open specific log file for writing
if ($fp = @fopen($CONFIG['log_dir'].'/'.$name, 'a')) {
fwrite($fp, $log_entry);
+ fflush($fp);
fclose($fp);
}
}
diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index 4a71c974f..e18c14c2e 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -1025,14 +1025,16 @@ class rcube_imap
$headers = &$this->get_cached_message($cache_key, $uid, true);
// return cached message structure
- if (is_object($headers) && is_object($headers->structure))
+ if (is_object($headers) && is_object($headers->structure)) {
return $headers->structure;
-
+ }
+
// resolve message sequence number
- if (!($msg_id = $this->_uid2id($uid)))
+ if (!($msg_id = $this->_uid2id($uid))) {
return FALSE;
+ }
- $structure_str = iil_C_FetchStructureString($this->conn, $this->mailbox, $msg_id);
+ $structure_str = iil_C_FetchStructureString($this->conn, $this->mailbox, $msg_id);
$structure = iml_GetRawStructureArray($structure_str);
$struct = false;
diff --git a/program/include/rcube_message.php b/program/include/rcube_message.php
index 10b9e8e41..d59c9448a 100644
--- a/program/include/rcube_message.php
+++ b/program/include/rcube_message.php
@@ -63,7 +63,7 @@ class rcube_message
'prefer_html' => $this->app->config->get('prefer_html'),
'get_url' => rcmail_url('get', array('_mbox' => $this->imap->get_mailbox_name(), '_uid' => $uid))
);
-
+
if ($this->structure = $this->imap->get_structure($uid)) {
$this->get_mime_numbers($this->structure);
$this->parse_structure($this->structure);
diff --git a/program/lib/Mail/mime.php b/program/lib/Mail/mime.php
index 688c326a5..975ca48ce 100644
--- a/program/lib/Mail/mime.php
+++ b/program/lib/Mail/mime.php
@@ -1068,7 +1068,6 @@ class Mail_mime
//Concat the double quotes and encoded string together
$hdr_value = $quotePrefix . $hdr_value . $quoteSuffix;
-
$hdr_value_out = $hdr_value;
$realMax = $maxLength1stLine + strlen($prefix . $suffix);
if (strlen($hdr_value_out) >= $realMax) {
diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc
index 4f5253883..4f0a3b032 100644
--- a/program/steps/mail/show.inc
+++ b/program/steps/mail/show.inc
@@ -24,7 +24,7 @@ $PRINT_MODE = $RCMAIL->action=='print' ? TRUE : FALSE;
// similar code as in program/steps/mail/get.inc
if ($_GET['_uid']) {
$MESSAGE = new rcube_message(get_input_value('_uid', RCUBE_INPUT_GET));
-
+
// set message charset as default
if (!empty($MESSAGE->headers->charset))
$IMAP->set_charset($MESSAGE->headers->charset);
@@ -217,7 +217,7 @@ $OUTPUT->add_handlers(array(
if ($RCMAIL->action=='print' && $OUTPUT->template_exists('printmessage'))
$OUTPUT->send('printmessage');
else if ($RCMAIL->action=='preview' && $OUTPUT->template_exists('messagepreview'))
- $OUTPUT->send('messagepreview');
+ $OUTPUT->send('messagepreview');
else
$OUTPUT->send('message');
?>