+
+ /**
+ * Returns the path of the provided theme
+ *
+ * @param $theme
+ * @return string|null
+ */
+ public static function getConfigFile($theme)
+ {
+ $theme = Strings::sanitizeFilePathItem($theme);
+
+ $a = DI::app();
+ $base_theme = $a->theme_info['extends'] ?? '';
+
+ if (file_exists("view/theme/$theme/config.php")) {
+ return "view/theme/$theme/config.php";
+ }
+ if ($base_theme && file_exists("view/theme/$base_theme/config.php")) {
+ return "view/theme/$base_theme/config.php";
+ }
+ return null;
+ }
+
+ /**
+ * Returns the background color of the provided theme if available.
+ *
+ * @param string $theme
+ * @param int|null $uid Current logged-in user id
+ * @return string|null
+ */
+ public static function getBackgroundColor(string $theme, $uid = null)
+ {
+ $theme = Strings::sanitizeFilePathItem($theme);
+
+ $return = null;
+
+ // silently fail if theme was removed or if $theme is funky
+ if (file_exists("view/theme/$theme/theme.php")) {
+ include_once "view/theme/$theme/theme.php";
+
+ $func = "{$theme}_get_background_color";
+ if (function_exists($func)) {
+ $return = $func($uid);
+ }
+ }
+
+ return $return;
+ }
+
+ /**
+ * Returns the theme color of the provided theme if available.
+ *
+ * @param string $theme
+ * @param int|null $uid Current logged-in user id
+ * @return string|null
+ */
+ public static function getThemeColor(string $theme, int $uid = null)
+ {
+ $theme = Strings::sanitizeFilePathItem($theme);
+
+ $return = null;
+
+ // silently fail if theme was removed or if $theme is funky
+ if (file_exists("view/theme/$theme/theme.php")) {
+ include_once "view/theme/$theme/theme.php";
+
+ $func = "{$theme}_get_theme_color";
+ if (function_exists($func)) {
+ $return = $func($uid);
+ }
+ }
+
+ return $return;
+ }