X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FTheme.php;h=03f1dfd9cd45c0de6a9533fcde4458c2008e0058;hb=8770a2089eebe04aeb5d4034edd070cf72c9d3f3;hp=bf3e3418a0908778546c9423559c2f9b2ec1c03a;hpb=af88c2daa34e39cb6430abf64d0648665bfeb9cd;p=friendica.git diff --git a/src/Core/Theme.php b/src/Core/Theme.php index bf3e3418a0..03f1dfd9cd 100644 --- a/src/Core/Theme.php +++ b/src/Core/Theme.php @@ -1,7 +1,22 @@ . + * */ namespace Friendica\Core; @@ -19,7 +34,7 @@ class Theme { public static function getAllowedList() { - $allowed_themes_str = Config::get('system', 'allowed_themes'); + $allowed_themes_str = DI::config()->get('system', 'allowed_themes'); $allowed_themes_raw = explode(',', str_replace(' ', '', $allowed_themes_str)); $allowed_themes = []; if (count($allowed_themes_raw)) { @@ -36,7 +51,7 @@ class Theme public static function setAllowedList(array $allowed_themes) { - Config::set('system', 'allowed_themes', implode(',', array_unique($allowed_themes))); + DI::config()->set('system', 'allowed_themes', implode(',', array_unique($allowed_themes))); } /** @@ -83,7 +98,7 @@ class Theme $comment_lines = explode("\n", $matches[0]); foreach ($comment_lines as $comment_line) { $comment_line = trim($comment_line, "\t\n\r */"); - if ($comment_line != "") { + if (strpos($comment_line, ':') !== false) { list($key, $value) = array_map("trim", explode(":", $comment_line, 2)); $key = strtolower($key); if ($key == "author") { @@ -242,4 +257,78 @@ class Theme return 'view/theme/' . $theme . '/style.pcss' . (!empty($query_params) ? '?' . http_build_query($query_params) : ''); } + + /** + * 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; + } }