diff --git a/admin/includes/settings_menus.php b/admin/includes/settings_menus.php new file mode 100644 index 00000000..2ce784fc --- /dev/null +++ b/admin/includes/settings_menus.php @@ -0,0 +1,35 @@ + 'MyAAC', + 'link' => 'settings&plugin=core', + 'icon' => 'list', + 'order' => $order, +]; + +foreach (Plugins::getAllPluginsSettings() as $setting) { + $file = BASE . $setting['settingsFilename']; + if (!file_exists($file)) { + warning('Plugin setting: ' . $file . ' - cannot be loaded.'); + continue; + } + + $order += 10; + + $settings = require $file; + + $settingsMenu[] = [ + 'name' => $settings['name'], + 'link' => 'settings&plugin=' . $setting['pluginFilename'], + 'icon' => 'list', + 'order' => $order, + ]; +} + +unset($settings, $file, $order); + +return $settingsMenu; diff --git a/system/libs/plugins.php b/system/libs/plugins.php index 99565f9c..a14b6c51 100644 --- a/system/libs/plugins.php +++ b/system/libs/plugins.php @@ -284,6 +284,12 @@ class Plugins { return false; } + $pluginFilename = str_replace('.json', '', basename($json_file)); + if (self::existDisabled($pluginFilename)) { + success('The plugin already existed, but was disabled. It has been enabled again and will be now reinstalled.'); + self::enable($pluginFilename); + } + $string = file_get_contents($file_name); $plugin_json = json_decode($string, true); self::$plugin_json = $plugin_json; @@ -484,13 +490,23 @@ class Plugins { return false; } - public static function enable($pluginFileName): bool + public static function isEnabled($pluginFileName): bool { + $filenameJson = $pluginFileName . '.json'; + return !is_file(PLUGINS . 'disabled.' . $filenameJson) && is_file(PLUGINS . $filenameJson); + } + + public static function existDisabled($pluginFileName): bool + { + $filenameJson = $pluginFileName . '.json'; + return is_file(PLUGINS . 'disabled.' . $filenameJson); + } + + public static function enable($pluginFileName): bool { return self::enableDisable($pluginFileName, true); } - public static function disable($pluginFileName): bool - { + public static function disable($pluginFileName): bool { return self::enableDisable($pluginFileName, false); }