From 2b017e7f79be26563ab767bb9e97fee5d88a01f4 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Fri, 09 Dec 2011 16:13:54 -0500
Subject: [PATCH] Allow clean background:url(...) styles in safe mode. This will make Roundcube pass the Email Standards Acid Test
---
program/include/rcube_config.php | 41 ++++++++++++++++++++++++++++++++++++++++-
1 files changed, 40 insertions(+), 1 deletions(-)
diff --git a/program/include/rcube_config.php b/program/include/rcube_config.php
index 0e23b03..f80f92c 100644
--- a/program/include/rcube_config.php
+++ b/program/include/rcube_config.php
@@ -91,6 +91,15 @@
// enable display_errors in 'show' level, but not for ajax requests
ini_set('display_errors', intval(empty($_REQUEST['_remote']) && ($this->prop['debug_level'] & 4)));
+ // set timezone auto settings values
+ if ($this->prop['timezone'] == 'auto') {
+ $this->prop['dst_active'] = intval(date('I'));
+ $this->prop['_timezone_value'] = date('Z') / 3600 - $this->prop['dst_active'];
+ }
+ else if ($this->prop['dst_active'] === null) {
+ $this->prop['dst_active'] = intval(date('I'));
+ }
+
// export config data
$GLOBALS['CONFIG'] = &$this->prop;
}
@@ -150,7 +159,20 @@
*/
public function get($name, $def = null)
{
- return isset($this->prop[$name]) ? $this->prop[$name] : $def;
+ $result = isset($this->prop[$name]) ? $this->prop[$name] : $def;
+ $rcmail = rcmail::get_instance();
+
+ if ($name == 'timezone' && isset($this->prop['_timezone_value']))
+ $result = $this->prop['_timezone_value'];
+
+ if (is_object($rcmail->plugins)) {
+ $plugin = $rcmail->plugins->exec_hook('config_get', array(
+ 'name' => $name, 'default' => $def, 'result' => $result));
+
+ return $plugin['result'];
+ }
+
+ return $result;
}
@@ -197,6 +219,14 @@
$this->userprefs = $prefs;
$this->prop = array_merge($this->prop, $prefs);
+
+ // override timezone settings with client values
+ if ($this->prop['timezone'] == 'auto') {
+ $this->prop['_timezone_value'] = isset($_SESSION['timezone']) ? $_SESSION['timezone'] : $this->prop['_timezone_value'];
+ $this->prop['dst_active'] = $this->userprefs['dst_active'] = isset($_SESSION['dst_active']) ? $_SESSION['dst_active'] : $this->prop['dst_active'];
+ }
+ else if (isset($this->prop['_timezone_value']))
+ unset($this->prop['_timezone_value']);
}
@@ -210,6 +240,15 @@
return $this->prop;
}
+ /**
+ * Special getter for user's timezone offset including DST
+ *
+ * @return float Timezone offset (in hours)
+ */
+ public function get_timezone()
+ {
+ return floatval($this->get('timezone')) + intval($this->get('dst_active'));
+ }
/**
* Return requested DES crypto key.
--
Gitblit v1.9.1