getResponse(); $node = $this->getObject($response, 'node'); if ($node === FALSE) { return; } $links = array_merge( $this->generateEntityReferenceLinks($node), $this->generateRelatedMediaLinks($node), $this->generateRestLinks($node) ); // Add the link headers to the response. if (empty($links)) { return; } $response->headers->set('Link', $links, FALSE); } /** * Generates link headers for media associated with a node. */ protected function generateRelatedMediaLinks(NodeInterface $node) { $links = []; foreach ($this->utils->getMedia($node) as $media) { $url = $this->utils->getEntityUrl($media); foreach ($media->referencedEntities() as $term) { if ($term->getEntityTypeId() == 'taxonomy_term' && $term->hasField('field_external_uri')) { $field = $term->get('field_external_uri'); if (!$field->isEmpty()) { $link = $field->first()->getValue(); $uri = $link['uri']; if (strpos($uri, 'http://pcdm.org/use#') === 0) { $title = $term->label(); $links[] = "<$url>; rel=\"related\"; title=\"$title\""; } } } } } return $links; } }