-<?php\r
-\r
-namespace Friendica\Module\Admin\Themes;\r
-\r
-use Friendica\Content\Text\Markdown;\r
-use Friendica\Core\Config;\r
-use Friendica\Core\L10n;\r
-use Friendica\Core\Renderer;\r
-use Friendica\Core\System;\r
-use Friendica\Core\Theme;\r
-use Friendica\Module\BaseAdminModule;\r
-use Friendica\Util\Strings;\r
-\r
-class Index extends BaseAdminModule\r
-{\r
- public static function content()\r
- {\r
- parent::content();\r
-\r
- $a = self::getApp();\r
-\r
- $allowed_themes = Theme::getAllowedList();\r
-\r
- // reload active themes\r
- if (!empty($_GET['action'])) {\r
- parent::checkFormSecurityTokenRedirectOnError(System::baseUrl() . '/admin/themes', 'admin_themes', 't');\r
-\r
- switch ($_GET['action']) {\r
- case 'reload':\r
- foreach ($allowed_themes as $theme) {\r
- Theme::uninstall($theme['name']);\r
- Theme::install($theme['name']);\r
- }\r
-\r
- info('Themes reloaded');\r
- break;\r
-\r
- case 'toggle' :\r
- $theme = defaults($_GET, 'addon', '');\r
- if ($theme) {\r
- $theme = Strings::sanitizeFilePathItem($theme);\r
- if (!is_dir("view/theme/$theme")) {\r
- notice(L10n::t('Item not found.'));\r
- return '';\r
- }\r
-\r
- if (in_array($theme, Theme::getAllowedList())) {\r
- Theme::uninstall($theme);\r
- info(L10n::t('Theme %s disabled.', $theme));\r
- } elseif (Theme::install($theme)) {\r
- info(L10n::t('Theme %s successfully enabled.', $theme));\r
- } else {\r
- info(L10n::t('Theme %s failed to install.', $theme));\r
- }\r
- }\r
-\r
- break;\r
-\r
- }\r
-\r
- $a->internalRedirect('admin/themes');\r
- }\r
-\r
- $themes = [];\r
- $files = glob('view/theme/*');\r
- if (is_array($files)) {\r
- foreach ($files as $file) {\r
- $theme = basename($file);\r
-\r
- // Is there a style file?\r
- $theme_files = glob('view/theme/' . $theme . '/style.*');\r
-\r
- // If not then quit\r
- if (count($theme_files) == 0) {\r
- continue;\r
- }\r
-\r
- $is_experimental = intval(file_exists($file . '/experimental'));\r
- $is_supported = 1 - (intval(file_exists($file . '/unsupported')));\r
- $is_allowed = intval(in_array($theme, $allowed_themes));\r
-\r
- if ($is_allowed || $is_supported || Config::get('system', 'show_unsupported_themes')) {\r
- $themes[] = ['name' => $theme, 'experimental' => $is_experimental, 'supported' => $is_supported, 'allowed' => $is_allowed];\r
- }\r
- }\r
- }\r
-\r
- $addons = [];\r
- foreach ($themes as $theme) {\r
- $addons[] = [$theme['name'], (($theme['allowed']) ? 'on' : 'off'), Theme::getInfo($theme['name'])];\r
- }\r
-\r
- $t = Renderer::getMarkupTemplate('admin/addons/index.tpl');\r
- return Renderer::replaceMacros($t, [\r
- '$title' => L10n::t('Administration'),\r
- '$page' => L10n::t('Themes'),\r
- '$submit' => L10n::t('Save Settings'),\r
- '$reload' => L10n::t('Reload active themes'),\r
- '$baseurl' => System::baseUrl(true),\r
- '$function' => 'themes',\r
- '$addons' => $addons,\r
- '$pcount' => count($themes),\r
- '$noplugshint' => L10n::t('No themes found on the system. They should be placed in %1$s', '<code>/view/themes</code>'),\r
- '$experimental' => L10n::t('[Experimental]'),\r
- '$unsupported' => L10n::t('[Unsupported]'),\r
- '$form_security_token' => parent::getFormSecurityToken('admin_themes'),\r
- ]);\r
- }\r
-}
\ No newline at end of file
+<?php
+/**
+ * @copyright Copyright (C) 2020, Friendica
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Module\Admin\Themes;
+
+use Friendica\Core\Renderer;
+use Friendica\Core\Theme;
+use Friendica\DI;
+use Friendica\Module\BaseAdmin;
+use Friendica\Util\Strings;
+
+class Index extends BaseAdmin
+{
+ public static function content(array $parameters = [])
+ {
+ parent::content($parameters);
+
+ $allowed_themes = Theme::getAllowedList();
+
+ // reload active themes
+ if (!empty($_GET['action'])) {
+ self::checkFormSecurityTokenRedirectOnError(DI::baseUrl()->get() . '/admin/themes', 'admin_themes', 't');
+
+ switch ($_GET['action']) {
+ case 'reload':
+ $allowed_themes = array_unique($allowed_themes);
+ foreach ($allowed_themes as $theme) {
+ Theme::uninstall($theme);
+ Theme::install($theme);
+ }
+ Theme::setAllowedList($allowed_themes);
+
+ info(DI::l10n()->t('Themes reloaded'));
+ break;
+
+ case 'toggle' :
+ $theme = $_GET['addon'] ?? '';
+ if ($theme) {
+ $theme = Strings::sanitizeFilePathItem($theme);
+ if (!is_dir("view/theme/$theme")) {
+ notice(DI::l10n()->t('Item not found.'));
+ return '';
+ }
+
+ if (in_array($theme, Theme::getAllowedList())) {
+ Theme::uninstall($theme);
+ info(DI::l10n()->t('Theme %s disabled.', $theme));
+ } elseif (Theme::install($theme)) {
+ info(DI::l10n()->t('Theme %s successfully enabled.', $theme));
+ } else {
+ notice(DI::l10n()->t('Theme %s failed to install.', $theme));
+ }
+ }
+
+ break;
+
+ }
+
+ DI::baseUrl()->redirect('admin/themes');
+ }
+
+ $themes = [];
+ $files = glob('view/theme/*');
+ if (is_array($files)) {
+ foreach ($files as $file) {
+ $theme = basename($file);
+
+ // Is there a style file?
+ $theme_files = glob('view/theme/' . $theme . '/style.*');
+
+ // If not then quit
+ if (count($theme_files) == 0) {
+ continue;
+ }
+
+ $is_experimental = intval(file_exists($file . '/experimental'));
+ $is_supported = 1 - (intval(file_exists($file . '/unsupported')));
+ $is_allowed = intval(in_array($theme, $allowed_themes));
+
+ if ($is_allowed || $is_supported || DI::config()->get('system', 'show_unsupported_themes')) {
+ $themes[] = ['name' => $theme, 'experimental' => $is_experimental, 'supported' => $is_supported, 'allowed' => $is_allowed];
+ }
+ }
+ }
+
+ $addons = [];
+ foreach ($themes as $theme) {
+ $addons[] = [$theme['name'], (($theme['allowed']) ? 'on' : 'off'), Theme::getInfo($theme['name'])];
+ }
+
+ $t = Renderer::getMarkupTemplate('admin/addons/index.tpl');
+ return Renderer::replaceMacros($t, [
+ '$title' => DI::l10n()->t('Administration'),
+ '$page' => DI::l10n()->t('Themes'),
+ '$submit' => DI::l10n()->t('Save Settings'),
+ '$reload' => DI::l10n()->t('Reload active themes'),
+ '$baseurl' => DI::baseUrl()->get(true),
+ '$function' => 'themes',
+ '$addons' => $addons,
+ '$pcount' => count($themes),
+ '$noplugshint' => DI::l10n()->t('No themes found on the system. They should be placed in %1$s', '<code>/view/themes</code>'),
+ '$experimental' => DI::l10n()->t('[Experimental]'),
+ '$unsupported' => DI::l10n()->t('[Unsupported]'),
+ '$form_security_token' => self::getFormSecurityToken('admin_themes'),
+ ]);
+ }
+}