FilterBase.php

Same filename and directory in other branches
  1. 9 core/modules/filter/src/Plugin/FilterBase.php
  2. 8.9.x core/modules/filter/src/Plugin/FilterBase.php
  3. 10 core/modules/filter/src/Plugin/FilterBase.php

Namespace

Drupal\filter\Plugin

File

core/modules/filter/src/Plugin/FilterBase.php

View source
<?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) {
    }

}

Classes

Title Deprecated Summary
FilterBase Provides a base class for Filter plugins.

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