3 namespace Drupal\fontyourface\Plugin\views\filter;
5 use Drupal\views\Plugin\views\filter\StringFilter;
6 use Drupal\Core\Form\FormStateInterface;
9 * Filter handler which allows to search based on font providers.
11 * @ingroup views_filter_handlers
13 * @ViewsFilter("fontyourface_font_pid")
15 class FontYourFaceProviderFilter extends StringFilter {
18 * Exposed filter options.
22 protected $alwaysMultiple = TRUE;
25 * Provide simple equality operator.
27 public function operators() {
30 'title' => $this->t('Is equal to'),
31 'short' => $this->t('='),
32 'method' => 'opEqual',
41 protected function valueForm(&$form, FormStateInterface $form_state) {
42 $options = ['All' => '- Any -'];
43 foreach (\Drupal::moduleHandler()->getImplementations('fontyourface_api') as $module_name) {
45 $module_info = \Drupal::moduleHandler()->invoke($module_name, 'fontyourface_api');
46 if ($module_info['name']) {
47 $name = $module_info['name'];
49 $options[$module_name] = $module_info['name'];
54 '#title' => $this->t('Font Provider'),
55 '#options' => $options,
56 '#default_value' => $this->value,
59 if ($exposed = $form_state->get('exposed')) {
60 $identifier = $this->options['expose']['identifier'];
61 $user_input = $form_state->getUserInput();
62 if (!isset($user_input[$identifier])) {
63 $user_input[$identifier] = $this->value;
64 $form_state->setUserInput($user_input);