diff --git a/Slash/DB/MySQL/MySQL.pm b/Slash/DB/MySQL/MySQL.pm index bfaa117ab..06a200ce7 100644 --- a/Slash/DB/MySQL/MySQL.pm +++ b/Slash/DB/MySQL/MySQL.pm @@ -8,6 +8,7 @@ use strict; use Socket; use Digest::MD5 'md5_hex'; use Time::HiRes; +use Time::Local; use Date::Format qw(time2str); use Data::Dumper; use Slash::Utility; @@ -8304,6 +8305,19 @@ sub getDay { return $day; } +sub getDayFromDay { + my($self, $day, $days_back) = @_; + $day =~ s/-//g; + my ($y, $m, $d) = $day =~ /(\d{4})(\d{2})(\d{2})/; + my $return_day; + if ($y) { + $return_day = timeCalc(scalar localtime(timelocal(0, 0, 0, $d, $m - 1, $y - 1900) - 86400 * $days_back), "%Y%m%d"); + } else { + $return_day = $self->getDay(0) if !$y; + } + return $return_day; +} + ################################################################## # XXXSECTIONTOPICS this should be working fine now 2004/07/08 sub getStoryList { diff --git a/Slash/DB/Static/MySQL/MySQL.pm b/Slash/DB/Static/MySQL/MySQL.pm index adbf255fb..4d50c4d2d 100644 --- a/Slash/DB/Static/MySQL/MySQL.pm +++ b/Slash/DB/Static/MySQL/MySQL.pm @@ -1900,6 +1900,7 @@ sub getUrlsNeedingRefresh { ); } + 1; __END__ diff --git a/Slash/Slash.pm b/Slash/Slash.pm index 106d376dd..654dfb808 100644 --- a/Slash/Slash.pm +++ b/Slash/Slash.pm @@ -46,7 +46,7 @@ $VERSION = '2.005000'; # v2.5.0 gensym dispComment displayStory displayRelatedStories displayThread dispStory - getOlderStories getOlderDays printComments + getOlderStories getOlderDays getOlderDaysFromDay printComments jsSelectComments tempUofmLinkGenerate tempUofmCipherObj @@ -1660,6 +1660,48 @@ sub getOlderDays { return($today, $tomorrow, $yesterday, $week_ago); } +sub getOlderDaysFromDay { + my ($day, $start, $end, $options) = @_; + my $slashdb = getCurrentDB(); + $day ||= $slashdb->getDay(0); + $start ||= 0; + $end ||= 0; + $options ||= {}; + my $days = []; + + my $today = $slashdb->getDay(0); + my $yesterday = $slashdb->getDay(1); + my $weekago = $slashdb->getDay(7); + + for ($start..$end) { + my $the_day = $slashdb->getDayFromDay($day, $_); + push @$days, $the_day if $the_day < $today; + } + if ($today > $days->[0]) { + unshift @$days, "$today"; + } + + my ($ty, $tm, $td) = $today =~ /(\d{4})(\d{2})(\d{2})/; + my $ret_array = []; + foreach (@$days) { + my $label; + my ($y, $m, $d) = $_ =~ /(\d{4})(\d{2})(\d{2})/; + if ($_ eq $today) { + $label = "Today"; + } elsif ($_ eq $yesterday) { + $label = "Yesterday"; + } elsif ($_ <= $today && $_ >= $weekago) { + $label = timeCalc($_, "%A", 0); + } elsif ($ty == $y) { + $label = timeCalc($_, "%B %e", 0); + } else { + $label = timeCalc($_, "%b. %e, %Y", 0); + } + push @$ret_array, [ $_, $label ]; + } + return $ret_array; +} + #======================================================================== =head2 getData(VALUE [, PARAMETERS, PAGE])