From d28bac7032a0d95fffbba01ad7eaa6a85fd7be16 Mon Sep 17 00:00:00 2001 From: dakkar Date: Sat, 1 Mar 2008 09:37:45 +0000 Subject: aggiunto supporto date (data creazione deve essere scritta nel documento) git-svn-id: svn://luxion/repos/WebCoso/trunk@330 fcb26f47-9200-0410-b104-b98ab5b095f3 --- lib/WebCoso/Common.pm | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) (limited to 'lib/WebCoso/Common.pm') 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)=@_; -- cgit v1.2.3