aboutsummaryrefslogtreecommitdiff
path: root/app/Models/Feed.php
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2022-10-09 15:43:30 +0200
committerGravatar GitHub <noreply@github.com> 2022-10-09 15:43:30 +0200
commit648a876d77a7591eac6c4ad5f14b30988e18ce20 (patch)
tree5832c068fd7d4d0a1fa80096849dde18a25887d4 /app/Models/Feed.php
parent72265c1eca41424f761246abc5a7fe84fd8bc0f9 (diff)
Add support for custom XPath date/time format (#4703)
* Add support for custom XPath date/time format #fix https://github.com/FreshRSS/FreshRSS/issues/4701 Improvement of https://github.com/FreshRSS/FreshRSS/pull/4220 * Format is not XPath * Remove TODOs in en-GB
Diffstat (limited to 'app/Models/Feed.php')
-rw-r--r--app/Models/Feed.php7
1 files changed, 7 insertions, 0 deletions
diff --git a/app/Models/Feed.php b/app/Models/Feed.php
index a81f1c561..5efe55006 100644
--- a/app/Models/Feed.php
+++ b/app/Models/Feed.php
@@ -612,6 +612,7 @@ class FreshRSS_Feed extends Minz_Model {
$xPathItemUri = $xPathSettings['itemUri'] ?? '';
$xPathItemAuthor = $xPathSettings['itemAuthor'] ?? '';
$xPathItemTimestamp = $xPathSettings['itemTimestamp'] ?? '';
+ $xPathItemTimeFormat = $xPathSettings['itemTimeFormat'] ?? '';
$xPathItemThumbnail = $xPathSettings['itemThumbnail'] ?? '';
$xPathItemCategories = $xPathSettings['itemCategories'] ?? '';
$xPathItemUid = $xPathSettings['itemUid'] ?? '';
@@ -652,6 +653,12 @@ class FreshRSS_Feed extends Minz_Model {
$item['link'] = $xPathItemUri == '' ? '' : @$xpath->evaluate('normalize-space(' . $xPathItemUri . ')', $node);
$item['author'] = $xPathItemAuthor == '' ? '' : @$xpath->evaluate('normalize-space(' . $xPathItemAuthor . ')', $node);
$item['timestamp'] = $xPathItemTimestamp == '' ? '' : @$xpath->evaluate('normalize-space(' . $xPathItemTimestamp . ')', $node);
+ if ($xPathItemTimeFormat != '') {
+ $dateTime = DateTime::createFromFormat($xPathItemTimeFormat, $item['timestamp'] ?? '');
+ if ($dateTime != false) {
+ $item['timestamp'] = $dateTime->format(DateTime::ATOM);
+ }
+ }
$item['thumbnail'] = $xPathItemThumbnail == '' ? '' : @$xpath->evaluate('normalize-space(' . $xPathItemThumbnail . ')', $node);
if ($xPathItemCategories != '') {
$itemCategories = @$xpath->query($xPathItemCategories, $node);