<?php namespace Drupal\pos_entity_applicant\Plugin\views\filter; use Drupal\Core\Form\FormStateInterface; use Drupal\views\Plugin\views\filter\FilterPluginBase; use Symfony\Contracts\Translation\TranslatorTrait; /** * Class ProgramCoordinatorFilter * * @ingroup views_filter_handlers * * @ViewsFilter("applicant_cfp") */ class ApplicantCfpFilter extends FilterPluginBase { use TranslatorTrait; /** * {@inheritDoc} */ public function acceptExposedInput($input) { return TRUE; } public function buildExposedForm(&$form, FormStateInterface $form_state) { if (empty($this->options['exposed'])) { return; } $identifier = $this->options['expose']['identifier']; $exposed_input = $this->view->getExposedInput(); $form[$identifier] = [ '#type' => 'select', '#title' => $this->t('Da li aplikant ima konkurs?'), '#options' => [ NULL => $this->t('- Any -'), 'yes' => $this->t('Da'), 'no' => $this->t('Ne'), ], '#default_value' => $exposed_input, '#validated' => TRUE, ]; return $form; } public function query() { $this->ensureMyTable(); /** @var \Drupal\views\Plugin\views\query\Sql $query */ $query = $this->query; $input = $this->view->getExposedInput(); if (isset($input['applicant_cfp']) && !empty($input['applicant_cfp'])) { $input['applicant_cfp'] === 'yes' ? $query->addWhereExpression(0,"users_field_data.uid IN (SELECT DISTINCT user_id FROM users_field_data JOIN cfp ON cfp.user_id)") : $query->addWhereExpression(0,"users_field_data.uid NOT IN (SELECT DISTINCT user_id FROM users_field_data JOIN cfp ON cfp.user_id)"); } } }
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter