7 use C4::Auth qw( checkauth );
12 use Koha::DateUtils qw( dt_from_string );
15 my $op = $input->param('op') // q{};
16 my $dbh = C4::Context->dbh();
18 checkauth($input, 0, {tools=> 'edit_calendar'}, 'intranet');
21 our $branchcode = $input->param('showBranchName');
22 my $originalbranchcode = $branchcode;
23 our $weekday = $input->param('showWeekday');
24 our $day = $input->param('showDay');
25 our $month = $input->param('showMonth');
26 our $year = $input->param('showYear');
27 our $title = $input->param('showTitle');
28 our $description = $input->param('showDescription');
29 our $holidaytype = $input->param('showHolidayType');
30 my $datecancelrange_dt = eval { dt_from_string( scalar $input->param('datecancelrange') ) };
31 my $calendardate = sprintf("%04d-%02d-%02d", $year, $month, $day);
32 our $showoperation = $input->param('showOperation');
33 my $allbranches = $input->param('allBranches');
35 $title || ($title = '');
37 $description =~ s/\r/\\r/g;
38 $description =~ s/\n/\\n/g;
43 # We make an array with holiday's days
45 if ($datecancelrange_dt){
46 my $first_dt = DateTime->new(year => $year, month => $month, day => $day);
48 for (my $dt = $first_dt->clone();
49 $dt <= $datecancelrange_dt;
52 push @holiday_list, $dt->clone();
56 if ( $op eq 'cud-edit' && $allbranches ) {
57 my $libraries = Koha::Libraries->search;
58 while ( my $library = $libraries->next ) {
59 edit_holiday($showoperation, $library->branchcode, $weekday, $day, $month, $year, $title, $description, $holidaytype, @holiday_list);
61 } elsif( $op eq 'cud-edit' ) {
62 edit_holiday($showoperation, $branchcode, $weekday, $day, $month, $year, $title, $description, $holidaytype, @holiday_list);
65 print $input->redirect("/cgi-bin/koha/tools/holidays.pl?branch=$originalbranchcode&calendardate=$calendardate");
68 ($showoperation, $branchcode, $weekday, $day, $month, $year, $title, $description, $holidaytype, @holiday_list) = @_;
69 my $calendar = C4::Calendar->new(branchcode => $branchcode);
71 if ($showoperation eq 'exception') {
72 $calendar->insert_exception_holiday(day => $day,
76 description => $description);
77 } elsif ($showoperation eq 'exceptionrange' ) {
79 foreach my $date (@holiday_list){
80 $calendar->insert_exception_holiday(
81 day => $date->{local_c}->{day},
82 month => $date->{local_c}->{month},
83 year => $date->{local_c}->{year},
85 description => $description
89 } elsif ($showoperation eq 'cud-edit') {
90 if ( $holidaytype eq 'weekday' ) {
91 my $isHoliday = $calendar->isHoliday( $day, $month, $year );
93 $calendar->ModWeekdayholiday(
96 description => $description
100 $calendar->insert_week_day_holiday(
103 description => $description
107 elsif ( $holidaytype eq 'daymonth' ) {
108 my $isHoliday = $calendar->isHoliday( $day, $month, $year );
110 $calendar->ModDaymonthholiday(
114 description => $description
118 $calendar->insert_day_month_holiday(
122 description => $description
126 elsif ( $holidaytype eq 'ymd' ) {
127 my $isHoliday = $calendar->isHoliday( $day, $month, $year );
129 $calendar->ModSingleholiday(
134 description => $description
138 $calendar->insert_single_holiday(
143 description => $description
147 elsif ( $holidaytype eq 'exception' ) {
148 my $isHoliday = $calendar->isHoliday( $day, $month, $year );
150 $calendar->ModExceptionholiday(
155 description => $description
159 $calendar->insert_exception_holiday(
164 description => $description
168 } elsif ($showoperation eq 'cud-delete') {
169 $calendar->delete_holiday(weekday => $weekday,
173 }elsif ($showoperation eq 'deleterange') {
175 foreach my $date (@holiday_list){
176 $calendar->delete_holiday_range(weekday => $weekday,
177 day => $date->{local_c}->{day},
178 month => $date->{local_c}->{month},
179 year => $date->{local_c}->{year});
182 }elsif ($showoperation eq 'deleterangerepeat') {
184 foreach my $date (@holiday_list){
185 $calendar->delete_holiday_range_repeatable(weekday => $weekday,
186 day => $date->{local_c}->{day},
187 month => $date->{local_c}->{month});
190 }elsif ($showoperation eq 'deleterangerepeatexcept') {
192 foreach my $date (@holiday_list){
193 $calendar->delete_exception_holiday_range(weekday => $weekday,
194 day => $date->{local_c}->{day},
195 month => $date->{local_c}->{month},
196 year => $date->{local_c}->{year});