. namespace editor_tiny; use context; /** * Tiny Editor Plugin class. * * This class must be implemented by any Moodle plugin adding TinyMCE features. * * It should optionally implement the following interfaces: * - plugin_with_buttons: to add buttons to the TinyMCE toolbar * - plugin_with_menuitems * - plugin_with_configuration: to add configuration to the TinyMCE editor * * @package editor_tiny * @copyright 2021 Andrew Lyons * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ abstract class plugin { /** * Whether the plugin is enabled * * @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 $editor The editor instance in which the plugin is initialised * @return boolean */ public static function is_enabled( context $context, array $options, array $fpoptions, ?editor $editor = null ): bool { return true; } /** * Get the plugin information for the plugin. * * @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 $editor The editor instance in which the plugin is initialised * @return array */ final public static function get_plugin_info( context $context, array $options, array $fpoptions, ?editor $editor = null ): array { $plugindata = []; if (is_a(static::class, plugin_with_buttons::class, true)) { $plugindata['buttons'] = static::get_available_buttons(); } if (is_a(static::class, plugin_with_menuitems::class, true)) { $plugindata['menuitems'] = static::get_available_menuitems(); } if (is_a(static::class, plugin_with_configuration::class, true)) { $plugindata['config'] = static::get_plugin_configuration_for_context($context, $options, $fpoptions, $editor); } return $plugindata; } }