summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2010-09-18 16:32:00 +0000
committerthomascube <thomas@roundcube.net>2010-09-18 16:32:00 +0000
commit62c791f60923e12ef157f6de7018d0f7ada47911 (patch)
tree16d6c4db1788a6e993508f2b9268b3f759588e29
parentffc040bf9ea603ab9c5d752a222caf22627643c7 (diff)
Prevent from saving a non-existing skin path in user prefs
-rw-r--r--CHANGELOG1
-rwxr-xr-xprogram/include/rcube_template.php12
-rw-r--r--program/steps/mail/show.inc2
-rw-r--r--program/steps/settings/save_prefs.inc5
4 files changed, 15 insertions, 5 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 1ece7d52d..51033a281 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG RoundCube Webmail
===========================
+- Prevent from saving a non-existing skin path in user prefs (#1486936)
- Improve handling of single-part messages with bogus BODYSTRUCTURE (#1486898)
- Fix path to SQL files when using pgsql/mysqli/sqlsrv drivers (#1486902)
- Fix upgrade script for SQLite (#1486903)
diff --git a/program/include/rcube_template.php b/program/include/rcube_template.php
index f301b3618..4c59c4197 100755
--- a/program/include/rcube_template.php
+++ b/program/include/rcube_template.php
@@ -138,13 +138,21 @@ class rcube_template extends rcube_html_page
*/
public function set_skin($skin)
{
- if (!empty($skin) && is_dir('skins/'.$skin) && is_readable('skins/'.$skin))
+ $valid = false;
+
+ if (!empty($skin) && is_dir('skins/'.$skin) && is_readable('skins/'.$skin)) {
$skin_path = 'skins/'.$skin;
- else
+ $valid = true;
+ }
+ else {
$skin_path = $this->config['skin_path'] ? $this->config['skin_path'] : 'skins/default';
+ $valid = !$skin;
+ }
$this->app->config->set('skin_path', $skin_path);
$this->config['skin_path'] = $skin_path;
+
+ return $valid;
}
/**
diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc
index 69b30eb4d..a9dbced90 100644
--- a/program/steps/mail/show.inc
+++ b/program/steps/mail/show.inc
@@ -29,7 +29,7 @@ if ($uid = get_input_value('_uid', RCUBE_INPUT_GET)) {
if (empty($MESSAGE->headers)) {
rcmail_message_error($uid);
}
-
+sleep(5);
send_nocacheing_headers();
$mbox_name = $IMAP->get_mailbox_name();
diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc
index 3f13c0af4..a8ff87869 100644
--- a/program/steps/settings/save_prefs.inc
+++ b/program/steps/settings/save_prefs.inc
@@ -116,8 +116,9 @@ switch ($CURR_SECTION)
$OUTPUT->command('reload', 500);
}
- // switch skin
- $OUTPUT->set_skin($a_user_prefs['skin']);
+ // switch skin (if valid, otherwise unset the pref and fall back to default)
+ if (!$OUTPUT->set_skin($a_user_prefs['skin']))
+ unset($a_user_prefs['skin']);
// force min size
if ($a_user_prefs['pagesize'] < 1)