Update roundcube to 0.9.2.
RELEASE 0.9.2 ------------- - Fix image thumbnails display in print mode (#1489134) - Fix height of message headers block (#1489108) - Fix timeout issue on drag&drop uploads (#1489170) - Fix default sorting of threaded list when THREAD=REFS isn't supported - Fix list mode switch to 'List' after saving list settings in Larry skin (#1489164) - Fix error when there's no writeable addressbook source (#1489162) - Fix zipdownload plugin issue with filenames charset (#1489156) - Fix so non-inline images aren't skipped on forward (#1489150) - Fix "null" instead of empty string on messages list in IE10 (#1489145) - Fix legacy options handling - Fix so bounces addresses in Sender headers are skipped on Reply-All (#1489011) - Fix bug where serialized strings were truncated in PDO::quote() (#1489142) - Fix displaying messages with invalid self-closing HTML tags (#1489137) - Fix PHP warning when responding to a message with many Return-Path headers (#1489136) - Fix unintentional compose window resize (#1489114) - Fix performance regression in text wrapping function (#1489133) - Fix connection to posgtres db using unix socket (#1489132) - Fix handling of comma when adding contact from contacts widget (#1489107) - Fix bug where a message was opened in both preview pane and new window on double-click (#1489122) - Fix fatal error when xdebug.max_nesting_level was exceeded in rcube_washtml (#1489110) - Fix PHP warning in html_table::set_row_attribs() in PHP 5.4 (#1489094) - Fix invalid option selected in default_font selector when font is unset (#1489112) - Fix displaying contact with ID divisible by 100 in sql addressbook (#1489121) - Fix browser warnings on PDF plugin detection (#1489118) - Fix fatal error when parsing UUencoded messages (#1489119)
This commit is contained in:
parent
2d6bc42eba
commit
ea3abf743f
24 changed files with 15 additions and 1090 deletions
|
@ -1,6 +1,6 @@
|
|||
# $NetBSD: Makefile,v 1.55 2013/06/15 16:08:09 taca Exp $
|
||||
# $NetBSD: Makefile,v 1.56 2013/06/16 22:04:07 taca Exp $
|
||||
|
||||
DISTNAME= roundcubemail-0.9.1-dep
|
||||
DISTNAME= roundcubemail-0.9.2-dep
|
||||
PKGNAME= ${DISTNAME:S/mail-/-/:S/-dep//}
|
||||
CATEGORIES= mail
|
||||
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=roundcubemail/}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
@comment $NetBSD: PLIST,v 1.28 2013/06/15 16:08:09 taca Exp $
|
||||
@comment $NetBSD: PLIST,v 1.29 2013/06/16 22:04:07 taca Exp $
|
||||
share/doc/roundcube/INSTALL
|
||||
share/doc/roundcube/LICENSE
|
||||
share/doc/roundcube/README.md
|
||||
|
@ -2390,7 +2390,6 @@ share/roundcube/program/localization/zh_TW/csv2vcard.inc
|
|||
share/roundcube/program/localization/zh_TW/labels.inc
|
||||
share/roundcube/program/localization/zh_TW/messages.inc
|
||||
share/roundcube/program/resources/blank.gif
|
||||
share/roundcube/program/resources/blank.pdf
|
||||
share/roundcube/program/resources/blank.tif
|
||||
share/roundcube/program/resources/blocked.gif
|
||||
share/roundcube/program/steps/addressbook/copy.inc
|
||||
|
|
|
@ -1,28 +1,9 @@
|
|||
$NetBSD: distinfo,v 1.30 2013/06/15 16:08:09 taca Exp $
|
||||
$NetBSD: distinfo,v 1.31 2013/06/16 22:04:07 taca Exp $
|
||||
|
||||
SHA1 (roundcubemail-0.9.1-dep.tar.gz) = 48ad1e44eaffc079bb3b5af24ce69feb6aa0315b
|
||||
RMD160 (roundcubemail-0.9.1-dep.tar.gz) = 0181bae162a64258cfe49076dcdfe590d1fccab5
|
||||
Size (roundcubemail-0.9.1-dep.tar.gz) = 3483626 bytes
|
||||
SHA1 (patch-aa) = 4946fab1dd1a809d32de7fa16b9eb1075eb8424a
|
||||
SHA1 (roundcubemail-0.9.2-dep.tar.gz) = d7f09d12a0f190eaf54f324777a3b2a7afb179c3
|
||||
RMD160 (roundcubemail-0.9.2-dep.tar.gz) = 9514c08304a1583e0c0b7255a99ffcefce4d62b6
|
||||
Size (roundcubemail-0.9.2-dep.tar.gz) = 3484377 bytes
|
||||
SHA1 (patch-aa) = 2391f0ddb6b9ba6026f9db6d7050f3412d02e160
|
||||
SHA1 (patch-ab) = 19b62d4a24d9b1ccc476f8d3fbe5f386faf6c553
|
||||
SHA1 (patch-ac) = ea60a00f8d53f36e069f4b61962ff97c980edb20
|
||||
SHA1 (patch-af) = c0534978e19174d058ac3002692a6bed4e535dc7
|
||||
SHA1 (patch-installer_config.php) = 6788454eddf4db96f5bd561c9dc45397383797e0
|
||||
SHA1 (patch-installer_rcube__install.php) = edcfbff2255fe818bd028310d829879d731fefc9
|
||||
SHA1 (patch-plugins_zipdownload_zipdownload.php) = c0605e036959d5082bd3cde2cf37bb5838cb5623
|
||||
SHA1 (patch-program_include_rcmail.php) = 8a23e2ffd974983023c98b866c5d7a6e7984e3f8
|
||||
SHA1 (patch-program_lib_Roundcube_rcube__cache.php) = ce92d42b294a1cde1d8223b6d5dae46d819754de
|
||||
SHA1 (patch-program_lib_Roundcube_rcube__config.php) = fafc1102722ededc9b16272ba515598026c175c2
|
||||
SHA1 (patch-program_lib_Roundcube_rcube__db.php) = d7f08a12a3d6131be88d84132b38d2bf2b7b0b2f
|
||||
SHA1 (patch-program_lib_Roundcube_rcube__db__pgsql.php) = c3cc7651cb38d5a50cca1d7e4b232f2aa3b4a72b
|
||||
SHA1 (patch-program_lib_Roundcube_rcube__imap.php) = 468e9100366dfc9110dda95d27f40b4fb7e075af
|
||||
SHA1 (patch-program_lib_Roundcube_rcube__imap__cache.php) = 526e2b2b645a32077116950a4cb2b531b34a649b
|
||||
SHA1 (patch-program_lib_Roundcube_rcube__mime.php) = ff74d19a6bfce728db75ad2d3950fe762144e859
|
||||
SHA1 (patch-program_lib_Roundcube_rcube__washtml.php) = d62fb13f45b1dd687bcb367ceb1a7229a0c8177f
|
||||
SHA1 (patch-program_steps_mail_compose.inc) = 8b9a4ce69eced4c284aee0b69278ff78071da851
|
||||
SHA1 (patch-program_steps_mail_func.inc) = 5e722794ee5d55c5aad7319998f5c396daae3918
|
||||
SHA1 (patch-program_steps_mail_show.inc) = f60e27ecece1477c813e6645c6178b1beef41199
|
||||
SHA1 (patch-skins_classic_print.css) = 2b6d51f3685566a135a2a6291e50109e13726e05
|
||||
SHA1 (patch-skins_larry_mail.css) = b88a2a90ed0388e3f5020e6eddc5a4f64b333aba
|
||||
SHA1 (patch-skins_larry_print.css) = d0119e711921cf7751a67ce98481f9ad3f0c19fc
|
||||
SHA1 (patch-skins_larry_templates_message.html) = 5d997fced39c74590bab3898c63fa40a69f43f99
|
||||
SHA1 (patch-af) = 1f95a7005569207469563aa37ff48da0383b7668
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
$NetBSD: patch-aa,v 1.9 2012/01/14 15:36:24 taca Exp $
|
||||
$NetBSD: patch-aa,v 1.10 2013/06/16 22:04:07 taca Exp $
|
||||
|
||||
Use proper directories for log and temporary.
|
||||
|
||||
--- config/main.inc.php.dist.orig 2011-11-30 13:11:34.000000000 +0000
|
||||
--- config/main.inc.php.dist.orig 2013-06-16 15:12:21.000000000 +0000
|
||||
+++ config/main.inc.php.dist
|
||||
@@ -174,10 +174,10 @@ $rcmail_config['enable_installer'] = fal
|
||||
@@ -205,10 +205,10 @@ $rcmail_config['user_aliases'] = false;
|
||||
|
||||
// use this folder to store log files (must be writeable for apache user)
|
||||
// This is used by the 'file' log driver.
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
$NetBSD: patch-af,v 1.6 2013/06/15 16:08:09 taca Exp $
|
||||
$NetBSD: patch-af,v 1.7 2013/06/16 22:04:07 taca Exp $
|
||||
|
||||
Honor PKG_SYSCONFDIR.
|
||||
|
||||
--- program/include/iniset.php.orig 2013-04-15 20:43:00.000000000 +0000
|
||||
--- program/include/iniset.php.orig 2013-06-16 15:12:21.000000000 +0000
|
||||
+++ program/include/iniset.php
|
||||
@@ -44,7 +44,7 @@ if (!defined('INSTALL_PATH')) {
|
||||
@@ -29,7 +29,7 @@ if (!defined('INSTALL_PATH')) {
|
||||
}
|
||||
|
||||
if (!defined('RCMAIL_CONFIG_DIR')) {
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
$NetBSD: patch-installer_config.php,v 1.1 2013/06/15 16:08:09 taca Exp $
|
||||
|
||||
Fix from repository:
|
||||
* commit 70ef48c2f311f1773a4b4deb8fcffd8ea72326f9:
|
||||
Remove old enable_caching option from Installer
|
||||
|
||||
--- installer/config.php.orig 2013-05-16 18:06:35.000000000 +0000
|
||||
+++ installer/config.php
|
||||
@@ -15,7 +15,6 @@ $RCI->load_defaults();
|
||||
// register these boolean fields
|
||||
$RCI->bool_config_props = array(
|
||||
'ip_check' => 1,
|
||||
- 'enable_caching' => 1,
|
||||
'enable_spellcheck' => 1,
|
||||
'auto_create_user' => 1,
|
||||
'smtp_log' => 1,
|
||||
@@ -127,16 +126,6 @@ echo $check_ipcheck->show(intval($RCI->g
|
||||
<p class="hint">This increases security but can cause sudden logouts when someone uses a proxy with changing IPs.</p>
|
||||
</dd>
|
||||
|
||||
-<dt class="propname">enable_caching</dt>
|
||||
-<dd>
|
||||
-<?php
|
||||
-
|
||||
-$check_caching = new html_checkbox(array('name' => '_enable_caching', 'id' => "cfgcache"));
|
||||
-echo $check_caching->show(intval($RCI->getprop('enable_caching')), array('value' => 1));
|
||||
-
|
||||
-?>
|
||||
-<label for="cfgcache">Cache messages in local database</label><br />
|
||||
-</dd>
|
||||
|
||||
<dt class="propname">enable_spellcheck</dt>
|
||||
<dd>
|
|
@ -1,19 +0,0 @@
|
|||
$NetBSD: patch-installer_rcube__install.php,v 1.1 2013/06/15 16:08:09 taca Exp $
|
||||
|
||||
Fix from repository:
|
||||
* commit 853d0ab2a402222cc87dc83bb27c3fb2f33d84aa:
|
||||
Fix version selector - do not list versions newer than 0.9.0, use
|
||||
"0.9 or newer" instead.
|
||||
|
||||
--- installer/rcube_install.php.orig 2013-05-16 18:06:35.000000000 +0000
|
||||
+++ installer/rcube_install.php
|
||||
@@ -455,7 +455,8 @@ class rcube_install
|
||||
'0.6-beta', '0.6',
|
||||
'0.7-beta', '0.7', '0.7.1', '0.7.2', '0.7.3', '0.7.4',
|
||||
'0.8-beta', '0.8-rc', '0.8.0', '0.8.1', '0.8.2', '0.8.3', '0.8.4', '0.8.5', '0.8.6',
|
||||
- '0.9-beta', '0.9-rc', '0.9-rc2', '0.9.0',
|
||||
+ '0.9-beta', '0.9-rc', '0.9-rc2',
|
||||
+ // Note: Do not add newer versions here
|
||||
));
|
||||
return $select;
|
||||
}
|
|
@ -1,30 +0,0 @@
|
|||
$NetBSD: patch-plugins_zipdownload_zipdownload.php,v 1.1 2013/06/15 16:08:09 taca Exp $
|
||||
|
||||
Fix from repository:
|
||||
* commit 057b9e3e7f5bd1707e72812b1e5f977face0baed,
|
||||
b9139f9f98fe994142dd3e050dac1e6ec9a24309:
|
||||
Fix zipdownload plugin issue with filenames charset (#1489156)
|
||||
|
||||
--- plugins/zipdownload/zipdownload.php.orig 2013-05-16 18:06:35.000000000 +0000
|
||||
+++ plugins/zipdownload/zipdownload.php
|
||||
@@ -105,7 +105,7 @@ class zipdownload extends rcube_plugin
|
||||
foreach ($message->attachments as $part) {
|
||||
$pid = $part->mime_id;
|
||||
$part = $message->mime_parts[$pid];
|
||||
- $disp_name = $this->_convert_filename($part->filename, $part->charset);
|
||||
+ $disp_name = $this->_convert_filename($part->filename);
|
||||
|
||||
if ($part->body) {
|
||||
$orig_message_raw = $part->body;
|
||||
@@ -258,9 +258,9 @@ class zipdownload extends rcube_plugin
|
||||
/**
|
||||
* Helper function to convert filenames to the configured charset
|
||||
*/
|
||||
- private function _convert_filename($str, $from = RCMAIL_CHARSET)
|
||||
+ private function _convert_filename($str)
|
||||
{
|
||||
- $str = rcube_charset::convert($str, $from == '' ? RCUBE_CHARSET : $from, $this->charset);
|
||||
+ $str = rcube_charset::convert($str, RCUBE_CHARSET, $this->charset);
|
||||
|
||||
return strtr($str, array(':'=>'', '/'=>'-'));
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
$NetBSD: patch-program_include_rcmail.php,v 1.1 2013/06/15 16:08:09 taca Exp $
|
||||
|
||||
Fix from repository:
|
||||
* commit acb4b71ce55f3d98f7053b7bb8fdcf3c7858fbfc:
|
||||
Fix error when there's no writeable addressbook source (#1489162)
|
||||
|
||||
--- program/include/rcmail.php.orig 2013-05-16 18:06:35.000000000 +0000
|
||||
+++ program/include/rcmail.php
|
||||
@@ -228,6 +228,11 @@ class rcmail extends rcube
|
||||
}
|
||||
|
||||
if (!$contacts) {
|
||||
+ // there's no default, just return
|
||||
+ if ($default) {
|
||||
+ return null;
|
||||
+ }
|
||||
+
|
||||
self::raise_error(array(
|
||||
'code' => 700, 'type' => 'php',
|
||||
'file' => __FILE__, 'line' => __LINE__,
|
|
@ -1,52 +0,0 @@
|
|||
$NetBSD: patch-program_lib_Roundcube_rcube__cache.php,v 1.1 2013/06/15 16:08:09 taca Exp $
|
||||
|
||||
Fix from repository:
|
||||
* commit 72c8504b99fbd423651bab0180a044c489ca05cc:
|
||||
Fix bug where serialized strings were truncated in PDO::quote() (#1489142)
|
||||
|
||||
--- program/lib/Roundcube/rcube_cache.php.orig 2013-05-16 18:06:36.000000000 +0000
|
||||
+++ program/lib/Roundcube/rcube_cache.php
|
||||
@@ -145,7 +145,7 @@ class rcube_cache
|
||||
*/
|
||||
function write($key, $data)
|
||||
{
|
||||
- return $this->write_record($key, $this->packed ? serialize($data) : $data);
|
||||
+ return $this->write_record($key, $this->serialize($data));
|
||||
}
|
||||
|
||||
|
||||
@@ -219,7 +219,7 @@ class rcube_cache
|
||||
if ($this->cache_changes[$key]) {
|
||||
// Make sure we're not going to write unchanged data
|
||||
// by comparing current md5 sum with the sum calculated on DB read
|
||||
- $data = $this->packed ? serialize($data) : $data;
|
||||
+ $data = $this->serialize($data);
|
||||
|
||||
if (!$this->cache_sums[$key] || $this->cache_sums[$key] != md5($data)) {
|
||||
$this->write_record($key, $data);
|
||||
@@ -255,7 +255,7 @@ class rcube_cache
|
||||
|
||||
if ($data) {
|
||||
$md5sum = md5($data);
|
||||
- $data = $this->packed ? unserialize($data) : $data;
|
||||
+ $data = $this->unserialize($data);
|
||||
|
||||
if ($nostore) {
|
||||
return $data;
|
||||
@@ -283,7 +283,7 @@ class rcube_cache
|
||||
$key = substr($sql_arr['cache_key'], strlen($this->prefix)+1);
|
||||
$md5sum = $sql_arr['data'] ? md5($sql_arr['data']) : null;
|
||||
if ($sql_arr['data']) {
|
||||
- $data = $this->packed ? unserialize($sql_arr['data']) : $sql_arr['data'];
|
||||
+ $data = $this->unserialize($sql_arr['data']);
|
||||
}
|
||||
|
||||
if ($nostore) {
|
||||
@@ -364,7 +364,6 @@ class rcube_cache
|
||||
* @param string $key Cache key name or pattern
|
||||
* @param boolean $prefix_mode Enable it to clear all keys starting
|
||||
* with prefix specified in $key
|
||||
- *
|
||||
*/
|
||||
private function remove_record($key=null, $prefix_mode=false)
|
||||
{
|
|
@ -1,63 +0,0 @@
|
|||
$NetBSD: patch-program_lib_Roundcube_rcube__config.php,v 1.1 2013/06/15 16:08:09 taca Exp $
|
||||
|
||||
Fix from repository:
|
||||
* commit 55e60c6d85efa3e4b3679c8f9c0b97109ee31ca3:
|
||||
Fix legacy options handling
|
||||
|
||||
--- program/lib/Roundcube/rcube_config.php.orig 2013-05-16 18:06:36.000000000 +0000
|
||||
+++ program/lib/Roundcube/rcube_config.php
|
||||
@@ -174,7 +174,7 @@ class rcube_config
|
||||
ob_end_clean();
|
||||
|
||||
if (is_array($rcmail_config)) {
|
||||
- $this->prop = array_merge($this->prop, $rcmail_config, $this->userprefs);
|
||||
+ $this->merge($rcmail_config);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -195,9 +195,6 @@ class rcube_config
|
||||
if (isset($this->prop[$name])) {
|
||||
$result = $this->prop[$name];
|
||||
}
|
||||
- else if (isset($this->legacy_props[$name])) {
|
||||
- return $this->get($this->legacy_props[$name], $def);
|
||||
- }
|
||||
else {
|
||||
$result = $def;
|
||||
}
|
||||
@@ -241,6 +238,7 @@ class rcube_config
|
||||
public function merge($prefs)
|
||||
{
|
||||
$this->prop = array_merge($this->prop, $prefs, $this->userprefs);
|
||||
+ $this->fix_legacy_props();
|
||||
}
|
||||
|
||||
|
||||
@@ -273,6 +271,8 @@ class rcube_config
|
||||
$this->userprefs = $prefs;
|
||||
$this->prop = array_merge($this->prop, $prefs);
|
||||
|
||||
+ $this->fix_legacy_props();
|
||||
+
|
||||
// override timezone settings with client values
|
||||
if ($this->prop['timezone'] == 'auto') {
|
||||
$this->prop['_timezone_value'] = isset($_SESSION['timezone']) ? $this->client_timezone() : $this->prop['_timezone_value'];
|
||||
@@ -435,4 +435,18 @@ class rcube_config
|
||||
return date_default_timezone_get();
|
||||
}
|
||||
|
||||
+ /**
|
||||
+ * Convert legacy options into new ones
|
||||
+ */
|
||||
+ private function fix_legacy_props()
|
||||
+ {
|
||||
+ foreach ($this->legacy_props as $new => $old) {
|
||||
+ if (isset($this->prop[$old])) {
|
||||
+ if (!isset($this->prop[$new])) {
|
||||
+ $this->prop[$new] = $this->prop[$old];
|
||||
+ }
|
||||
+ unset($this->prop[$old]);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
}
|
|
@ -1,68 +0,0 @@
|
|||
$NetBSD: patch-program_lib_Roundcube_rcube__db.php,v 1.1 2013/06/15 16:08:09 taca Exp $
|
||||
|
||||
Fix from repository:
|
||||
* commit 72c8504b99fbd423651bab0180a044c489ca05cc:
|
||||
Fix bug where serialized strings were truncated in PDO::quote() (#1489142)
|
||||
* commit ab05ee25c1d38c884790337796f7c941e28d36d9:
|
||||
Fix backward copat. with cached values serialized but not base64-encoded
|
||||
(#1489142)
|
||||
|
||||
--- program/lib/Roundcube/rcube_db.php.orig 2013-05-16 18:06:36.000000000 +0000
|
||||
+++ program/lib/Roundcube/rcube_db.php
|
||||
@@ -789,12 +789,19 @@ class rcube_db
|
||||
/**
|
||||
* Encodes non-UTF-8 characters in string/array/object (recursive)
|
||||
*
|
||||
- * @param mixed $input Data to fix
|
||||
+ * @param mixed $input Data to fix
|
||||
+ * @param bool $serialized Enable serialization
|
||||
*
|
||||
* @return mixed Properly UTF-8 encoded data
|
||||
*/
|
||||
- public static function encode($input)
|
||||
+ public static function encode($input, $serialized = false)
|
||||
{
|
||||
+ // use Base64 encoding to workaround issues with invalid
|
||||
+ // or null characters in serialized string (#1489142)
|
||||
+ if ($serialized) {
|
||||
+ return base64_encode(serialize($input));
|
||||
+ }
|
||||
+
|
||||
if (is_object($input)) {
|
||||
foreach (get_object_vars($input) as $idx => $value) {
|
||||
$input->$idx = self::encode($value);
|
||||
@@ -805,6 +812,7 @@ class rcube_db
|
||||
foreach ($input as $idx => $value) {
|
||||
$input[$idx] = self::encode($value);
|
||||
}
|
||||
+
|
||||
return $input;
|
||||
}
|
||||
|
||||
@@ -814,12 +822,24 @@ class rcube_db
|
||||
/**
|
||||
* Decodes encoded UTF-8 string/object/array (recursive)
|
||||
*
|
||||
- * @param mixed $input Input data
|
||||
+ * @param mixed $input Input data
|
||||
+ * @param bool $serialized Enable serialization
|
||||
*
|
||||
* @return mixed Decoded data
|
||||
*/
|
||||
- public static function decode($input)
|
||||
+ public static function decode($input, $serialized = false)
|
||||
{
|
||||
+ // use Base64 encoding to workaround issues with invalid
|
||||
+ // or null characters in serialized string (#1489142)
|
||||
+ if ($serialized) {
|
||||
+ // Keep backward compatybility where base64 wasn't used
|
||||
+ if (strpos(substr($input, 0, 16), ':') !== false) {
|
||||
+ return self::decode(@unserialize($input));
|
||||
+ }
|
||||
+
|
||||
+ return @unserialize(base64_decode($input));
|
||||
+ }
|
||||
+
|
||||
if (is_object($input)) {
|
||||
foreach (get_object_vars($input) as $idx => $value) {
|
||||
$input->$idx = self::decode($value);
|
|
@ -1,46 +0,0 @@
|
|||
$NetBSD: patch-program_lib_Roundcube_rcube__db__pgsql.php,v 1.1 2013/06/15 16:08:09 taca Exp $
|
||||
|
||||
Fix from repository:
|
||||
* commit 983308e8b364c0ae5358874087977df9740d97ac:
|
||||
Fix connection to posgtres db using unix socket (#1489132)
|
||||
|
||||
--- program/lib/Roundcube/rcube_db_pgsql.php.orig 2013-05-16 18:06:36.000000000 +0000
|
||||
+++ program/lib/Roundcube/rcube_db_pgsql.php
|
||||
@@ -129,4 +129,37 @@ class rcube_db_pgsql extends rcube_db
|
||||
return isset($this->variables[$varname]) ? $this->variables[$varname] : $default;
|
||||
}
|
||||
|
||||
+ /**
|
||||
+ * Returns PDO DSN string from DSN array
|
||||
+ *
|
||||
+ * @param array $dsn DSN parameters
|
||||
+ *
|
||||
+ * @return string DSN string
|
||||
+ */
|
||||
+ protected function dsn_string($dsn)
|
||||
+ {
|
||||
+ $params = array();
|
||||
+ $result = 'pgsql:';
|
||||
+
|
||||
+ if ($dsn['hostspec']) {
|
||||
+ $params[] = 'host=' . $dsn['hostspec'];
|
||||
+ }
|
||||
+ else if ($dsn['socket']) {
|
||||
+ $params[] = 'host=' . $dsn['socket'];
|
||||
+ }
|
||||
+
|
||||
+ if ($dsn['port']) {
|
||||
+ $params[] = 'port=' . $dsn['port'];
|
||||
+ }
|
||||
+
|
||||
+ if ($dsn['database']) {
|
||||
+ $params[] = 'dbname=' . $dsn['database'];
|
||||
+ }
|
||||
+
|
||||
+ if (!empty($params)) {
|
||||
+ $result .= implode(';', $params);
|
||||
+ }
|
||||
+
|
||||
+ return $result;
|
||||
+ }
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
$NetBSD: patch-program_lib_Roundcube_rcube__imap.php,v 1.1 2013/06/15 16:08:09 taca Exp $
|
||||
|
||||
Fix from repository:
|
||||
* commit 35b0a75f72ef1c7c83bf2ad8ba01f6ac1a444122:
|
||||
Fix default sorting of threaded list when THREAD=REFS isn't supported.
|
||||
|
||||
--- program/lib/Roundcube/rcube_imap.php.orig 2013-05-16 18:06:36.000000000 +0000
|
||||
+++ program/lib/Roundcube/rcube_imap.php
|
||||
@@ -1336,17 +1336,16 @@ class rcube_imap extends rcube_storage
|
||||
// THREAD=REFERENCES: sorting by sent date of root message
|
||||
// THREAD=REFS: sorting by the most recent date in each thread
|
||||
|
||||
- if ($this->sort_field && ($this->sort_field != 'date' || $this->get_capability('THREAD') != 'REFS')) {
|
||||
- $index = $this->index_direct($this->folder, $this->sort_field, $this->sort_order, false);
|
||||
+ if ($this->get_capability('THREAD') != 'REFS') {
|
||||
+ $sortby = $this->sort_field ? $this->sort_field : 'date';
|
||||
+ $index = $this->index_direct($this->folder, $sortby, $this->sort_order, false);
|
||||
|
||||
if (!$index->is_empty()) {
|
||||
$threads->sort($index);
|
||||
}
|
||||
}
|
||||
- else {
|
||||
- if ($this->sort_order != $threads->get_parameters('ORDER')) {
|
||||
- $threads->revert();
|
||||
- }
|
||||
+ else if ($this->sort_order != $threads->get_parameters('ORDER')) {
|
||||
+ $threads->revert();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,76 +0,0 @@
|
|||
$NetBSD: patch-program_lib_Roundcube_rcube__imap__cache.php,v 1.1 2013/06/15 16:08:09 taca Exp $
|
||||
|
||||
Fix from repository:
|
||||
* commit 6213c6a6e18848d861f2add83bdb69a1de3f5956:
|
||||
Fix removing flags from serialized object before saving it in DB
|
||||
Fix from repository:
|
||||
* commit 72c8504b99fbd423651bab0180a044c489ca05cc:
|
||||
Fix bug where serialized strings were truncated in PDO::quote() (#1489142)
|
||||
|
||||
--- program/lib/Roundcube/rcube_imap_cache.php.orig 2013-05-16 18:06:36.000000000 +0000
|
||||
+++ program/lib/Roundcube/rcube_imap_cache.php
|
||||
@@ -407,8 +407,8 @@ class rcube_imap_cache
|
||||
return;
|
||||
}
|
||||
|
||||
- $msg = serialize($this->db->encode(clone $message));
|
||||
$flags = 0;
|
||||
+ $msg = clone $message;
|
||||
|
||||
if (!empty($message->flags)) {
|
||||
foreach ($this->flags as $idx => $flag) {
|
||||
@@ -417,7 +417,9 @@ class rcube_imap_cache
|
||||
}
|
||||
}
|
||||
}
|
||||
+
|
||||
unset($msg->flags);
|
||||
+ $msg = $this->db->encode($msg, true);
|
||||
|
||||
// update cache record (even if it exists, the update
|
||||
// here will work as select, assume row exist if affected_rows=0)
|
||||
@@ -639,7 +641,7 @@ class rcube_imap_cache
|
||||
|
||||
if ($sql_arr = $this->db->fetch_assoc($sql_result)) {
|
||||
$data = explode('@', $sql_arr['data']);
|
||||
- $index = @unserialize($data[0]);
|
||||
+ $index = $this->db->decode($data[0], true);
|
||||
unset($data[0]);
|
||||
|
||||
if (empty($index)) {
|
||||
@@ -676,7 +678,7 @@ class rcube_imap_cache
|
||||
|
||||
if ($sql_arr = $this->db->fetch_assoc($sql_result)) {
|
||||
$data = explode('@', $sql_arr['data']);
|
||||
- $thread = @unserialize($data[0]);
|
||||
+ $thread = $this->db->decode($data[0], true);
|
||||
unset($data[0]);
|
||||
|
||||
if (empty($thread)) {
|
||||
@@ -702,7 +704,7 @@ class rcube_imap_cache
|
||||
$data, $mbox_data = array(), $exists = false, $modseq = null)
|
||||
{
|
||||
$data = array(
|
||||
- serialize($data),
|
||||
+ $this->db->encode($data, true),
|
||||
$sort_field,
|
||||
(int) $this->skip_deleted,
|
||||
(int) $mbox_data['UIDVALIDITY'],
|
||||
@@ -735,7 +737,7 @@ class rcube_imap_cache
|
||||
private function add_thread_row($mailbox, $data, $mbox_data = array(), $exists = false)
|
||||
{
|
||||
$data = array(
|
||||
- serialize($data),
|
||||
+ $this->db->encode($data, true),
|
||||
(int) $this->skip_deleted,
|
||||
(int) $mbox_data['UIDVALIDITY'],
|
||||
(int) $mbox_data['UIDNEXT'],
|
||||
@@ -1067,7 +1069,7 @@ class rcube_imap_cache
|
||||
*/
|
||||
private function build_message($sql_arr)
|
||||
{
|
||||
- $message = $this->db->decode(unserialize($sql_arr['data']));
|
||||
+ $message = $this->db->decode($sql_arr['data'], true);
|
||||
|
||||
if ($message) {
|
||||
$message->flags = array();
|
|
@ -1,150 +0,0 @@
|
|||
$NetBSD: patch-program_lib_Roundcube_rcube__mime.php,v 1.1 2013/06/15 16:08:09 taca Exp $
|
||||
|
||||
Fix from repository:
|
||||
* commit db108e37793c7f8fc8ba11f00d0561d1f0bd32c0:
|
||||
Fix another text wrapping issue (wrong handling of long unwrappable lines)
|
||||
* commit f031cb6c5e4fd3dcb7ea243d477825868d8ad17b:
|
||||
Fix performance regression in text wrapping function (#1489133) - don't use
|
||||
iconv here
|
||||
|
||||
--- program/lib/Roundcube/rcube_mime.php.orig 2013-05-16 18:06:36.000000000 +0000
|
||||
+++ program/lib/Roundcube/rcube_mime.php
|
||||
@@ -587,23 +587,20 @@ class rcube_mime
|
||||
*/
|
||||
public static function wordwrap($string, $width=75, $break="\n", $cut=false, $charset=null, $wrap_quoted=true)
|
||||
{
|
||||
- if (!$charset) {
|
||||
- $charset = RCUBE_CHARSET;
|
||||
- }
|
||||
+ // Note: Never try to use iconv instead of mbstring functions here
|
||||
+ // Iconv's substr/strlen are 100x slower (#1489113)
|
||||
|
||||
- // detect available functions
|
||||
- $strlen_func = function_exists('iconv_strlen') ? 'iconv_strlen' : 'mb_strlen';
|
||||
- $strpos_func = function_exists('iconv_strpos') ? 'iconv_strpos' : 'mb_strpos';
|
||||
- $strrpos_func = function_exists('iconv_strrpos') ? 'iconv_strrpos' : 'mb_strrpos';
|
||||
- $substr_func = function_exists('iconv_substr') ? 'iconv_substr' : 'mb_substr';
|
||||
+ if ($charset && $charset != RCUBE_CHARSET && function_exists('mb_internal_encoding')) {
|
||||
+ mb_internal_encoding($charset);
|
||||
+ }
|
||||
|
||||
// Convert \r\n to \n, this is our line-separator
|
||||
$string = str_replace("\r\n", "\n", $string);
|
||||
$separator = "\n"; // must be 1 character length
|
||||
$result = array();
|
||||
|
||||
- while (($stringLength = $strlen_func($string, $charset)) > 0) {
|
||||
- $breakPos = $strpos_func($string, $separator, 0, $charset);
|
||||
+ while (($stringLength = mb_strlen($string)) > 0) {
|
||||
+ $breakPos = mb_strpos($string, $separator, 0);
|
||||
|
||||
// quoted line (do not wrap)
|
||||
if ($wrap_quoted && $string[0] == '>') {
|
||||
@@ -612,7 +609,7 @@ class rcube_mime
|
||||
$cutLength = null;
|
||||
}
|
||||
else {
|
||||
- $subString = $substr_func($string, 0, $breakPos, $charset);
|
||||
+ $subString = mb_substr($string, 0, $breakPos);
|
||||
$cutLength = $breakPos + 1;
|
||||
}
|
||||
}
|
||||
@@ -623,55 +620,54 @@ class rcube_mime
|
||||
$cutLength = null;
|
||||
}
|
||||
else {
|
||||
- $subString = $substr_func($string, 0, $breakPos, $charset);
|
||||
+ $subString = mb_substr($string, 0, $breakPos);
|
||||
$cutLength = $breakPos + 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
- $subString = $substr_func($string, 0, $width, $charset);
|
||||
+ $subString = mb_substr($string, 0, $width);
|
||||
|
||||
// last line
|
||||
if ($breakPos === false && $subString === $string) {
|
||||
$cutLength = null;
|
||||
}
|
||||
else {
|
||||
- $nextChar = $substr_func($string, $width, 1, $charset);
|
||||
+ $nextChar = mb_substr($string, $width, 1);
|
||||
|
||||
if ($nextChar === ' ' || $nextChar === $separator) {
|
||||
- $afterNextChar = $substr_func($string, $width + 1, 1, $charset);
|
||||
+ $afterNextChar = mb_substr($string, $width + 1, 1);
|
||||
|
||||
if ($afterNextChar === false) {
|
||||
$subString .= $nextChar;
|
||||
}
|
||||
|
||||
- $cutLength = $strlen_func($subString, $charset) + 1;
|
||||
+ $cutLength = mb_strlen($subString) + 1;
|
||||
}
|
||||
else {
|
||||
- if ($strrpos_func[0] == 'm') {
|
||||
- $spacePos = $strrpos_func($subString, ' ', 0, $charset);
|
||||
- }
|
||||
- else {
|
||||
- $spacePos = $strrpos_func($subString, ' ', $charset);
|
||||
- }
|
||||
+ $spacePos = mb_strrpos($subString, ' ', 0);
|
||||
|
||||
if ($spacePos !== false) {
|
||||
- $subString = $substr_func($subString, 0, $spacePos, $charset);
|
||||
+ $subString = mb_substr($subString, 0, $spacePos);
|
||||
$cutLength = $spacePos + 1;
|
||||
}
|
||||
+ else if ($cut === false && $breakPos === false) {
|
||||
+ $subString = $string;
|
||||
+ $cutLength = null;
|
||||
+ }
|
||||
else if ($cut === false) {
|
||||
- $spacePos = $strpos_func($string, ' ', 0, $charset);
|
||||
+ $spacePos = mb_strpos($string, ' ', 0);
|
||||
|
||||
if ($spacePos !== false && $spacePos < $breakPos) {
|
||||
- $subString = $substr_func($string, 0, $spacePos, $charset);
|
||||
+ $subString = mb_substr($string, 0, $spacePos);
|
||||
$cutLength = $spacePos + 1;
|
||||
}
|
||||
else {
|
||||
- $subString = $substr_func($string, 0, $breakPos, $charset);
|
||||
+ $subString = mb_substr($string, 0, $breakPos);
|
||||
$cutLength = $breakPos + 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
- $subString = $substr_func($subString, 0, $width, $charset);
|
||||
+ $subString = mb_substr($subString, 0, $width);
|
||||
$cutLength = $width;
|
||||
}
|
||||
}
|
||||
@@ -681,13 +677,17 @@ class rcube_mime
|
||||
$result[] = $subString;
|
||||
|
||||
if ($cutLength !== null) {
|
||||
- $string = $substr_func($string, $cutLength, ($stringLength - $cutLength), $charset);
|
||||
+ $string = mb_substr($string, $cutLength, ($stringLength - $cutLength));
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
+ if ($charset && $charset != RCUBE_CHARSET && function_exists('mb_internal_encoding')) {
|
||||
+ mb_internal_encoding(RCUBE_CHARSET);
|
||||
+ }
|
||||
+
|
||||
return implode($break, $result);
|
||||
}
|
||||
|
||||
@@ -795,7 +795,7 @@ class rcube_mime
|
||||
}
|
||||
|
||||
foreach ($file_paths as $fp) {
|
||||
- if (is_readable($fp)) {
|
||||
+ if (@is_readable($fp)) {
|
||||
$lines = file($fp, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
||||
break;
|
||||
}
|
|
@ -1,139 +0,0 @@
|
|||
$NetBSD: patch-program_lib_Roundcube_rcube__washtml.php,v 1.1 2013/06/15 16:08:09 taca Exp $
|
||||
|
||||
Fix from repository:
|
||||
* commit 1fe7d6ad75d2a5a2ab72a24de8cd8cdb341cff0e:
|
||||
Fix displaying messages with invalid self-closing HTML tags (#1489137)
|
||||
|
||||
--- program/lib/Roundcube/rcube_washtml.php.orig 2013-05-16 18:06:36.000000000 +0000
|
||||
+++ program/lib/Roundcube/rcube_washtml.php
|
||||
@@ -113,10 +113,9 @@ class rcube_washtml
|
||||
'type', 'rows', 'cols', 'disabled', 'readonly', 'checked', 'multiple', 'value'
|
||||
);
|
||||
|
||||
- /* Block elements which could be empty but cannot be returned in short form (<tag />) */
|
||||
- static $block_elements = array('div', 'p', 'pre', 'blockquote', 'a', 'font', 'center',
|
||||
- 'table', 'ul', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ol', 'dl', 'strong',
|
||||
- 'i', 'b', 'u', 'span',
|
||||
+ /* Elements which could be empty and be returned in short form (<tag />) */
|
||||
+ static $void_elements = array('area', 'base', 'br', 'col', 'command', 'embed', 'hr',
|
||||
+ 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'
|
||||
);
|
||||
|
||||
/* State for linked objects in HTML */
|
||||
@@ -134,12 +133,15 @@ class rcube_washtml
|
||||
/* Ignore these HTML tags but process their content */
|
||||
private $_ignore_elements = array();
|
||||
|
||||
- /* Block elements which could be empty but cannot be returned in short form (<tag />) */
|
||||
- private $_block_elements = array();
|
||||
+ /* Elements which could be empty and be returned in short form (<tag />) */
|
||||
+ private $_void_elements = array();
|
||||
|
||||
/* Allowed HTML attributes */
|
||||
private $_html_attribs = array();
|
||||
|
||||
+ /* Max nesting level */
|
||||
+ private $max_nesting_level;
|
||||
+
|
||||
|
||||
/**
|
||||
* Class constructor
|
||||
@@ -149,9 +151,9 @@ class rcube_washtml
|
||||
$this->_html_elements = array_flip((array)$p['html_elements']) + array_flip(self::$html_elements) ;
|
||||
$this->_html_attribs = array_flip((array)$p['html_attribs']) + array_flip(self::$html_attribs);
|
||||
$this->_ignore_elements = array_flip((array)$p['ignore_elements']) + array_flip(self::$ignore_elements);
|
||||
- $this->_block_elements = array_flip((array)$p['block_elements']) + array_flip(self::$block_elements);
|
||||
+ $this->_void_elements = array_flip((array)$p['void_elements']) + array_flip(self::$void_elements);
|
||||
|
||||
- unset($p['html_elements'], $p['html_attribs'], $p['ignore_elements'], $p['block_elements']);
|
||||
+ unset($p['html_elements'], $p['html_attribs'], $p['ignore_elements'], $p['void_elements']);
|
||||
|
||||
$this->config = $p + array('show_washed' => true, 'allow_remote' => false, 'cid_map' => array());
|
||||
}
|
||||
@@ -284,12 +286,26 @@ class rcube_washtml
|
||||
* It output only allowed tags with allowed attributes
|
||||
* and allowed inline styles
|
||||
*/
|
||||
- private function dumpHtml($node)
|
||||
+ private function dumpHtml($node, $level = 0)
|
||||
{
|
||||
if (!$node->hasChildNodes()) {
|
||||
return '';
|
||||
}
|
||||
|
||||
+ $level++;
|
||||
+
|
||||
+ if ($this->max_nesting_level > 0 && $level == $this->max_nesting_level - 1) {
|
||||
+ // log error message once
|
||||
+ if (!$this->max_nesting_level_error) {
|
||||
+ $this->max_nesting_level_error = true;
|
||||
+ rcube::raise_error(array('code' => 500, 'type' => 'php',
|
||||
+ 'line' => __LINE__, 'file' => __FILE__,
|
||||
+ 'message' => "Maximum nesting level exceeded (xdebug.max_nesting_level={$this->max_nesting_level})"),
|
||||
+ true, false);
|
||||
+ }
|
||||
+ return '<!-- ignored -->';
|
||||
+ }
|
||||
+
|
||||
$node = $node->firstChild;
|
||||
$dump = '';
|
||||
|
||||
@@ -299,19 +315,19 @@ class rcube_washtml
|
||||
$tagName = strtolower($node->tagName);
|
||||
if ($callback = $this->handlers[$tagName]) {
|
||||
$dump .= call_user_func($callback, $tagName,
|
||||
- $this->wash_attribs($node), $this->dumpHtml($node), $this);
|
||||
+ $this->wash_attribs($node), $this->dumpHtml($node, $level), $this);
|
||||
}
|
||||
else if (isset($this->_html_elements[$tagName])) {
|
||||
- $content = $this->dumpHtml($node);
|
||||
+ $content = $this->dumpHtml($node, $level);
|
||||
$dump .= '<' . $tagName . $this->wash_attribs($node) .
|
||||
- ($content != '' || isset($this->_block_elements[$tagName]) ? ">$content</$tagName>" : ' />');
|
||||
+ ($content === '' && isset($this->_void_elements[$tagName]) ? ' />' : ">$content</$tagName>");
|
||||
}
|
||||
else if (isset($this->_ignore_elements[$tagName])) {
|
||||
$dump .= '<!-- ' . htmlspecialchars($tagName, ENT_QUOTES) . ' not allowed -->';
|
||||
}
|
||||
else {
|
||||
$dump .= '<!-- ' . htmlspecialchars($tagName, ENT_QUOTES) . ' ignored -->';
|
||||
- $dump .= $this->dumpHtml($node); // ignore tags not its content
|
||||
+ $dump .= $this->dumpHtml($node, $level); // ignore tags not its content
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -324,14 +340,14 @@ class rcube_washtml
|
||||
break;
|
||||
|
||||
case XML_HTML_DOCUMENT_NODE:
|
||||
- $dump .= $this->dumpHtml($node);
|
||||
+ $dump .= $this->dumpHtml($node, $level);
|
||||
break;
|
||||
|
||||
case XML_DOCUMENT_TYPE_NODE:
|
||||
break;
|
||||
|
||||
default:
|
||||
- $dump . '<!-- node type ' . $node->nodeType . ' -->';
|
||||
+ $dump .= '<!-- node type ' . $node->nodeType . ' -->';
|
||||
}
|
||||
} while($node = $node->nextSibling);
|
||||
|
||||
@@ -358,6 +374,9 @@ class rcube_washtml
|
||||
$this->config['base_url'] = '';
|
||||
}
|
||||
|
||||
+ // Detect max nesting level (for dumpHTML) (#1489110)
|
||||
+ $this->max_nesting_level = (int) @ini_get('xdebug.max_nesting_level');
|
||||
+
|
||||
@$node->loadHTML($html);
|
||||
return $this->dumpHtml($node);
|
||||
}
|
||||
@@ -405,6 +424,7 @@ class rcube_washtml
|
||||
rcube::raise_error(array('code' => 620, 'type' => 'php',
|
||||
'line' => __LINE__, 'file' => __FILE__,
|
||||
'message' => $errstr), true, false);
|
||||
+
|
||||
return '';
|
||||
}
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
$NetBSD: patch-program_steps_mail_compose.inc,v 1.1 2013/06/15 16:08:09 taca Exp $
|
||||
|
||||
Fix from repository:
|
||||
* commit 0a7df4a32e86a103a5f1fe801374383a195ba1a5:
|
||||
Fix so bounces addresses in Sender headers are skipped on Reply-All
|
||||
(#1489011)
|
||||
* commit aafc0a3d24149da9f7350f760932898319041815:
|
||||
Fix so non-inline images aren't skipped on forward (#1489150)
|
||||
|
||||
--- program/steps/mail/compose.inc.orig 2013-05-16 18:06:36.000000000 +0000
|
||||
+++ program/steps/mail/compose.inc
|
||||
@@ -143,7 +143,7 @@ $OUTPUT->set_env('top_posting', intval($
|
||||
$OUTPUT->set_env('recipients_separator', trim($RCMAIL->config->get('recipients_separator', ',')));
|
||||
|
||||
// default font for HTML editor
|
||||
-$font = rcube_fontdefs($RCMAIL->config->get('default_font', 'Verdana'));
|
||||
+$font = rcube_fontdefs($RCMAIL->config->get('default_font'));
|
||||
if ($font && !is_array($font)) {
|
||||
$OUTPUT->set_env('default_font', $font);
|
||||
}
|
||||
@@ -318,7 +318,8 @@ foreach ($parts as $header) {
|
||||
$fvalue .= $v;
|
||||
if ($v = $MESSAGE->headers->cc)
|
||||
$fvalue .= (!empty($fvalue) ? $separator : '') . $v;
|
||||
- if ($v = $MESSAGE->headers->get('Sender', false))
|
||||
+ // Use Sender header (#1489011)
|
||||
+ if (($v = $MESSAGE->headers->get('Sender', false)) && strpos($v, '-bounces@') === false)
|
||||
$fvalue .= (!empty($fvalue) ? $separator : '') . $v;
|
||||
|
||||
// When To: and Reply-To: are the same we add From: address to the list (#1489037)
|
||||
@@ -1007,8 +1008,8 @@ function rcmail_write_compose_attachment
|
||||
if ($part->ctype_primary == 'message' && $compose_mode == RCUBE_COMPOSE_REPLY) {
|
||||
continue;
|
||||
}
|
||||
- // skip inline images when forwarding in plain text
|
||||
- if ($part->content_id && !$bodyIsHtml && $compose_mode == RCUBE_COMPOSE_FORWARD) {
|
||||
+ // skip inline images when forwarding
|
||||
+ if ($part->content_id && $part->disposition == 'inline' && $compose_mode == RCUBE_COMPOSE_FORWARD) {
|
||||
continue;
|
||||
}
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
$NetBSD: patch-program_steps_mail_func.inc,v 1.1 2013/06/15 16:08:09 taca Exp $
|
||||
|
||||
Fix from repository:
|
||||
* commit db108e37793c7f8fc8ba11f00d0561d1f0bd32c0:
|
||||
Fix another text wrapping issue (wrong handling of long unwrappable lines)
|
||||
* commit f5fac810dd2b9276994585789cc68f71c4cd4cd3:
|
||||
Fix PHP warning when responding to a message with many Return-Path headers
|
||||
(#1489136)
|
||||
|
||||
--- program/steps/mail/func.inc.orig 2013-05-16 18:06:36.000000000 +0000
|
||||
+++ program/steps/mail/func.inc
|
||||
@@ -1532,11 +1532,11 @@ function rcmail_address_string($input, $
|
||||
/**
|
||||
* Wrap text to a given number of characters per line
|
||||
* but respect the mail quotation of replies messages (>).
|
||||
- * Finally add another quotation level by prpending the lines
|
||||
+ * Finally add another quotation level by prepending the lines
|
||||
* with >
|
||||
*
|
||||
* @param string Text to wrap
|
||||
- * @param int The line width
|
||||
+ * @param int The line width
|
||||
* @return string The wrapped text
|
||||
*/
|
||||
function rcmail_wrap_and_quote($text, $length = 72)
|
||||
@@ -1552,7 +1552,7 @@ function rcmail_wrap_and_quote($text, $l
|
||||
$line = '>' . rtrim($line);
|
||||
else if (mb_strlen($line) > $max) {
|
||||
$newline = '';
|
||||
- foreach(explode("\n", rc_wordwrap($line, $length - 2)) as $l) {
|
||||
+ foreach (explode("\n", rc_wordwrap($line, $length - 2)) as $l) {
|
||||
if (strlen($l))
|
||||
$newline .= '> ' . $l . "\n";
|
||||
else
|
||||
@@ -1803,9 +1803,12 @@ function rcmail_identity_select($MESSAGE
|
||||
// Try Return-Path
|
||||
if ($from_idx === null && ($return_path = $MESSAGE->headers->others['return-path'])) {
|
||||
foreach ($identities as $idx => $ident) {
|
||||
- if (strpos($return_path, str_replace('@', '=', $ident['email_ascii']).'@') !== false) {
|
||||
- $from_idx = $idx;
|
||||
- break;
|
||||
+ $ident = str_replace('@', '=', $ident['email_ascii']) . '@';
|
||||
+ foreach ((array)$return_path as $path) {
|
||||
+ if (strpos($path, $ident) !== false) {
|
||||
+ $from_idx = $idx;
|
||||
+ break 2;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
$NetBSD: patch-program_steps_mail_show.inc,v 1.1 2013/06/15 16:08:09 taca Exp $
|
||||
|
||||
Fix from repository:
|
||||
* commit acb4b71ce55f3d98f7053b7bb8fdcf3c7858fbfc:
|
||||
Fix error when there's no writeable addressbook source (#1489162)
|
||||
|
||||
--- program/steps/mail/show.inc.orig 2013-05-16 18:06:36.000000000 +0000
|
||||
+++ program/steps/mail/show.inc
|
||||
@@ -255,9 +255,13 @@ function rcmail_contact_exists($email)
|
||||
if ($email) {
|
||||
// @TODO: search in all address books?
|
||||
$CONTACTS = $RCMAIL->get_address_book(-1, true);
|
||||
- $existing = $CONTACTS->search('email', $email, true, false);
|
||||
- if ($existing->count)
|
||||
- return true;
|
||||
+
|
||||
+ if (is_object($CONTACTS)) {
|
||||
+ $existing = $CONTACTS->search('email', $email, true, false);
|
||||
+ if ($existing->count) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
return false;
|
|
@ -1,40 +0,0 @@
|
|||
$NetBSD: patch-skins_classic_print.css,v 1.1 2013/06/15 16:08:09 taca Exp $
|
||||
|
||||
Fix from repository:
|
||||
* commit 50d0a12933f5b58506cfe0df477eeb81b727d41e:
|
||||
Add styles for image thumbnails in print mode (#1489134)
|
||||
|
||||
--- skins/classic/print.css.orig 2013-05-16 18:06:37.000000000 +0000
|
||||
+++ skins/classic/print.css
|
||||
@@ -136,3 +136,31 @@ div.message-part blockquote blockquote b
|
||||
border-left: 2px solid #bb0000;
|
||||
border-right: 2px solid #bb0000;
|
||||
}
|
||||
+
|
||||
+p.image-attachment
|
||||
+{
|
||||
+ position: relative;
|
||||
+ padding: 1em;
|
||||
+ border-top: 1px solid #ccc;
|
||||
+}
|
||||
+
|
||||
+p.image-attachment a.image-link
|
||||
+{
|
||||
+ float: left;
|
||||
+ display: block;
|
||||
+ margin-right: 2em;
|
||||
+ min-width: 160px;
|
||||
+ min-height: 60px;
|
||||
+ text-align: center;
|
||||
+}
|
||||
+
|
||||
+p.image-attachment .image-filename
|
||||
+{
|
||||
+ display: block;
|
||||
+ line-height: 1.6em;
|
||||
+}
|
||||
+
|
||||
+p.image-attachment .attachment-links
|
||||
+{
|
||||
+ display: none;
|
||||
+}
|
|
@ -1,118 +0,0 @@
|
|||
$NetBSD: patch-skins_larry_mail.css,v 1.1 2013/06/15 16:08:09 taca Exp $
|
||||
|
||||
Fix from repository:
|
||||
* commit 63049afbfe457d9b1dd709e7d8b108218c5ea3f2:
|
||||
Set minimum height for message headers block (#1489108)
|
||||
|
||||
--- skins/larry/mail.css.orig 2013-05-16 18:06:37.000000000 +0000
|
||||
+++ skins/larry/mail.css
|
||||
@@ -151,7 +151,7 @@ a.iconbutton.threadmode.selected {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
- background-image: url(images/listicons.png?v=bd98.25486);
|
||||
+ background-image: url(images/listicons.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 6px 3px;
|
||||
}
|
||||
@@ -254,7 +254,7 @@ a.iconbutton.threadmode.selected {
|
||||
left: 19px;
|
||||
width: 13px;
|
||||
height: 13px;
|
||||
- background: url(images/listicons.png?v=bd98.25486) -3px -144px no-repeat;
|
||||
+ background: url(images/listicons.png) -3px -144px no-repeat;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@@ -376,7 +376,7 @@ a.iconbutton.threadmode.selected {
|
||||
right: 4px;
|
||||
width: 20px;
|
||||
height: 18px;
|
||||
- background: url(images/buttons.png?v=abf1.36693) -3px -458px no-repeat;
|
||||
+ background: url(images/buttons.png) -3px -458px no-repeat;
|
||||
}
|
||||
|
||||
#mailpreviewtoggle.enabled {
|
||||
@@ -463,7 +463,7 @@ a.iconbutton.threadmode.selected {
|
||||
#messagelist thead tr td.sortedDESC a {
|
||||
color: #004458;
|
||||
text-decoration: underline;
|
||||
- background: url(images/listicons.png?v=bd98.25486) right -912px no-repeat;
|
||||
+ background: url(images/listicons.png) right -912px no-repeat;
|
||||
}
|
||||
|
||||
#messagelist thead tr td.sortedASC a {
|
||||
@@ -526,7 +526,7 @@ a.iconbutton.threadmode.selected {
|
||||
height: 18px;
|
||||
width: 20px;
|
||||
padding: 0;
|
||||
- background: url(images/listicons.png?v=bd98.25486) -100px 0 no-repeat;
|
||||
+ background: url(images/listicons.png) -100px 0 no-repeat;
|
||||
}
|
||||
|
||||
#messagelist tbody tr td.attachment span.attachment {
|
||||
@@ -826,7 +826,7 @@ h3.subject {
|
||||
left: 0;
|
||||
width: 18px;
|
||||
height: 16px;
|
||||
- background: url(images/buttons.png?v=abf1.36693) -27px -242px no-repeat;
|
||||
+ background: url(images/buttons.png) -27px -242px no-repeat;
|
||||
}
|
||||
|
||||
.moreheaderstoggle.remove .iconlink {
|
||||
@@ -846,7 +846,7 @@ div.more-headers {
|
||||
width: 12px;
|
||||
height: 10px;
|
||||
cursor: pointer;
|
||||
- background: url(images/buttons.png?v=abf1.36693) center -1579px no-repeat;
|
||||
+ background: url(images/buttons.png) center -1579px no-repeat;
|
||||
}
|
||||
|
||||
div.hide-headers {
|
||||
@@ -903,7 +903,7 @@ div.hide-headers {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
overflow: hidden;
|
||||
- background: url(images/contactpic_32px.png?v=09a3.287) center center no-repeat #fff;
|
||||
+ background: url(images/contactpic_32px.png) center center no-repeat #fff;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
@@ -913,6 +913,10 @@ div.hide-headers {
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
+#messageheader .message-headers {
|
||||
+ min-height: 60px;
|
||||
+}
|
||||
+
|
||||
#messageheader #contactphoto {
|
||||
display: block;
|
||||
position: absolute;
|
||||
@@ -923,7 +927,7 @@ div.hide-headers {
|
||||
overflow: hidden;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #e6e6e6;
|
||||
- background: url(images/contactpic_48px.png?v=1bc4.353) center center no-repeat #fff;
|
||||
+ background: url(images/contactpic_48px.png) center center no-repeat #fff;
|
||||
}
|
||||
|
||||
#messageheader #contactphoto img {
|
||||
@@ -1200,7 +1204,7 @@ div.message-partheaders .headers-table t
|
||||
}
|
||||
|
||||
#compose-contacts li a, #contacts-table td {
|
||||
- background: url(images/listicons.png?v=bd98.25486) -100px 0 no-repeat;
|
||||
+ background: url(images/listicons.png) -100px 0 no-repeat;
|
||||
overflow: hidden;
|
||||
padding-left: 36px;
|
||||
text-overflow: ellipsis;
|
||||
@@ -1412,7 +1416,7 @@ div.message-partheaders .headers-table t
|
||||
}
|
||||
|
||||
#compose-attachments.droptarget {
|
||||
- background-image: url(images/filedrop.png?v=deab.605);
|
||||
+ background-image: url(images/filedrop.png);
|
||||
background-position: center bottom;
|
||||
background-repeat: no-repeat;
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
$NetBSD: patch-skins_larry_print.css,v 1.1 2013/06/15 16:08:09 taca Exp $
|
||||
|
||||
Fix from repository:
|
||||
* commit 50d0a12933f5b58506cfe0df477eeb81b727d41e:
|
||||
Add styles for image thumbnails in print mode (#1489134)
|
||||
|
||||
--- skins/larry/print.css.orig 2013-05-16 18:06:37.000000000 +0000
|
||||
+++ skins/larry/print.css
|
||||
@@ -123,3 +123,27 @@ div.message-part blockquote blockquote b
|
||||
border-left: 2px solid #b00;
|
||||
border-right: 2px solid #b00;
|
||||
}
|
||||
+
|
||||
+p.image-attachment {
|
||||
+ position: relative;
|
||||
+ padding: 1em;
|
||||
+ border-top: 1px solid #ccc;
|
||||
+}
|
||||
+
|
||||
+p.image-attachment a.image-link {
|
||||
+ float: left;
|
||||
+ display: block;
|
||||
+ margin-right: 2em;
|
||||
+ min-width: 160px;
|
||||
+ min-height: 60px;
|
||||
+ text-align: center;
|
||||
+}
|
||||
+
|
||||
+p.image-attachment .image-filename {
|
||||
+ display: block;
|
||||
+ line-height: 1.6em;
|
||||
+}
|
||||
+
|
||||
+p.image-attachment .attachment-links {
|
||||
+ display: none;
|
||||
+}
|
|
@ -1,18 +0,0 @@
|
|||
$NetBSD: patch-skins_larry_templates_message.html,v 1.1 2013/06/15 16:08:09 taca Exp $
|
||||
|
||||
Fix from repository:
|
||||
* commit 63049afbfe457d9b1dd709e7d8b108218c5ea3f2:
|
||||
Set minimum height for message headers block (#1489108)
|
||||
|
||||
--- skins/larry/templates/message.html.orig 2013-05-16 18:06:37.000000000 +0000
|
||||
+++ skins/larry/templates/message.html
|
||||
@@ -44,7 +44,9 @@
|
||||
<span class="moreheaderstoggle"></span>
|
||||
|
||||
<h2 class="subject"><roundcube:object name="messageHeaders" valueOf="subject" /></h2>
|
||||
+<div class="message-headers">
|
||||
<roundcube:object name="messageHeaders" class="headers-table" addicon="/images/addcontact.png" exclude="subject" max="20" />
|
||||
+</div>
|
||||
<roundcube:object name="messageFullHeaders" id="full-headers" />
|
||||
|
||||
<!-- record navigation -->
|
Loading…
Reference in a new issue