aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/Controllers/configureController.php5
-rw-r--r--app/Models/Themes.php6
2 files changed, 10 insertions, 1 deletions
diff --git a/app/Controllers/configureController.php b/app/Controllers/configureController.php
index 59845d710..edd04a64c 100644
--- a/app/Controllers/configureController.php
+++ b/app/Controllers/configureController.php
@@ -47,7 +47,10 @@ class FreshRSS_configure_Controller extends FreshRSS_ActionController {
if (Minz_Request::isPost()) {
FreshRSS_Context::userConf()->language = Minz_Request::paramString('language') ?: 'en';
FreshRSS_Context::userConf()->timezone = Minz_Request::paramString('timezone');
- FreshRSS_Context::userConf()->theme = Minz_Request::paramString('theme') ?: FreshRSS_Themes::$defaultTheme;
+ $theme = Minz_Request::paramString('theme') ?: FreshRSS_Themes::$defaultTheme;
+ if (FreshRSS_Themes::exists($theme)) {
+ FreshRSS_Context::userConf()->theme = $theme;
+ }
FreshRSS_Context::userConf()->darkMode = Minz_Request::paramString('darkMode') ?: 'auto';
FreshRSS_Context::userConf()->content_width = Minz_Request::paramString('content_width') ?: 'thin';
FreshRSS_Context::userConf()->topline_read = Minz_Request::paramBoolean('topline_read');
diff --git a/app/Models/Themes.php b/app/Models/Themes.php
index ef44b0b75..bc220aa50 100644
--- a/app/Models/Themes.php
+++ b/app/Models/Themes.php
@@ -15,6 +15,12 @@ class FreshRSS_Themes extends Minz_Model {
));
}
+ public static function exists(string $theme_id): bool {
+ $theme_dir = PUBLIC_PATH . self::$themesUrl . $theme_id;
+ return str_replace(['..', '/', DIRECTORY_SEPARATOR], '', $theme_id) === $theme_id
+ && file_exists($theme_dir . '/metadata.json');
+ }
+
/** @return array<string,array{id:string,name:string,author:string,description:string,version:float|string,files:array<string>,theme-color?:string|array{dark?:string,light?:string,default?:string}}> */
public static function get(): array {
$themes_list = self::getList();