--- lib/Grep/Model/Item.pm 2007/07/04 12:52:50 170 +++ lib/Grep/Model/Item.pm 2007/07/04 14:10:43 171 @@ -83,5 +83,40 @@ return ($val, $msg); } +=head2 link_current + + my $item = Grep::Model::Item->link_currnet( 'http://www.example.com' ) + my $item = $item->link_current( 'http://www.example.com' ); + +=cut + +my $update_every_hr = 24; # s + +sub link_current { + my $self = shift; + my $uri = shift || die "no uri?"; + + my $item = $self; + if ( ! ref($self) || ! $self->link || ( $self->link && $self->link ne $uri ) ) { + $item = Grep::Model::Item->new; + #warn "load_by_cols link => $uri"; + $item->load_by_cols( link => $uri ); + return $item if $item->id; + return 0; + } + + return 0 unless ( $item ); + + die "item is not Grep::Model::Item, but ", ref( $item ) unless ref( $item ) eq 'Grep::Model::Item'; + + my $last_update = $item->last_update || $item->created_on; # fallback + return 0 unless defined( $last_update ) && $last_update; + + my $newer_than = DateTime->now->subtract( hours => $update_every_hr ); + #warn "$last_update > $newer_than"; + return 0 if ( $last_update - $newer_than )->is_negative; + return $item; +} + 1;