Merge branch 'master' of git.freeside.biz:/home/git/freeside
authorIvan Kohler <ivan@freeside.biz>
Mon, 25 Apr 2016 18:53:45 +0000 (11:53 -0700)
committerIvan Kohler <ivan@freeside.biz>
Mon, 25 Apr 2016 18:53:45 +0000 (11:53 -0700)
FS/FS/part_event/Condition/day_of_week.pm [new file with mode: 0644]

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 (file)
index 0000000..6b84310
--- /dev/null
@@ -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;