installers (calendaring), RT#16584
[freeside.git] / rt / lib / RTx / Calendar.pm
index e297566..7ddf186 100644 (file)
@@ -5,12 +5,13 @@ use base qw( Exporter );
 use DateTime;
 use DateTime::Set;
 
-our $VERSION = "0.14";
+our $VERSION = "0.17";
 
 RT->AddStyleSheets('calendar.css')
     if RT->can('AddStyleSheets');
 
-our @EXPORT_OK = qw( FirstDay LastDay );
+our @EXPORT_OK = qw( FirstDay LastDay LastDayOfWeek DatesClauses LocalDate
+                     SearchDefaultCalendar FindTickets );
 
 sub FirstDay {
     my ($year, $month, $matchday) = @_;
@@ -37,6 +38,19 @@ sub LastDay {
     $day;
 }
 
+sub LastDayOfWeek {
+    my ($year, $month, $day, $matchday) = @_;
+    my $set = DateTime::Set->from_recurrence(
+       next => sub { $_[0]->truncate( to => 'day' )->add( days => 1 ) }
+    );
+
+    my $dt = DateTime->new( year => $year, month => $month, day => $day );
+
+    $dt = $set->next($dt) while $dt->day_of_week != $matchday;
+    $dt;
+
+}
+
 # we can't use RT::Date::Date because it uses gmtime
 # and we need localtime
 sub LocalDate {
@@ -154,9 +168,8 @@ number based so that you can give those feeds to other people.
 
 If you upgrade from 0.02, see next part before.
 
-You need to install those three modules :
+You need to install those two modules :
 
-  * Date::ICal
   * Data::ICal
   * DateTime::Set