/** * Formats a response from EMDB to be themed into results. * * @param array $search_response * The response. * @param \Drupal\embridge\EnterMediaAssetHelper $asset_helper * A helper service. * @param string $catalog_id * An ID of the catalog to save against temp assets. * * @return array * A renderable array. */ private function formatSearchResults(array $search_response, EnterMediaAssetHelper $asset_helper, $catalog_id) { /** @var \Drupal\Core\Entity\EntityStorageInterface $storage */ $storage = $this->entityTypeManager->getStorage('embridge_catalog'); /** @var \Drupal\embridge\EmbridgeCatalogInterface $catalog */ $catalog = $storage->load($catalog_id); $application_id = $catalog->getApplicationId(); $render_array = []; foreach ($search_response['results'] as $result) { $asset = $asset_helper->searchResultToAsset($result, $catalog_id); $render_array[$asset->id()] = ['#theme' => 'embridge_image', '#asset' => $asset, '#conversion' => 'thumb', '#link_to' => '', '#application_id' => $application_id]; } return $render_array; }
/** * {@inheritdoc} */ public function deleteTemporaryAssets() { // TODO: Do we want our own config item? $age = $this->configFactory->get('system.file')->get('temporary_maximum_age'); if (!$age) { return; } $storage = $this->entityTypeManager->getStorage('embridge_asset_entity'); $query = $storage->getQuery(); $query->condition('status', FILE_STATUS_PERMANENT, '<>'); $query->condition('changed', time() - $age, '<'); $query->range(0, 50); $ids = $query->execute(); /** @var EmbridgeAssetEntityInterface[] $assets */ $assets = $storage->loadMultiple($ids); foreach ($assets as $asset) { $asset->delete(); $this->logger->notice('Embridge Asset "%filename" [%id] garbage collected during cron.', ['%filename' => $asset->getFilename(), '%id' => $asset->id()]); } }