. namespace tiny_premium; use context; use editor_tiny\editor; use editor_tiny\plugin; use editor_tiny\plugin_with_configuration; use editor_tiny\plugin_with_configuration_for_external; use tiny_premium\manager; /** * Tiny Premium plugin. * * @package tiny_premium * @copyright 2023 David Woloszyn * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class plugininfo extends plugin implements plugin_with_configuration, plugin_with_configuration_for_external { #[\Override] public static function is_enabled( context $context, array $options, array $fpoptions, ?editor $editor = null ): bool { return has_capability('tiny/premium:use', $context) && (get_config('tiny_premium', 'apikey') != false); } /** * Get a list of enabled Tiny Premium plugins set by the admin. * * @param context $context The context that the editor is used within * @param array $options The options passed in when requesting the editor * @param array $fpoptions The filepicker options passed in when requesting the editor * @param editor|null $editor The editor instance in which the plugin is initialised * @return array */ public static function get_plugin_configuration_for_context( context $context, array $options, array $fpoptions, ?editor $editor = null ): array { $allowedplugins = []; foreach (manager::get_enabled_plugins() as $plugin) { if (has_capability("tiny/premium:use{$plugin}", $context)) { $allowedplugins[] = $plugin; } } return [ 'premiumplugins' => implode(',', $allowedplugins), ]; } #[\Override] public static function get_plugin_configuration_for_external(context $context): array { $settings = self::get_plugin_configuration_for_context($context, [], []); return [ 'premiumplugins' => $settings['premiumplugins'], ]; } }