public function Acquiadam::validate in Media: Acquia DAM 8
File
- src/Plugin/EntityBrowser/Widget/Acquiadam.php, line 697
Class
- Acquiadam
- Uses a view to provide entity listing in a browser's widget.
Namespace
Drupal\media_acquiadam\Plugin\EntityBrowser\Widget
Code
public function validate(array &$form, FormStateInterface $form_state) {
if (!empty($form_state
->getTriggeringElement()['#eb_widget_main_submit'])) {
$media_bundle = $this->entityTypeManager
->getStorage('media_type')
->load($this->configuration['media_type']);
$field_definitions = $this->entityFieldManager
->getFieldDefinitions('media', $media_bundle
->id());
$field_map = $media_bundle
->getFieldMap();
if (!isset($field_map['file'])) {
$message = $this
->t('Missing file mapping. Check your media configuration.');
$form_state
->setError($form['widget']['asset-container']['assets'], $message);
return;
}
$file_extensions = $field_definitions[$field_map['file']]
->getItemDefinition()
->getSetting('file_extensions');
$supported_extensions = explode(',', preg_replace('/,?\\s/', ',', $file_extensions));
$assets = array_filter($form_state
->getValue('assets'));
$dam_assets = $this->acquiadam
->getAssetMultiple($assets);
$field_cardinality = $form_state
->get([
'entity_browser',
'validators',
'cardinality',
'cardinality',
]);
if (!count($assets)) {
$form_state
->setError($form['widget']['asset-container'], $this
->t('Please select an asset.'));
}
if ($field_cardinality > 0 && count($assets) > $field_cardinality) {
$message = $this
->formatPlural($field_cardinality, 'You can not select more than 1 entity.', 'You can not select more than @count entities.');
$form_state
->setError($form['widget']['asset-container']['assets'], $message);
}
foreach ($dam_assets as $asset) {
$filetype = $asset->filetype;
$type_is_supported = in_array($filetype, $supported_extensions);
if (!$type_is_supported) {
$message = $this
->t('Please make another selection. The "@filetype" file type is not one of the supported file types (@supported_types).', [
'@filetype' => $filetype,
'@supported_types' => implode(', ', $supported_extensions),
]);
$form_state
->setError($form['widget']['asset-container']['assets'], $message);
}
}
}
}