summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2005-12-14 23:47:32 +0000
committerthomascube <thomas@roundcube.net>2005-12-14 23:47:32 +0000
commit749b07c78a29b03c63812c3ec3630b16db4baa8f (patch)
tree5e6749f18a5a65a6bd0b97b356d41358e3676fea
parent9fc381f4e8712fec0e7b67c0f4e7af0980261e16 (diff)
IMAP bugfixes, better signature handling
-rw-r--r--index.php2
-rw-r--r--program/include/main.inc13
-rw-r--r--program/include/rcube_imap.inc2
-rw-r--r--program/js/app.js18
-rw-r--r--program/localization/nl/messages.inc4
-rw-r--r--program/steps/mail/compose.inc2
-rw-r--r--program/steps/mail/func.inc30
-rw-r--r--program/steps/mail/sendmail.inc3
8 files changed, 51 insertions, 23 deletions
diff --git a/index.php b/index.php
index 31d4e7574..3141cabac 100644
--- a/index.php
+++ b/index.php
@@ -3,7 +3,7 @@
/*
+-----------------------------------------------------------------------+
| RoundCube Webmail IMAP Client |
- | Version 0.1-20051018 |
+ | Version 0.1-20051214 |
| |
| Copyright (C) 2005, RoundCube Dev. - Switzerland |
| Licensed under the GNU GPL |
diff --git a/program/include/main.inc b/program/include/main.inc
index 40ca1d4d7..6c4591dac 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -1098,15 +1098,18 @@ function format_date($date, $format=NULL)
$now = time(); // local time
$now -= (int)date('Z'); // make GMT time
$now += ($CONFIG['timezone'] * 3600); // user's time
+ $now_date = getdate();
- $day_secs = 60*((int)date('H', $now)*60 + (int)date('i', $now));
- $week_secs = 60 * 60 * 24 * 7;
- $diff = $now - $timestamp;
+ //$day_secs = 60*((int)date('H', $now)*60 + (int)date('i', $now));
+ //$week_secs = 60 * 60 * 24 * 7;
+ //$diff = $now - $timestamp;
+ $today_limit = mktime(0, 0, 0, $now_date['mon'], $now_date['mday'], $now_date['year']);
+ $week_limit = mktime(0, 0, 0, $now_date['mon'], $now_date['mday']-6, $now_date['year']);
// define date format depending on current time
- if ($CONFIG['prettydate'] && !$format && $diff < $day_secs)
+ if ($CONFIG['prettydate'] && !$format && $timestamp > $today_limit)
return sprintf('%s %s', rcube_label('today'), date('H:i', $timestamp));
- else if ($CONFIG['prettydate'] && !$format && $diff < $week_secs)
+ else if ($CONFIG['prettydate'] && !$format && $timestamp > $week_limit)
$format = $CONFIG['date_short'] ? $CONFIG['date_short'] : 'D H:i';
else if (!$format)
$format = $CONFIG['date_long'] ? $CONFIG['date_long'] : 'd.m.Y H:i';
diff --git a/program/include/rcube_imap.inc b/program/include/rcube_imap.inc
index cc30b3fe4..593225da2 100644
--- a/program/include/rcube_imap.inc
+++ b/program/include/rcube_imap.inc
@@ -480,7 +480,7 @@ class rcube_imap
// cache is OK
if ($cache_status>0)
{
- $a_index = get_message_cache_index($cache_key, FALSE, $this->sort_field);
+ $a_index = $this->get_message_cache_index($cache_key, FALSE, $this->sort_field);
return array_values($a_index);
}
diff --git a/program/js/app.js b/program/js/app.js
index d65af420e..a7445e2b5 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -6,7 +6,7 @@
| Copyright (C) 2005, RoundCube Dev, - Switzerland |
| Licensed under the GNU GPL |
| |
- | Modified: 2005/11/13 (roundcube) |
+ | Modified: 2005/12/14 (roundcube) |
| |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
@@ -1356,24 +1356,30 @@ function rcube_webmail()
var id = obj.options[obj.selectedIndex].value;
var input_message = rcube_find_object('_message');
var message = input_message ? input_message.value : '';
+ var sig, p;
// remove the 'old' signature
if (this.env.identity && this.env.signatures && this.env.signatures[this.env.identity])
{
- var sig = this.env.signatures[this.env.identity];
-
- if (p = message.lastIndexOf(sig))
+ sig = this.env.signatures[this.env.identity];
+ if (sig.indexOf('-- ')!=0)
+ sig = '-- \n'+sig;
+
+ p = message.lastIndexOf(sig);
+ if (p>=0)
message = message.substring(0, p-1) + message.substring(p+sig.length, message.length);
}
// add the new signature string
if (this.env.signatures && this.env.signatures[id])
{
- var sig = this.env.signatures[id];
+ sig = this.env.signatures[id];
+ if (sig.indexOf('-- ')!=0)
+ sig = '-- \n'+sig;
message += '\n'+sig;
}
- if (input_message && message)
+ if (input_message)
input_message.value = message;
this.env.identity = id;
diff --git a/program/localization/nl/messages.inc b/program/localization/nl/messages.inc
index 1c9fba963..39909e922 100644
--- a/program/localization/nl/messages.inc
+++ b/program/localization/nl/messages.inc
@@ -42,9 +42,9 @@ $messages['addedsuccessfully'] = 'Contactpersoon succesvol toegevoegd aan het ad
$messages['contactexists'] = 'Een contactpersoon met dit e-mail adres bestaat al';
-$messages['blockedimages'] = 'Om je privacy te beschermen zijn externe afbeeldingen zijn geblokkeerd in dit bericht.';
+$messages['blockedimages'] = 'Om je privacy te beschermen zijn externe afbeeldingen geblokkeerd in dit bericht.';
-$messages['encryptedmessage'] = 'Dit is een versleuteld bericht en kan niet worden weergegeven. Sorry!';
+$messages['encryptedmessage'] = 'Dit bericht is versleuteld en kan niet worden weergegeven. Sorry!';
$messages['nocontactsfound'] = 'Geen contactpersonen gevonden';
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index 45f111263..6aca28db8 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -353,7 +353,7 @@ function rcmail_create_reply_body($body)
// try to remove the signature
- if ($sp = strrpos($body, '--'))
+ if ($sp = strrpos($body, '-- '))
{
if ($body{$sp+3}==' ' || $body{$sp+3}=="\n" || $body{$sp+3}=="\r")
$body = substr($body, 0, $sp-1);
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index 74a967870..c430467d1 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -161,6 +161,7 @@ function rcmail_render_folder_tree_html(&$arrFolders, &$special, &$mbox, $maxlen
foreach ($arrFolders as $key => $folder)
{
$zebra_class = ($nestLevel*$idx)%2 ? 'even' : 'odd';
+ $title = '';
$folder_lc = strtolower($folder['id']);
if (in_array($folder_lc, $special))
@@ -171,7 +172,12 @@ function rcmail_render_folder_tree_html(&$arrFolders, &$special, &$mbox, $maxlen
// shorten the folder name to a given length
if ($maxlength && $maxlength>1)
- $foldername = abbrevate_string($foldername, $maxlength);
+ {
+ $fname = abbrevate_string($foldername, $maxlength);
+ if ($fname != $foldername)
+ $title = ' title="'.rep_specialchars_output($foldername, 'html', 'all').'"';
+ $foldername = $fname;
+ }
}
// add unread message count display
@@ -191,7 +197,7 @@ function rcmail_render_folder_tree_html(&$arrFolders, &$special, &$mbox, $maxlen
else if ($folder['id']==$CONFIG['junk_mbox'])
$class_name = 'junk';
- $out .= sprintf('<li id="rcmbx%s" class="mailbox %s %s%s%s"><a href="./#%s" onclick="return %s.command(\'list\',\'%s\')" onmouseup="return %s.mbox_mouse_up(\'%s\')">%s</a>',
+ $out .= sprintf('<li id="rcmbx%s" class="mailbox %s %s%s%s"><a href="./#%s" onclick="return %s.command(\'list\',\'%s\')" onmouseup="return %s.mbox_mouse_up(\'%s\')"%s>%s</a>',
$folder_css,
$class_name,
$zebra_class,
@@ -202,6 +208,7 @@ function rcmail_render_folder_tree_html(&$arrFolders, &$special, &$mbox, $maxlen
$folder['id'],
$JS_OBJECT_NAME,
$folder['id'],
+ $title,
rep_specialchars_output($foldername, 'html', 'all'));
if (!empty($folder['folders']))
@@ -1008,6 +1015,9 @@ function rcmail_message_body($attrib)
// modify a HTML message that it can be displayed inside a HTML page
function rcmail_mod_html_body($body, $container_id)
{
+ // remove any null-byte characters before parsing
+ $body = preg_replace('/\x00/', '', $body);
+
$last_style_pos = 0;
$body_lc = strtolower($body);
@@ -1157,15 +1167,18 @@ function rcmail_message_source($uid)
else
$headers = &$cached;
-
- $message_id = $headers->messageID;
+ // create unique identifier based on message_id
+ if (!empty($headers->messageID))
+ $message_id = md5($headers->messageID);
+ else
+ $message_id = md5($headers->uid.'@'.$_SESSION['imap_host']);
$temp_dir = $CONFIG['temp_dir'].(!eregi('\/$', $CONFIG['temp_dir']) ? '/' : '');
$cache_dir = $temp_dir.$_SESSION['client_id'];
$cache_path = $cache_dir.'/'.$message_id;
// message is cached in temp dir
- if (is_dir($cache_dir) && is_file($cache_path))
+ if ($CONFIG['enable_caching'] && is_dir($cache_dir) && is_file($cache_path))
{
if ($fp = fopen($cache_path, 'r'))
{
@@ -1178,9 +1191,14 @@ function rcmail_message_source($uid)
// get message from server
$msg_source = $IMAP->get_raw_body($uid);
+
+ // return message source without caching
+ if (!$CONFIG['enable_caching'])
+ return $msg_source;
+
// let's cache the message body within the database
- if ($CONFIG['enable_caching'] && $cached && ($CONFIG['db_max_length'] -300) > $headers->size)
+ if ($cached && ($CONFIG['db_max_length'] -300) > $headers->size)
{
$DB->query("UPDATE ".get_table_name('messages')."
SET body=?
diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc
index 6a3b51123..3c9f60378 100644
--- a/program/steps/mail/sendmail.inc
+++ b/program/steps/mail/sendmail.inc
@@ -277,9 +277,10 @@ if ($CONFIG['sent_mbox'])
// log mail sending
if ($CONFIG['smtp_log'])
{
- $log_entry = sprintf("[%s] User: %d; Message for %s; Subject: %s\n",
+ $log_entry = sprintf("[%s] User: %d on %s; Message for %s; Subject: %s\n",
date("d-M-Y H:i:s O", mktime()),
$_SESSION['user_id'],
+ $_SERVER['REMOTE_ADDR'],
$mailto,
$msg_subject);