function _ckeditor_get_enabled_plugins

Gets all enabled CKEditor 4 plugins.

@internal

Parameters

\Drupal\editor\EditorInterface $editor: A text editor config entity configured to use CKEditor 4.

Return value

string[] The enabled CKEditor 4 plugin IDs.

3 calls to _ckeditor_get_enabled_plugins()
CKEditor::submitConfigurationForm in core/modules/ckeditor/src/Plugin/Editor/CKEditor.php
Form submission handler.
ckeditor_editor_presave in core/modules/ckeditor/ckeditor.module
Implements hook_ENTITY_TYPE_presave().
ckeditor_post_update_omit_settings_for_disabled_plugins in core/modules/ckeditor/ckeditor.post_update.php
Updates Text Editors using CKEditor 4 to omit settings for disabled plugins.

File

core/modules/ckeditor/ckeditor.module, line 139

Code

function _ckeditor_get_enabled_plugins(EditorInterface $editor) : array {
  assert($editor->getEditor() === 'ckeditor');
  $cke4_plugin_manager = \Drupal::service('plugin.manager.ckeditor.plugin');
  // This is largely copied from the CKEditor 4 plugin manager, because it
  // unfortunately does not provide the API this needs.
  // @see \Drupal\ckeditor\CKEditorPluginManager::getEnabledPluginFiles()
  $plugins = array_keys($cke4_plugin_manager->getDefinitions());
  $toolbar_buttons = $cke4_plugin_manager->getEnabledButtons($editor);
  $enabled_plugins = [];
  $additional_plugins = [];
  foreach ($plugins as $plugin_id) {
    $plugin = $cke4_plugin_manager->createInstance($plugin_id);
    $enabled = FALSE;
    // Plugin is enabled if it provides a button that has been enabled.
    if ($plugin instanceof CKEditorPluginButtonsInterface) {
      $plugin_buttons = array_keys($plugin->getButtons());
      $enabled = count(array_intersect($toolbar_buttons, $plugin_buttons)) > 0;
    }
    // Otherwise plugin is enabled if it declares itself as enabled.
    if (!$enabled && $plugin instanceof CKEditorPluginContextualInterface) {
      $enabled = $plugin->isEnabled($editor);
    }
    if ($enabled) {
      $enabled_plugins[$plugin_id] = $plugin_id;
      // Check if this plugin has dependencies that should be considered
      // enabled.
      $additional_plugins = array_merge($additional_plugins, array_diff($plugin->getDependencies($editor), $additional_plugins));
    }
  }
  // Add the list of dependent plugins.
  foreach ($additional_plugins as $plugin_id) {
    $enabled_plugins[$plugin_id] = $plugin_id;
  }
  return $enabled_plugins;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.