diff options
| -rw-r--r-- | FS/FS/part_event/Condition/day_of_week.pm | 49 | 
1 files changed, 49 insertions, 0 deletions
diff --git a/FS/FS/part_event/Condition/day_of_week.pm b/FS/FS/part_event/Condition/day_of_week.pm new file mode 100644 index 000000000..6b8431097 --- /dev/null +++ b/FS/FS/part_event/Condition/day_of_week.pm @@ -0,0 +1,49 @@ +package FS::part_event::Condition::day_of_week; + +use strict; +use base qw( FS::part_event::Condition ); +use FS::Record qw( dbh ); + +tie my %dayofweek, 'Tie::IxHash',  +  0 => 'Sunday', +  1 => 'Monday', +  2 => 'Tuesday', +  3 => 'Wednesday', +  4 => 'Thursday', +  5 => 'Friday', +  6 => 'Saturday', +; + +sub description { +  "Run only on certain days of the week", +} + +sub option_fields { +  ( +    'dayofweek' => { +       label         => 'Days to run', +       type          => 'checkbox-multiple', +       options       => [ values %dayofweek ], +       option_labels => { map { $_ => $_ } values %dayofweek }, +    }, +  ); +} + +sub condition { # is this even necessary? condition_sql is exact. +  my( $self, $object, %opt ) = @_; + +  my $today = $dayofweek{(localtime($opt{'time'}))[6]}; +  if (grep { $_ eq $today } (keys %{$self->option('dayofweek')})) { +    return 1; +  } +  ''; +} + +sub condition_sql { +  my( $class, $table, %opt ) = @_; +  my $today = $dayofweek{(localtime($opt{'time'}))[6]}; +  my $day = $class->condition_sql_option_option('dayofweek'); +  return dbh->quote($today) . " IN $day"; +} + +1;  | 
