--- /dev/null
+<?php
+
+namespace Drupal\filter\Plugin;
+
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Plugin\PluginBase;
+
+/**
+ * Provides a base class for Filter plugins.
+ *
+ * @see \Drupal\filter\Annotation\Filter
+ * @see \Drupal\filter\FilterPluginManager
+ * @see \Drupal\filter\Plugin\FilterInterface
+ * @see plugin_api
+ */
+abstract class FilterBase extends PluginBase implements FilterInterface {
+
+ /**
+ * The name of the provider that owns this filter.
+ *
+ * @var string
+ */
+ public $provider;
+
+ /**
+ * A Boolean indicating whether this filter is enabled.
+ *
+ * @var bool
+ */
+ public $status = FALSE;
+
+ /**
+ * The weight of this filter compared to others in a filter collection.
+ *
+ * @var int
+ */
+ public $weight = 0;
+
+ /**
+ * An associative array containing the configured settings of this filter.
+ *
+ * @var array
+ */
+ public $settings = [];
+
+ /**
+ * {@inheritdoc}
+ */
+ public function __construct(array $configuration, $plugin_id, $plugin_definition) {
+ parent::__construct($configuration, $plugin_id, $plugin_definition);
+
+ $this->provider = $this->pluginDefinition['provider'];
+
+ $this->setConfiguration($configuration);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setConfiguration(array $configuration) {
+ if (isset($configuration['status'])) {
+ $this->status = (bool) $configuration['status'];
+ }
+ if (isset($configuration['weight'])) {
+ $this->weight = (int) $configuration['weight'];
+ }
+ if (isset($configuration['settings'])) {
+ $this->settings = (array) $configuration['settings'];
+ }
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getConfiguration() {
+ return [
+ 'id' => $this->getPluginId(),
+ 'provider' => $this->pluginDefinition['provider'],
+ 'status' => $this->status,
+ 'weight' => $this->weight,
+ 'settings' => $this->settings,
+ ];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function defaultConfiguration() {
+ return [
+ 'provider' => $this->pluginDefinition['provider'],
+ 'status' => FALSE,
+ 'weight' => $this->pluginDefinition['weight'] ?: 0,
+ 'settings' => $this->pluginDefinition['settings'],
+ ];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function calculateDependencies() {
+ return [];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getType() {
+ return $this->pluginDefinition['type'];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getLabel() {
+ return $this->pluginDefinition['title'];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getDescription() {
+ return $this->pluginDefinition['description'];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function settingsForm(array $form, FormStateInterface $form_state) {
+ // Implementations should work with and return $form. Returning an empty
+ // array here allows the text format administration form to identify whether
+ // the filter plugin has any settings form elements.
+ return [];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function prepare($text, $langcode) {
+ return $text;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getHTMLRestrictions() {
+ return FALSE;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function tips($long = FALSE) {
+ }
+
+}