use DOMDocument;
use DOMElement;
+use DOMNode;
use DOMXPath;
use Friendica\App;
use Friendica\Contact\LocalRelationship\Entity\LocalRelationship;
}
}
- if (empty($item['title'])) {
- $item['title'] = XML::getFirstNodeValue($xpath, $atomns . ':title/text()', $entry);
- }
-
- if (empty($item['title'])) {
- $item['title'] = XML::getFirstNodeValue($xpath, 'title/text()', $entry);
- }
-
- if (empty($item['title'])) {
- $item['title'] = XML::getFirstNodeValue($xpath, 'rss:title/text()', $entry);
- }
-
- if (empty($item['title'])) {
- $item['title'] = XML::getFirstNodeValue($xpath, 'itunes:title/text()', $entry);
- }
-
- $item['title'] = trim(html_entity_decode($item['title'], ENT_QUOTES, 'UTF-8'));
+ $item['title'] = static::getTitleFromItemOrEntry($item, $xpath, $atomns, $entry);
$published = XML::getFirstNodeValue($xpath, $atomns . ':published/text()', $entry);
return ['header' => $author, 'items' => $items];
}
+ private static function getTitleFromItemOrEntry(array $item, DOMXPath $xpath, string $atomns, ?DOMNode $entry): string
+ {
+ $title = (string) $item['title'];
+
+ if (empty($title)) {
+ $title = XML::getFirstNodeValue($xpath, $atomns . ':title/text()', $entry);
+ }
+
+ if (empty($title)) {
+ $title = XML::getFirstNodeValue($xpath, 'title/text()', $entry);
+ }
+
+ if (empty($title)) {
+ $title = XML::getFirstNodeValue($xpath, 'rss:title/text()', $entry);
+ }
+
+ if (empty($title)) {
+ $title = XML::getFirstNodeValue($xpath, 'itunes:title/text()', $entry);
+ }
+
+ $title = trim(html_entity_decode($title, ENT_QUOTES, 'UTF-8'));
+
+ return $title;
+ }
+
/**
* Return the hostname out of a variety of provided URL
*