]> git.mxchange.org Git - friendica.git/blob - src/Module/Admin/Addons/Details.php
parameters now are having a default value and are optional
[friendica.git] / src / Module / Admin / Addons / Details.php
1 <?php
2
3 namespace Friendica\Module\Admin\Addons;
4
5 use Friendica\Content\Text\Markdown;
6 use Friendica\Core\Addon;
7 use Friendica\Core\L10n;
8 use Friendica\Core\Renderer;
9 use Friendica\Module\BaseAdminModule;
10 use Friendica\Util\Strings;
11
12 class Details extends BaseAdminModule
13 {
14         public static function post(array $parameters = [])
15         {
16                 parent::post($parameters);
17
18                 $a = self::getApp();
19
20                 if ($a->argc > 2) {
21                         // @TODO: Replace with parameter from router
22                         $addon = $a->argv[2];
23                         $addon = Strings::sanitizeFilePathItem($addon);
24                         if (is_file('addon/' . $addon . '/' . $addon . '.php')) {
25                                 include_once 'addon/' . $addon . '/' . $addon . '.php';
26                                 if (function_exists($addon . '_addon_admin_post')) {
27                                         $func = $addon . '_addon_admin_post';
28                                         $func($a);
29                                 }
30
31                                 $a->internalRedirect('admin/addons/' . $addon);
32                         }
33                 }
34
35                 $a->internalRedirect('admin/addons');
36         }
37
38         public static function content(array $parameters = [])
39         {
40                 parent::content($parameters);
41
42                 $a = self::getApp();
43
44                 $addons_admin = Addon::getAdminList();
45
46                 if ($a->argc > 2) {
47                         // @TODO: Replace with parameter from router
48                         $addon = $a->argv[2];
49                         $addon = Strings::sanitizeFilePathItem($addon);
50                         if (!is_file("addon/$addon/$addon.php")) {
51                                 notice(L10n::t('Addon not found.'));
52                                 Addon::uninstall($addon);
53                                 $a->internalRedirect('admin/addons');
54                         }
55
56                         if (($_GET['action'] ?? '') == 'toggle') {
57                                 parent::checkFormSecurityTokenRedirectOnError('/admin/addons', 'admin_themes', 't');
58
59                                 // Toggle addon status
60                                 if (Addon::isEnabled($addon)) {
61                                         Addon::uninstall($addon);
62                                         info(L10n::t('Addon %s disabled.', $addon));
63                                 } else {
64                                         Addon::install($addon);
65                                         info(L10n::t('Addon %s enabled.', $addon));
66                                 }
67
68                                 Addon::saveEnabledList();
69
70                                 $a->internalRedirect('admin/addons/' . $addon);
71                         }
72
73                         // display addon details
74                         if (Addon::isEnabled($addon)) {
75                                 $status = 'on';
76                                 $action = L10n::t('Disable');
77                         } else {
78                                 $status = 'off';
79                                 $action = L10n::t('Enable');
80                         }
81
82                         $readme = null;
83                         if (is_file("addon/$addon/README.md")) {
84                                 $readme = Markdown::convert(file_get_contents("addon/$addon/README.md"), false);
85                         } elseif (is_file("addon/$addon/README")) {
86                                 $readme = '<pre>' . file_get_contents("addon/$addon/README") . '</pre>';
87                         }
88
89                         $admin_form = '';
90                         if (array_key_exists($addon, $addons_admin)) {
91                                 require_once "addon/$addon/$addon.php";
92                                 $func = $addon . '_addon_admin';
93                                 $func($a, $admin_form);
94                         }
95
96                         $t = Renderer::getMarkupTemplate('admin/addons/details.tpl');
97
98                         return Renderer::replaceMacros($t, [
99                                 '$title' => L10n::t('Administration'),
100                                 '$page' => L10n::t('Addons'),
101                                 '$toggle' => L10n::t('Toggle'),
102                                 '$settings' => L10n::t('Settings'),
103                                 '$baseurl' => $a->getBaseURL(true),
104
105                                 '$addon' => $addon,
106                                 '$status' => $status,
107                                 '$action' => $action,
108                                 '$info' => Addon::getInfo($addon),
109                                 '$str_author' => L10n::t('Author: '),
110                                 '$str_maintainer' => L10n::t('Maintainer: '),
111
112                                 '$admin_form' => $admin_form,
113                                 '$function' => 'addons',
114                                 '$screenshot' => '',
115                                 '$readme' => $readme,
116
117                                 '$form_security_token' => parent::getFormSecurityToken('admin_themes'),
118                         ]);
119                 }
120
121                 $a->internalRedirect('admin/addons');
122         }
123 }