[prev] [thread] [next] [lurker] [Date index for 2005/01/02]
Author: simon Date: 2005-01-02 08:57:23 +0000 (Sun, 02 Jan 2005) New Revision: 1782 Added: trunk/Email-Store/t/date-test trunk/Email-Store/t/date-test2 trunk/Email-Store/t/date.t Modified: trunk/Email-Store/Changes trunk/Email-Store/MANIFEST trunk/Email-Store/Makefile.PL trunk/Email-Store/lib/Email/Store.pm trunk/Email-Store/lib/Email/Store/Date.pm Log: Update Date stuff Modified: trunk/Email-Store/Changes =================================================================== --- trunk/Email-Store/Changes 2005-01-01 21:51:58 UTC (rev 1781) +++ trunk/Email-Store/Changes 2005-01-02 08:57:23 UTC (rev 1782) @@ -1,5 +1,11 @@ Revision history for Perl extension Email::Store. +0.16 Sun Dec 26 12:14:57 GMT 2004 + - Some changes to Date + - Require certain versions of Email::Simple and Email::MIME + - Update contact information + - Happy Boxing day + 0.15 Thu Jul 15 15:04:54 BST 2004 - After list order so that it gets does before summary gets to the mail @@ -52,6 +58,6 @@ - Connect addressings to mail 0.01 Tue May 18 13:26:10 2004 - - original version; created by h2xs 1.22 with options - -AX -b 5.6.0 -n Email::Store + - original version; created by h2xs 1.22 with options + -AX -b 5.6.0 -n Email::Store Modified: trunk/Email-Store/MANIFEST =================================================================== --- trunk/Email-Store/MANIFEST 2005-01-01 21:51:58 UTC (rev 1781) +++ trunk/Email-Store/MANIFEST 2005-01-02 08:57:23 UTC (rev 1782) @@ -3,11 +3,15 @@ mailman-test Makefile.PL MANIFEST +MANIFEST.SKIP README t/1.t t/2.t t/attach-test t/attach.t +t/date.t +t/date-test +t/date-test2 t/limit.t t/troublesome lib/Email/Store/Attachment.pm Modified: trunk/Email-Store/Makefile.PL =================================================================== --- trunk/Email-Store/Makefile.PL 2005-01-01 21:51:58 UTC (rev 1781) +++ trunk/Email-Store/Makefile.PL 2005-01-02 08:57:23 UTC (rev 1782) @@ -8,16 +8,16 @@ PREREQ_PM => { Module::Pluggable::Ordered => 1.0, Module::Pluggable => 1.4, - Email::Simple => 1.0, - Email::MIME => 0, + Email::Simple => 1.92, + Email::MIME => 1.8, DBD::SQLite => 0, Class::DBI => 0.9, Class::DBI::DATA::Schema => 0, - Mail::ListDetector => 0.30, - Email::MIME::Attachment::Stripper => 1.1, + Mail::ListDetector => 0.31, + Email::MIME::Attachment::Stripper => 1.3, Time::Piece => 0, File::Slurp => 0, - Email::Address => 0, + Email::Address => 1.80, SQL::Translator => 0, }, # e.g., Module::Name => 1.1 ); Modified: trunk/Email-Store/lib/Email/Store/Date.pm =================================================================== --- trunk/Email-Store/lib/Email/Store/Date.pm 2005-01-01 21:51:58 UTC (rev 1781) +++ trunk/Email-Store/lib/Email/Store/Date.pm 2005-01-02 08:57:23 UTC (rev 1782) @@ -4,7 +4,7 @@ use strict; use warnings; -our $VERSION = '1.0'; +our $VERSION = '1.1'; use Email::Store::DBI; use base 'Email::Store::DBI'; @@ -14,11 +14,11 @@ use Date::Parse; Email::Store::Date->table("mail_date"); -Email::Store::Date->columns(All => qw/mail date/); +Email::Store::Date->columns(All => qw/mail date year month day/); Email::Store::Date->columns(Primary => qw/mail/); Email::Store::Date->has_a( date => 'Time::Piece' ); Email::Store::Date->has_a( mail => "Email::Store::Mail" ); -Email::Store::Mail->might_have( mail_date => "Email::Store::Date" => 'date'); +Email::Store::Mail->might_have( mail_date => "Email::Store::Date" => qw(date year month day)); @@ -27,12 +27,15 @@ sub on_store { my ($self, $mail) = @_; my $simple = $mail->simple; - my $date = $simple->header('date') + + my $date = $simple->header('date') || _get_date_in_received_header($simple) || $simple->header('resent-date'); - my $time = str2time($date); - Email::Store::Date->create( { mail => $mail->id, date => $time } ); + my $time = str2time($date); + my $tp = Time::Piece->new($time); + Email::Store::Date->create( { mail => $mail->id, date => $time, year => $tp->year, month => $tp->mon, day => $tp->mday } ); + } sub _get_date_in_received_header { @@ -42,6 +45,7 @@ $date =~ s/.*;// and return $date; } + sub on_gather_plucene_fields_order { 80 } sub on_gather_plucene_fields { my ($self, $mail, $hash) = @_; @@ -63,10 +67,21 @@ And now: - print $mail->date->ymd,"\n"; + print $mail->date->ymd,"\n"; -=head1 DESCRIPTION +or + $mail->year; + $mail->month; + $mail->day; + +You can also search for all mails between two unix epochs + + # get all mails in the last day + my $time = time(); + my $day = 24*60*60; + Email::Store::Mail->search_between($time, $time-$day); + =head1 SEE ALSO L<Email::Store::Mail>, L<Time::Piece>. @@ -79,9 +94,23 @@ =cut + +Email::Store::Mail->set_sql(between => qq{ + SELECT mail.message_id + FROM mail_date, mail + WHERE mail.message_id = mail_date.mail AND + mail_date.date >= ? AND + mail_date.date <= ? + ORDER BY mail_date.date DESC +}); + + 1; __DATA__ CREATE TABLE IF NOT EXISTS mail_date ( mail varchar(255) NOT NULL PRIMARY KEY, - date int + date int, + year int, + month int, + day int ); Modified: trunk/Email-Store/lib/Email/Store.pm =================================================================== --- trunk/Email-Store/lib/Email/Store.pm 2005-01-01 21:51:58 UTC (rev 1781) +++ trunk/Email-Store/lib/Email/Store.pm 2005-01-02 08:57:23 UTC (rev 1782) @@ -44,7 +44,7 @@ } } -our $VERSION = '0.15'; +our $VERSION = '0.16'; # Preloaded methods go here. 1; @@ -146,7 +146,8 @@ =item C<Email::Store::Date> This adds the C<date> method to a C<mail> object, returning a C<Time::Piece> -representing the date of the email. +representing the date of the email. It also provides various searches for +mails between epoch times and for years, months and days. =item C<Email::Store::Entity> @@ -313,8 +314,17 @@ =head1 AUTHOR -Simon Cozens, E<lt>simon@xxxx.xxxx<gt> +The original author is Simon Cozens, E<lt>simon@xxxx.xxxx<gt> +Currently maintained by Simon Wistow <simon@xxxxxxxxxx.xxx> +=head1 SUPPORT + +This module is part of the Perl Email Project - http://pep.kwiki.org/ + +There is a mailing list at pep@xxxx.xxx (subscribe at pep-subscribe@xxxx.xxx) +and an archive available at http://nntp.perl.org/group/pep.php + + =head1 CREDITS Many of the ideas (although none of the code) for this package were Added: trunk/Email-Store/t/date-test =================================================================== --- trunk/Email-Store/t/date-test 2005-01-01 21:51:58 UTC (rev 1781) +++ trunk/Email-Store/t/date-test 2005-01-02 08:57:23 UTC (rev 1782) @@ -0,0 +1,9 @@ +From: Foo Bar <foo@xxx.xxx> +To: Me <simon@xxxxxxxx.xxx> +Subject: Test Mail +Message-ID: 20001128211546.A29664@xxx.xxx +Date: Fri, 18 Jun 2004 11:14:35 +0100 + +J0! + +Simon Property changes on: trunk/Email-Store/t/date-test ___________________________________________________________________ Name: svn:executable + * Added: trunk/Email-Store/t/date-test2 =================================================================== --- trunk/Email-Store/t/date-test2 2005-01-01 21:51:58 UTC (rev 1781) +++ trunk/Email-Store/t/date-test2 2005-01-02 08:57:23 UTC (rev 1782) @@ -0,0 +1,11 @@ +From: Foo Bar <foo@xxx.xxx> +To: Me <simon@xxxxxxxx.xxx> +Subject: Test Mail +Message-ID: 20001128211546.A29664@xxx.xxx +Date: Fri, 19 Jun 2004 11:14:35 +0100 + +> J0! + +so true + +Simon Property changes on: trunk/Email-Store/t/date-test2 ___________________________________________________________________ Name: svn:executable + * Added: trunk/Email-Store/t/date.t =================================================================== --- trunk/Email-Store/t/date.t 2005-01-01 21:51:58 UTC (rev 1781) +++ trunk/Email-Store/t/date.t 2005-01-02 08:57:23 UTC (rev 1782) @@ -0,0 +1,38 @@ +use Test::More tests => 10; +use File::Slurp; +BEGIN { unlink("t/test.db"); } +use Email::Store "dbi:SQLite:dbname=t/test.db"; +Email::Store->setup; +ok(1, "Set up"); + +my $data = read_file("t/date-test"); +Email::Store::Mail->store($data); + + + +# We need one mail: +my @mails = Email::Store::Mail->retrieve_all; +is(@mails, 1, "Only one mail"); +# is($mails[0]->message_id, '20001128211546.A29664@xxx.xxx', "Correct ID"); + +my $date; + +ok($date = $mails[0]->date ); + + +is ($date->ymd,"2004-06-18"); +is ($date->hms,"11:14:35"); +is ($mails[0]->year,"2004"); +is ($mails[0]->month,"6"); +is ($mails[0]->day,"18"); + +$data = read_file("t/date-test2"); +Email::Store::Mail->store($data); + +my @searched = Email::Store::Mail->search_between(1087516800,1087603199); + +is(@searched, 1, "Search only found one mail"); + +@searched = Email::Store::Mail->search_between(1087516800,1087689600); +is(@searched, 2, "Search only found two mail"); + Property changes on: trunk/Email-Store/t/date.t ___________________________________________________________________ Name: svn:executable + *
Generated at 09:00 on 02 Jan 2005 by mariachi 0.52