get('field_external_link')->get(0)) ? $link->getValue() : NULL; } /** * @return Collection|Term[] */ public function getTags(): Collection { return new Collection($this->get('field_tags')->referencedEntities()); } public function hasBeenSentToSocialMedia(): bool { return (bool) $this->get('field_sent_to_social_media')->getString(); } public function hasTweet(): bool { return (bool) $this->get('field_has_tweet')->getString(); } public function isExternalPost(): bool { return (bool) $this->getExternalLink(); } public function setTags(array $tags): void { $this->set('field_tags', $tags); } public function toTweet(): string { $parts = [ $this->label(), $this->url('canonical', ['absolute' => TRUE]), $this->convertTermsToHashtags(), ]; return implode(PHP_EOL . PHP_EOL, $parts); } private function convertTermsToHashtags(): string { return $this->getTags() ->map(fn(Term $term) => $this->convertTermToHashtag($term)) ->implode(' '); } private function convertTermToHashtag(Term $tag): string { $tagName = strtolower($tag->label()); $tagName = "#{$tagName}"; $tagName = str_replace(' ', '-', $tagName); return $tagName; } }