protected function BynderSearch::prepareEntities in Bynder 8.2
Same name and namespace in other branches
- 8.3 src/Plugin/EntityBrowser/Widget/BynderSearch.php \Drupal\bynder\Plugin\EntityBrowser\Widget\BynderSearch::prepareEntities()
- 8 src/Plugin/EntityBrowser/Widget/BynderSearch.php \Drupal\bynder\Plugin\EntityBrowser\Widget\BynderSearch::prepareEntities()
- 4.0.x src/Plugin/EntityBrowser/Widget/BynderSearch.php \Drupal\bynder\Plugin\EntityBrowser\Widget\BynderSearch::prepareEntities()
1 call to BynderSearch::prepareEntities()
- BynderSearch::submit in src/
Plugin/ EntityBrowser/ Widget/ BynderSearch.php
File
- src/
Plugin/ EntityBrowser/ Widget/ BynderSearch.php, line 244
Class
- BynderSearch
- Uses a Bynder API to search and provide entity listing in a browser's widget.
Namespace
Drupal\bynder\Plugin\EntityBrowser\WidgetCode
protected function prepareEntities(array $form, FormStateInterface $form_state) {
if (!$this
->checkType()) {
return [];
}
$media = [];
$selected_ids = array_keys(array_filter($form_state
->getValue('selection', [])));
$media_list = $form_state
->get('bynder_media_list');
/** @var \Drupal\media\MediaTypeInterface $type */
$type = $this->entityTypeManager
->getStorage('media_type')
->load($this->configuration['media_type']);
$plugin = $type
->getSource();
$source_field = $plugin
->getConfiguration()['source_field'];
foreach ($selected_ids as $bynder_id) {
$mid = $this->entityTypeManager
->getStorage('media')
->getQuery()
->condition($source_field, $bynder_id)
->range(0, 1)
->execute();
if ($mid) {
$entity = $this->entityTypeManager
->getStorage('media')
->load(reset($mid));
}
else {
$entity = Media::create([
'bundle' => $type
->id(),
$source_field => $bynder_id,
]);
}
if (!empty($media_list['media'][$bynder_id])) {
$filtered_remote_metadata = $entity
->getSource()
->filterRemoteMetadata($media_list['media'][$bynder_id]);
$entity
->set(BynderMetadataItem::METADATA_FIELD_NAME, Json::encode($filtered_remote_metadata));
}
$media[] = $entity;
}
return $media;
}