IMAP bugfixes, better signature handling
| | |
| | | /* |
| | | +-----------------------------------------------------------------------+ |
| | | | RoundCube Webmail IMAP Client | |
| | | | Version 0.1-20051018 | |
| | | | Version 0.1-20051214 | |
| | | | | |
| | | | Copyright (C) 2005, RoundCube Dev. - Switzerland | |
| | | | Licensed under the GNU GPL | |
| | |
| | | $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'; |
| | |
| | | // 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); |
| | | } |
| | | |
| | |
| | | | 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> | |
| | |
| | | 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; |
| | |
| | | |
| | | $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'; |
| | | |
| | |
| | | |
| | | |
| | | // 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); |
| | |
| | | foreach ($arrFolders as $key => $folder) |
| | | { |
| | | $zebra_class = ($nestLevel*$idx)%2 ? 'even' : 'odd'; |
| | | $title = ''; |
| | | |
| | | $folder_lc = strtolower($folder['id']); |
| | | if (in_array($folder_lc, $special)) |
| | |
| | | |
| | | // 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 |
| | |
| | | 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, |
| | |
| | | $folder['id'], |
| | | $JS_OBJECT_NAME, |
| | | $folder['id'], |
| | | $title, |
| | | rep_specialchars_output($foldername, 'html', 'all')); |
| | | |
| | | if (!empty($folder['folders'])) |
| | |
| | | // 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); |
| | | |
| | |
| | | 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')) |
| | | { |
| | |
| | | |
| | | // 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=? |
| | |
| | | // 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); |
| | | |