acquia_dam-1.0.0-rc1/src/Plugin/views/MetadataFilterPluginTrait.php
src/Plugin/views/MetadataFilterPluginTrait.php
<?php
namespace Drupal\acquia_dam\Plugin\views;
use Drupal\acquia_dam\Client\AcquiaDamClient;
use Drupal\acquia_dam\Exception\DamClientException;
use Drupal\acquia_dam\Exception\DamConnectException;
use Drupal\acquia_dam\Exception\DamServerException;
/**
* Provides trait for creating metadata filter from the DAM.
*/
trait MetadataFilterPluginTrait {
/**
* Get the client interface.
*
* @return \Drupal\acquia_dam\Client\AcquiaDamClient
* Connection object.
*/
abstract public function getClient(): AcquiaDamClient;
/**
* Adds display_key to the plugin's options.
*
* @param array $options
* The options.
*/
protected function defineDisplayKeyOption(array &$options): void {
$options['display_key'] = ['default' => ''];
}
/**
* Fetches the appropriate display key from the DAM creates the option.
*
* @param array $form
* Option form.
* @param string $field_types
* Type of the field on which the display key will be fetched.
* @param string $display_key
* Display key option's default value.
*/
protected function buildDisplayKeyOption(array &$form, string $field_types, string $display_key = '') {
try {
/** @var array<string, mixed> $list */
$list = $this->getClient()->getDisplayKeys($field_types);
$display_keys = array_column($list['fields'], 'display_key');
$display_names = array_column($list['fields'], 'display_name');
$display_key_options = array_combine($display_keys, $display_names);
}
catch (DamClientException | DamServerException | DamConnectException $e) {
$display_key_options = [];
$this->messenger()->addError($e->getMessage());
}
$form['display_key'] = [
'#type' => 'select',
'#title' => $this->t('Display Keys'),
'#description' => $this->t('Available display keys from the metadata'),
'#options' => $display_key_options,
'#default_value' => $display_key,
'#required' => TRUE,
];
}
}
