From 205a42778dff04f1552e34ac2b7ade9e407ab1a0 Mon Sep 17 00:00:00 2001 From: VirtualTam Date: Wed, 17 Feb 2016 22:46:50 +0100 Subject: [PATCH] cleanup: use DateTime to format dates Closes #270 Modifications: - replace custom date parsing by DateTime calls - use proper date formatting for RSS feeds Deletions: - linkdate2timestamp() - linkdate2rfc822 - linkdate2iso8601 Signed-off-by: VirtualTam --- application/LinkDB.php | 3 ++ index.php | 65 ++++++++++++++++-------------------------- tpl/dailyrss.html | 4 +-- 3 files changed, 29 insertions(+), 43 deletions(-) diff --git a/application/LinkDB.php b/application/LinkDB.php index 9f4d3e3c..9488ac45 100644 --- a/application/LinkDB.php +++ b/application/LinkDB.php @@ -32,6 +32,9 @@ class LinkDB implements Iterator, Countable, ArrayAccess // Links are stored as a PHP serialized string private $_datastore; + // Link date storage format + const LINK_DATE_FORMAT = 'Ymd_His'; + // Datastore PHP prefix protected static $phpPrefix = ''.$link['title'].''.$guid.''.$guid.''; else echo ''.$link['title'].''.$guid.''.$absurl.''; - if (!$GLOBALS['config']['HIDE_TIMESTAMPS'] || isLoggedIn()) echo ''.escape($rfc822date)."\n"; + if (!$GLOBALS['config']['HIDE_TIMESTAMPS'] || isLoggedIn()) { + echo ''.escape($date->format(DateTime::RSS))."\n"; + } if ($link['tags']!='') // Adding tags to each RSS entry (as mentioned in RSS specification) { foreach(explode(' ',$link['tags']) as $tag) { echo ''.$tag.''."\n"; } @@ -857,8 +832,9 @@ function showATOM() { $link = $linksToDisplay[$keys[$i]]; $guid = $pageaddr.'?'.smallHash($link['linkdate']); - $iso8601date = linkdate2iso8601($link['linkdate']); - $latestDate = max($latestDate,$iso8601date); + $date = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $link['linkdate']); + $iso8601date = $date->format(DateTime::ISO8601); + $latestDate = max($latestDate, $iso8601date); $absurl = $link['url']; if (startsWith($absurl,'?')) $absurl=$pageaddr.$absurl; // make permalink URL absolute $entries.=''.$link['title'].''; @@ -866,7 +842,10 @@ function showATOM() $entries.=''.$guid.''; else $entries.=''.$guid.''; - if (!$GLOBALS['config']['HIDE_TIMESTAMPS'] || isLoggedIn()) $entries.=''.escape($iso8601date).''; + + if (!$GLOBALS['config']['HIDE_TIMESTAMPS'] || isLoggedIn()) { + $entries.=''.escape($iso8601date).''; + } // Add permalink in description $descriptionlink = '(Permalink)'; @@ -972,8 +951,7 @@ function showDailyRSS() { // For each day. foreach ($days as $day => $linkdates) { - $daydate = linkdate2timestamp($day.'_000000'); // Full text date - $rfc822date = linkdate2rfc822($day.'_000000'); + $dayDate = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $day.'_000000'); $absurl = escape(index_url($_SERVER).'?do=daily&day='.$day); // Absolute URL of the corresponding "Daily" page. // Build the HTML body of this RSS entry. @@ -986,7 +964,8 @@ function showDailyRSS() { $l = $LINKSDB[$linkdate]; $l['formatedDescription'] = format_description($l['description'], $GLOBALS['redirector']); $l['thumbnail'] = thumbnail($l['url']); - $l['timestamp'] = linkdate2timestamp($l['linkdate']); + $l_date = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $l['linkdate']); + $l['timestamp'] = $l_date->getTimestamp(); if (startsWith($l['url'], '?')) { $l['url'] = index_url($_SERVER) . $l['url']; // make permalink URL absolute } @@ -996,10 +975,10 @@ function showDailyRSS() { // Then build the HTML for this day: $tpl = new RainTPL; $tpl->assign('title', $GLOBALS['title']); - $tpl->assign('daydate', $daydate); + $tpl->assign('daydate', $dayDate->getTimestamp()); $tpl->assign('absurl', $absurl); $tpl->assign('links', $links); - $tpl->assign('rfc822date', escape($rfc822date)); + $tpl->assign('rssdate', escape($dayDate->format(DateTime::RSS))); $html = $tpl->draw('dailyrss', $return_string=true); echo $html . PHP_EOL; @@ -1055,7 +1034,8 @@ function showDaily($pageBuilder) $linksToDisplay[$key]['taglist']=$taglist; $linksToDisplay[$key]['formatedDescription'] = format_description($link['description'], $GLOBALS['redirector']); $linksToDisplay[$key]['thumbnail'] = thumbnail($link['url']); - $linksToDisplay[$key]['timestamp'] = linkdate2timestamp($link['linkdate']); + $date = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $link['linkdate']); + $linksToDisplay[$key]['timestamp'] = $date->getTimestamp(); } /* We need to spread the articles on 3 columns. @@ -1080,11 +1060,12 @@ function showDaily($pageBuilder) $fill[$index]+=$length; } + $dayDate = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $day.'_000000'); $data = array( 'linksToDisplay' => $linksToDisplay, 'linkcount' => count($LINKSDB), 'cols' => $columns, - 'day' => linkdate2timestamp($day.'_000000'), + 'day' => $dayDate->getTimestamp(), 'previousday' => $previousday, 'nextday' => $nextday, ); @@ -1799,7 +1780,8 @@ function renderPage() ($exportWhat=='private' && $link['private']!=0) || ($exportWhat=='public' && $link['private']==0)) { - echo '
'.$link['title']."\n"; if ($link['description']!='') echo '
'.$link['description']."\n"; @@ -2042,7 +2024,8 @@ function buildLinkList($PAGE,$LINKSDB) $link['description'] = format_description($link['description'], $GLOBALS['redirector']); $classLi = ($i % 2) != 0 ? '' : 'publicLinkHightLight'; $link['class'] = $link['private'] == 0 ? $classLi : 'private'; - $link['timestamp'] = linkdate2timestamp($link['linkdate']); + $date = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $link['linkdate']); + $link['timestamp'] = $date->getTimestamp(); $taglist = explode(' ', $link['tags']); uasort($taglist, 'strcasecmp'); $link['taglist'] = $taglist; diff --git a/tpl/dailyrss.html b/tpl/dailyrss.html index d959d6be..4133ca3e 100644 --- a/tpl/dailyrss.html +++ b/tpl/dailyrss.html @@ -2,7 +2,7 @@ {$title} - {function="strftime('%A %e %B %Y', $daydate)"} {$absurl} {$absurl} - {$rfc822date} + {$rssdate} {$value.title} @@ -13,4 +13,4 @@

{$value.title}




{/loop} ]]>
- \ No newline at end of file +