diff --git a/modules/opd_podcast/opd_podcast.module b/modules/opd_podcast/opd_podcast.module index 9dbd953ce..494bd7b5f 100644 --- a/modules/opd_podcast/opd_podcast.module +++ b/modules/opd_podcast/opd_podcast.module @@ -5,7 +5,8 @@ declare(strict_types=1); use Drupal\Core\Render\BubbleableMetadata; use Drupal\Core\StringTranslation\TranslatableMarkup; use Drupal\node\NodeInterface; -use Drupal\opd_podcast\PodcastEpisode; +use Drupal\opd_podcast\Episode; +use Drupal\opd_podcast\Guest; /** * Implements hook_entity_bundle_info_alter(). @@ -14,7 +15,11 @@ use Drupal\opd_podcast\PodcastEpisode; */ function opd_podcast_entity_bundle_info_alter(array &$bundles): void { if (isset($bundles['node'])) { - $bundles['node'][PodcastEpisode::NODE_TYPE]['class'] = PodcastEpisode::class; + $bundles['node'][Episode::NODE_TYPE]['class'] = Episode::class; + } + + if (isset($bundles['taxonomy_term'])) { + $bundles['taxonomy_term'][Guest::TERM_TYPE]['class'] = Guest::class; } } @@ -23,7 +28,7 @@ function opd_podcast_entity_bundle_info_alter(array &$bundles): void { * @param array $context */ function opd_podcast_node_links_alter(array &$links, NodeInterface $entity, array &$context): void { - if (!$entity instanceof PodcastEpisode) { + if (!$entity instanceof Episode) { return; } @@ -83,7 +88,7 @@ function opd_podcast_tokens(string $type, array $tokens, array $data, array $opt switch ($name) { case 'guest-names': $node = $data['node'] ?? NULL; - assert($node instanceof PodcastEpisode); + assert($node instanceof Episode); $replacements[$original] = strval($node->getGuests()); break; diff --git a/modules/opd_podcast/src/Episode.php b/modules/opd_podcast/src/Episode.php new file mode 100644 index 000000000..dc4774ef5 --- /dev/null +++ b/modules/opd_podcast/src/Episode.php @@ -0,0 +1,18 @@ +get('field_podcast_guests')->referencedEntities()); + } + +} diff --git a/modules/opd_podcast/src/Guest.php b/modules/opd_podcast/src/Guest.php new file mode 100644 index 000000000..b41f21d8e --- /dev/null +++ b/modules/opd_podcast/src/Guest.php @@ -0,0 +1,14 @@ + + * @implements \IteratorAggregate */ -final class PodcastGuests implements \ArrayAccess, \Countable, \IteratorAggregate, \Stringable { +final class Guests implements \ArrayAccess, \Countable, \IteratorAggregate, \Stringable { /** - * @param TermInterface[] $guests + * @param Guest[] $guests */ private function __construct(private array $guests) { } @@ -44,16 +44,16 @@ final class PodcastGuests implements \ArrayAccess, \Countable, \IteratorAggregat public function __toString(): string { // TODO: allow for more than two guests. if (count($this->guests) === 2) { - assert($this->guests[1] instanceof TermInterface); + assert($this->guests[1] instanceof Guest); - return sprintf('%s %s %s', $this->guests[0]->label(), t('and'), $this->guests[1]->label()); + return sprintf('%s %s %s', $this->guests[0]->getName(), t('and'), $this->guests[1]->getName()); } - return strval($this->guests[0]->label()); + return strval($this->guests[0]->getName()); } /** - * @param TermInterface[] $guests + * @param Guest[] $guests */ public static function new(array $guests): self { return new self($guests); diff --git a/modules/opd_podcast/src/PodcastEpisode.php b/modules/opd_podcast/src/PodcastEpisode.php deleted file mode 100644 index 4ca0e0061..000000000 --- a/modules/opd_podcast/src/PodcastEpisode.php +++ /dev/null @@ -1,18 +0,0 @@ -get('field_podcast_guests')->referencedEntities()); - } - -}