Add system.allowed_themes config key handling in Core\Theme

- Add Theme::setAllowedList method
- Update the allowed theme list on theme install/uninstall
- Add theme file inclusion on uninstall allowing for theme_uninstall function to be called
- Removing logging from frontend methods
This commit is contained in:
Hypolite Petovan 2019-04-15 01:04:02 -04:00
parent 488e425416
commit 9227aab837

View file

@ -34,6 +34,11 @@ class Theme
return $allowed_themes; return $allowed_themes;
} }
public static function setAllowedList(array $allowed_themes)
{
Config::set('system', 'allowed_themes', implode(',', $allowed_themes));
}
/** /**
* @brief Parse theme comment in search of theme infos. * @brief Parse theme comment in search of theme infos.
* *
@ -133,13 +138,20 @@ class Theme
// silently fail if theme was removed or if $theme is funky // silently fail if theme was removed or if $theme is funky
if (file_exists("view/theme/$theme/theme.php")) { if (file_exists("view/theme/$theme/theme.php")) {
Logger::log("Addons: uninstalling theme " . $theme); include_once "view/theme/$theme/theme.php";
if (function_exists("{$theme}_uninstall")) {
$func = "{$theme}_uninstall"; $func = "{$theme}_uninstall";
if (function_exists($func)) {
$func(); $func();
} }
} }
$allowed_themes = Theme::getAllowedList();
$key = array_search($theme, $allowed_themes);
if ($key !== false) {
unset($allowed_themes[$key]);
Theme::setAllowedList($allowed_themes);
}
} }
public static function install($theme) public static function install($theme)
@ -151,16 +163,20 @@ class Theme
return false; return false;
} }
Logger::log("Addons: installing theme $theme"); try {
include_once "view/theme/$theme/theme.php"; include_once "view/theme/$theme/theme.php";
if (function_exists("{$theme}_install")) {
$func = "{$theme}_install"; $func = "{$theme}_install";
if (function_exists($func)) {
$func(); $func();
}
$allowed_themes = Theme::getAllowedList();
$allowed_themes[] = $theme;
Theme::setAllowedList($allowed_themes);
return true; return true;
} else { } catch (\Exception $e) {
Logger::log("Addons: FAILED installing theme $theme");
return false; return false;
} }
} }