acquia_dam-1.0.0-rc1/src/Plugin/views/filter/DamAssetFilter.php
src/Plugin/views/filter/DamAssetFilter.php
<?php
namespace Drupal\acquia_dam\Plugin\views\filter;
use Drupal\Core\Form\FormStateInterface;
use Drupal\views\Plugin\views\filter\FilterPluginBase;
use Drupal\views\Views;
/**
* Filters DAM Asset in views.
*
* @ViewsFilter("dam_asset_filter")
*/
class DamAssetFilter extends FilterPluginBase {
/**
* {@inheritdoc}
*/
public function buildOptionsForm(&$form, FormStateInterface $form_state) {
$form['dam_asset'] = [
'#type' => 'markup',
'#markup' => $this->t('Applying this filter will only show Media entities from DAM.'),
];
}
/**
* {@inheritdoc}
*/
public function query() {
$this->ensureMyTable();
/** @var \Drupal\views\Plugin\views\query\Sql $query */
$query = $this->query;
$table = array_key_first($query->tables);
$configuration = [
'table' => 'media__acquia_dam_asset_id',
'field' => 'entity_id',
'left_table' => $table,
'left_field' => 'mid',
'operator' => '=',
];
/** @var \Drupal\views\Plugin\views\join\JoinPluginBase $join */
$join = Views::pluginManager('join')->createInstance('standard', $configuration);
$query->addRelationship('da', $join, 'media_field_data');
$query->addWhere($this->options['group'], 'da.entity_id', NULL, 'IS NOT NULL');
}
}
