From 1c2a217adde4b00daa9bc2cb9f82f6336912ad1d Mon Sep 17 00:00:00 2001 From: dakkar Date: Wed, 19 Aug 2009 14:48:06 +0200 Subject: fixed "last modified" date it has to be taken from the earliest source file, not from the .du.xml --- lib/WebCoso/Common.pm | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/lib/WebCoso/Common.pm b/lib/WebCoso/Common.pm index f8d64fa..ee92c73 100644 --- a/lib/WebCoso/Common.pm +++ b/lib/WebCoso/Common.pm @@ -160,7 +160,9 @@ sub getDatesFor { q{/document/docinfo/field[field_name='CreationDate']/field_body}, $doc); $creation_date=DateTime::Format::DateParse->parse_datetime($creation_date)||$zero; - my $last_change=DateTime->from_epoch(epoch=>$fc->stat($doc_name)->mtime); + + my $earliest_name=earliestFor($lang,$path,$name); + my $last_change=DateTime->from_epoch(epoch=>$fc->stat($earliest_name)->mtime); return {creation=>$creation_date, last_change=>$last_change}; } @@ -197,8 +199,9 @@ sub getDates { q{/document/docinfo/field[field_name='CreationDate']/field_body}, $doc); $creation_date=DateTime::Format::DateParse->parse_datetime($creation_date); + my $earliest_name=earliestFor(langOf($doc_name),$doc_name,'./'); my $last_change=DateTime->from_epoch(epoch=> - $fc->stat($doc_name)->mtime); + $fc->stat($earliest_name)->mtime); $dates{$doc_name}={creation=>$creation_date, last_change=>$last_change}; } @@ -277,6 +280,27 @@ sub keepEarliest { } return uniq(@ret); } + +sub earliestFor { + my ($lang,$path,$name)=@_; + + my $doc_name="$name"; # force it to a string, since it might be an XML Node + $doc_name=~s{\.[^/]+$}{.du.xml}; + $doc_name=~s{/$}{/document.$lang.}; + if ($doc_name=~m{^\Q$DSTBASEURL\E}) { + $doc_name=~s{^\Q$DSTBASEURL\E}{$SRCPATH/}; + } + else { + $doc_name=file($doc_name)->absolute(file($path)->parent)->cleanup->stringify; + $doc_name=~ s{/(?:[^/]+)/\.\.}{}g; + } + + for my $ext (sort { $order{$a} <=> $order{$b} } keys %order) { + return "$doc_name$ext" if -e "$doc_name$ext"; + } + + return; +} } our %docfiles=( -- cgit v1.2.3