aboutsummaryrefslogtreecommitdiff
path: root/lib/FeedParser.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/FeedParser.php')
-rw-r--r--lib/FeedParser.php12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/FeedParser.php b/lib/FeedParser.php
index 0ad90965..3b133b85 100644
--- a/lib/FeedParser.php
+++ b/lib/FeedParser.php
@@ -174,7 +174,7 @@ final class FeedParser
}
foreach ($namespaces as $namespaceName => $namespaceUrl) {
- if (in_array($namespaceName, ['', 'content', 'media'])) {
+ if (in_array($namespaceName, ['', 'content'])) {
continue;
}
$item[$namespaceName] = $this->parseModule($feedItem, $namespaceName, $namespaceUrl);
@@ -250,11 +250,17 @@ final class FeedParser
private function parseModule(\SimpleXMLElement $element, string $namespaceName, string $namespaceUrl): array
{
+ // Unfortunately this parses out only node values as string
+ // TODO: parse attributes too
+
$result = [];
$module = $element->children($namespaceUrl);
foreach ($module as $name => $value) {
- // todo: add custom parsing if it's something other than a string
- $result[$name] = (string) $value;
+ if (get_class($value) === 'SimpleXMLElement' && $value->count() !== 0) {
+ $result[$name] = $this->parseModule($value, $namespaceName, $namespaceUrl);
+ } else {
+ $result[$name] = (string) $value;
+ }
}
return $result;
}