diff --git a/modules/opd_podcast/opd_podcast.module b/modules/opd_podcast/opd_podcast.module index d2c13a990..101eca6ff 100644 --- a/modules/opd_podcast/opd_podcast.module +++ b/modules/opd_podcast/opd_podcast.module @@ -5,14 +5,26 @@ declare(strict_types=1); use Drupal\Core\Render\BubbleableMetadata; use Drupal\Core\StringTranslation\TranslatableMarkup; use Drupal\node\NodeInterface; +use Drupal\opd_podcast\Entity\PodcastEpisode; use Drupal\taxonomy\TermInterface; +/** + * Implements hook_entity_bundle_info_alter(). + * + * @param array $bundles + */ +function opd_podcast_entity_bundle_info_alter(array &$bundles): void { + if (isset($bundles['node'])) { + $bundles['node'][PodcastEpisode::NODE_TYPE]['class'] = PodcastEpisode::class; + } +} + /** * @param array> $links * @param array $context */ function opd_podcast_node_links_alter(array &$links, NodeInterface $entity, array &$context): void { - if ($entity->bundle() !== 'podcast_episode') { + if (!$entity instanceof PodcastEpisode) { return; } @@ -72,10 +84,9 @@ function opd_podcast_tokens(string $type, array $tokens, array $data, array $opt switch ($name) { case 'guest-names': $node = $data['node'] ?? NULL; - assert($node instanceof NodeInterface); - assert($node->hasField('field_podcast_guests')); + assert($node instanceof PodcastEpisode); - $guests = $node->get('field_podcast_guests')->referencedEntities(); + $guests = $node->getGuests(); assert(is_array($guests)); assert(!is_null($guests[0])); assert($guests[0] instanceof TermInterface); diff --git a/modules/opd_podcast/src/Entity/PodcastEpisode.php b/modules/opd_podcast/src/Entity/PodcastEpisode.php new file mode 100644 index 000000000..70026de7f --- /dev/null +++ b/modules/opd_podcast/src/Entity/PodcastEpisode.php @@ -0,0 +1,18 @@ +get('field_podcast_guests')->referencedEntities(); + } + +}