X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FTheme.php;h=334f31a6e55f1f72c60f33ae72f92ba082b92c7b;hb=c9c6eca8a60681360f1222739d0603e4ed99d663;hp=ff3265c90aea3afe1e13d724cbaa5b779eabf642;hpb=e80d68ba53776bed047d897f52db7e25b35a479d;p=friendica.git diff --git a/src/Core/Theme.php b/src/Core/Theme.php index ff3265c90a..334f31a6e5 100644 --- a/src/Core/Theme.php +++ b/src/Core/Theme.php @@ -90,7 +90,7 @@ class Theme $stamp1 = microtime(true); $theme_file = file_get_contents("view/theme/$theme/theme.php"); - DI::profiler()->saveTimestamp($stamp1, "file", System::callstack()); + DI::profiler()->saveTimestamp($stamp1, "file"); $result = preg_match("|/\*.*\*/|msU", $theme_file, $matches); @@ -98,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") { @@ -158,6 +158,8 @@ class Theme if (function_exists($func)) { $func(); } + + Hook::delete(['file' => "view/theme/$theme/theme.php"]); } $allowed_themes = Theme::getAllowedList(); @@ -257,4 +259,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; + } }