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