aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2009-08-19 14:48:06 +0200
committerdakkar <dakkar@thenautilus.net>2009-08-19 14:48:06 +0200
commit1c2a217adde4b00daa9bc2cb9f82f6336912ad1d (patch)
tree3337f09fc23cb9effaf6b844b393866241a7a752
parentexport changes to XSLT (diff)
downloadWebCoso-1c2a217adde4b00daa9bc2cb9f82f6336912ad1d.tar.gz
WebCoso-1c2a217adde4b00daa9bc2cb9f82f6336912ad1d.tar.bz2
WebCoso-1c2a217adde4b00daa9bc2cb9f82f6336912ad1d.zip
fixed "last modified" date
it has to be taken from the earliest source file, not from the .du.xml
-rw-r--r--lib/WebCoso/Common.pm28
1 files 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=(