protected function Acquiadam::prepareEntities in Media: Acquia DAM 8
1 call to Acquiadam::prepareEntities()
- Acquiadam::submit in src/Plugin/EntityBrowser/Widget/Acquiadam.php
File
- src/Plugin/EntityBrowser/Widget/Acquiadam.php, line 773
Class
- Acquiadam
- Uses a view to provide entity listing in a browser's widget.
Namespace
Drupal\media_acquiadam\Plugin\EntityBrowser\Widget
Code
protected function prepareEntities(array $form, FormStateInterface $form_state) {
$asset_ids = $form_state
->getValue('current_selections', []) + array_filter($form_state
->getValue('assets', []));
$media_type = $this->entityTypeManager
->getStorage('media_type')
->load($this->configuration['media_type']);
$source_field = $media_type
->getSource()
->getSourceFieldDefinition($media_type)
->getName();
$existing_ids = $this->entityTypeManager
->getStorage('media')
->getQuery()
->condition('bundle', $media_type
->id())
->condition($source_field, $asset_ids, 'IN')
->execute();
$entities = $this->entityTypeManager
->getStorage('media')
->loadMultiple($existing_ids);
foreach ($entities as $entity) {
$asset_id = $entity
->get($source_field)->value;
if (in_array($asset_id, $asset_ids)) {
unset($asset_ids[$asset_id]);
}
}
$assets = $this->acquiadam
->getAssetMultiple($asset_ids);
foreach ($assets as $asset) {
$entity_values = [
'bundle' => $media_type
->id(),
'uid' => $this->user
->id(),
'langcode' => $this->languageManager
->getCurrentLanguage()
->getId(),
'status' => $asset->status === 'active',
'name' => $asset->name,
$source_field => $asset->id,
];
$entity = $this->entityTypeManager
->getStorage('media')
->create($entity_values);
$entity
->save();
$entity = $this->entityTypeManager
->getStorage('media')
->load($entity
->id());
$entities[] = $entity;
}
return $entities;
}