From 0b3d856bc42ab9372e25eae799ea50beb4cf1c0e Mon Sep 17 00:00:00 2001 From: Rudolf Byker Date: Thu, 15 Apr 2021 09:32:30 +0200 Subject: [PATCH] Bug 21105: oai.pl returns invalid earliestDatestamp For OAI-PMH, all date and time values must be in the format "YYYY-MM-DDThh:mm:ssZ" and in UTC. Currently, Identify.earliestDatestamp uses the SQL format "YYYY-MM-DD hh:mm:ss". This patch fixes that. To test: 1) Get a Koha instance with OAI-PMH enabled. 2) Visit /cgi-bin/koha/oai.pl?verb=Identify, view source for the page and observe that earliestDate is in the wrong format "YYYY-MM-DD hh:mm:ss" 3) Apply patch 4) Visit /cgi-bin/koha/oai.pl?verb=Identify, view the source for the page and observe that earliestDate is now in the correct format "YYYY-MM-DDThh:mm:ssZ" 5) Sign off Sponsored-by: Reformational Study Centre Signed-off-by: David Nind Signed-off-by: Tomas Cohen Arazi Signed-off-by: Jonathan Druart --- Koha/OAI/Server/Identify.pm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Koha/OAI/Server/Identify.pm b/Koha/OAI/Server/Identify.pm index dc1a53086a..7afccef737 100644 --- a/Koha/OAI/Server/Identify.pm +++ b/Koha/OAI/Server/Identify.pm @@ -54,7 +54,13 @@ sub new { # will be returned and we will report the fallback 0001-01-01. sub _get_earliest_datestamp { my $dbh = C4::Context->dbh; - my ( $earliest ) = $dbh->selectrow_array("SELECT MIN(timestamp) AS earliest FROM biblio" ); + # We do not need to perform timezone conversion here, because the time zone + # is set to UTC for the entire SQL session in Koha/OAI/Server/Repository.pm + my $query = q{ + SELECT DATE_FORMAT(MIN(timestamp), '%Y-%m-%dT%H:%i:%SZ') AS earliest + FROM biblio + }; + my ( $earliest ) = $dbh->selectrow_array($query); return $earliest } -- 2.39.5