diff --git a/classes/pref/prefs.php b/classes/pref/prefs.php index 57123723912d628ed9abf7cc2f73386dcc112eb0..da11f55e1bed81f454a5af0a334808caa89fed8c 100644 --- a/classes/pref/prefs.php +++ b/classes/pref/prefs.php @@ -571,7 +571,8 @@ class Pref_Prefs extends Handler_Protected { } else if ($pref_name == "USER_CSS_THEME") { - $themes = array_map("basename", glob("themes/*.css")); + $themes = array_filter(array_map("basename", glob("themes/*.css")), + "theme_valid"); print_select($pref_name, $value, $themes, 'dojoType="dijit.form.Select"'); diff --git a/include/functions2.php b/include/functions2.php index 31ca98035e953b87fb940a733d4dd68a42c94200..45c73b3736487df1d46af8a11035b6e6cf941664 100644 --- a/include/functions2.php +++ b/include/functions2.php @@ -17,7 +17,10 @@ $params["default_view_order_by"] = get_pref("_DEFAULT_VIEW_ORDER_BY"); $params["bw_limit"] = (int) $_SESSION["bw_limit"]; $params["label_base_index"] = (int) LABEL_BASE_INDEX; - $params["theme"] = get_pref("USER_CSS_THEME", false, false); + + $theme = get_pref( "USER_CSS_THEME", false, false); + $params["theme"] = theme_valid("$theme") ? $theme : ""; + $params["plugins"] = implode(", ", PluginHost::getInstance()->get_plugin_names()); $params["php_platform"] = PHP_OS; @@ -2422,4 +2425,21 @@ return LABEL_BASE_INDEX - 1 + abs($feed); } + function theme_valid($file) { + if ($file == "default.css") return true; // needed for array_filter + $file = "themes/" . basename($file); + + if (file_exists($file) && is_readable($file)) { + $fh = fopen($file, "r"); + + if ($fh) { + $header = fgets($fh); + fclose($fh); + + return strpos($header, "supports-version:" . VERSION_STATIC) !== FALSE; + } + } + + return false; + } ?> diff --git a/index.php b/index.php index 74498b8f45a7f4a3b1ee47feeba2d74422d03674..4f2a9a860dd9292e97a77efd0813c71b20c6614c 100644 --- a/index.php +++ b/index.php @@ -65,7 +65,7 @@ <?php if ($_SESSION["uid"]) { $theme = get_pref( "USER_CSS_THEME", $_SESSION["uid"], false); - if ($theme && file_exists("themes/$theme")) { + if ($theme && theme_valid("$theme")) { echo stylesheet_tag("themes/$theme"); } else { echo stylesheet_tag("themes/default.css"); diff --git a/prefs.php b/prefs.php index cc62677981dfc30f2632bb19a69efda228c43928..191f452c4e11cad86e0639cbe238ef45447244e6 100644 --- a/prefs.php +++ b/prefs.php @@ -41,7 +41,7 @@ <?php if ($_SESSION["uid"]) { $theme = get_pref( "USER_CSS_THEME", $_SESSION["uid"], false); - if ($theme && file_exists("themes/$theme")) { + if ($theme && theme_valid("$theme")) { echo stylesheet_tag("themes/$theme"); } else { echo stylesheet_tag("themes/default.css"); diff --git a/themes/night.css b/themes/night.css index 78b73f09ae5a0900f96a60b4028bf5584459327f..5a236a911ed5fbb8a9b6c20ba64bc23b6cc15460 100644 --- a/themes/night.css +++ b/themes/night.css @@ -1,3 +1,4 @@ +/* supports-version:1.15 */ @import "default.css"; body#ttrssMain #feeds-holder {