aboutsummaryrefslogtreecommitdiff
path: root/lib/WebCoso/Common.pm
diff options
context:
space:
mode:
authordakkar <dakkar@luxion>2008-03-01 09:37:45 +0000
committerdakkar <dakkar@luxion>2008-03-01 09:37:45 +0000
commitd28bac7032a0d95fffbba01ad7eaa6a85fd7be16 (patch)
tree7187deed6d9143a8fc0168eaed3edc57ebe60917 /lib/WebCoso/Common.pm
parentrefactoring: cleaner (diff)
downloadWebCoso-d28bac7032a0d95fffbba01ad7eaa6a85fd7be16.tar.gz
WebCoso-d28bac7032a0d95fffbba01ad7eaa6a85fd7be16.tar.bz2
WebCoso-d28bac7032a0d95fffbba01ad7eaa6a85fd7be16.zip
aggiunto supporto date (data creazione deve essere scritta nel documento)
git-svn-id: svn://luxion/repos/WebCoso/trunk@330 fcb26f47-9200-0410-b104-b98ab5b095f3
Diffstat (limited to 'lib/WebCoso/Common.pm')
-rw-r--r--lib/WebCoso/Common.pm53
1 files changed, 53 insertions, 0 deletions
diff --git a/lib/WebCoso/Common.pm b/lib/WebCoso/Common.pm
index 6dbeeae..0a0effe 100644
--- a/lib/WebCoso/Common.pm
+++ b/lib/WebCoso/Common.pm
@@ -4,6 +4,8 @@ use warnings;
use File::Next;
use Path::Class;
use XML::LibXML::XPathContext;
+use DateTime;
+use DateTime::Format::DateParse;
our $SRCPATH='src';
our $DSTPATH='dst';
@@ -78,6 +80,57 @@ sub getTitleFor {
return $title;
}
+{
+ my $zero=DateTime->from_epoch(epoch=>0);
+sub getDatesFor {
+ my ($fc,$lang,$path,$name)=@_;
+
+ my $doc_name=$name;
+ $doc_name=~s{\.html$}{.du.xml};
+ $doc_name=~s{/$}{/document.$lang.du.xml};
+ if ($doc_name=~m{^\Q$DSTBASEURL\E}) {
+ $doc_name=~s{^\Q$DSTBASEURL\E}{$SRCPATH/};
+ }
+ else {
+ $doc_name=file($doc_name)->absolute(file($path)->parent)->relative($SRCPATH); # absolutize it
+ $doc_name="$SRCPATH/$doc_name";
+ }
+ warn "getDatesFor($lang,$path,$name)->$doc_name\n";
+
+ my $doc=$fc->get($doc_name);
+ unless ($doc) {
+ warn "No document for <$doc_name>, returning <0>\n";
+ return {creation=>$zero,last_change=>$zero};
+ }
+ my ($creation_date)=map {$_->textContent}
+ $xpath->findnodes(
+ 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);
+ return {creation=>$creation_date,
+ last_change=>$last_change};
+}
+}
+
+sub getDates {
+ my ($fc,@docs)=@_;
+
+ my %dates;
+ for my $doc_name (@docs) {
+ my $doc=$fc->get($doc_name);
+ my ($creation_date)=map {$_->textContent}
+ $xpath->findnodes(
+ q{/document/docinfo/field[field_name='CreationDate']/field_body},
+ $doc);
+ $creation_date=DateTime::Format::DateParse->parse_datetime($creation_date);
+ my $last_change=DateTime->from_epoch($doc->stat->mtime);
+ $dates{$doc_name}={creation=>$creation_date,
+ last_change=>$last_change};
+ }
+ return \%dates;
+}
+
sub getTags {
my ($fc,@docs)=@_;