- $addons = Config::get('system', 'addon');
- if (strlen($addons)) {
- $r = dba::select('addon', [], ['installed' => 1]);
- if (DBM::is_result($r)) {
- $installed = dba::inArray($r);
- } else {
- $installed = [];
- }
-
- $addon_list = explode(',', $addons);
-
- if (count($addon_list)) {
- foreach ($addon_list as $addon) {
- $addon = trim($addon);
- $fname = 'addon/' . $addon . '/' . $addon . '.php';
-
- if (file_exists($fname)) {
- $t = @filemtime($fname);
- foreach ($installed as $i) {
- if (($i['name'] == $addon) && ($i['timestamp'] != $t)) {
- logger('Reloading addon: ' . $i['name']);
- @include_once($fname);
-
- if (function_exists($addon . '_uninstall')) {
- $func = $addon . '_uninstall';
- $func();
- }
- if (function_exists($addon . '_install')) {
- $func = $addon . '_install';
- $func();
- }
- dba::update('addon', ['timestamp' => $t], ['id' => $i['id']]);
- }
- }
+ $addons = [];
+ $files = glob('addon/*/');
+ if (is_array($files)) {
+ foreach ($files as $file) {
+ if (is_dir($file)) {
+ list($tmp, $addon) = array_map('trim', explode('/', $file));
+ $info = self::getInfo($addon);
+
+ if (DI::config()->get('system', 'show_unsupported_addons')
+ || strtolower($info['status']) != 'unsupported'
+ || self::isEnabled($addon)
+ ) {
+ $addons[] = [$addon, (self::isEnabled($addon) ? 'on' : 'off'), $info];