Bug 18789: Send Koha::Patron object to the templates
[koha.git] / tools / scheduler.pl
index 4d65580..3cf6b7e 100755 (executable)
 #
 # This file is part of Koha.
 #
-# Koha is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or (at your option) any later
-# version.
+# Koha is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
 #
-# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+# Koha is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
 #
-# You should have received a copy of the GNU General Public License along with
-# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA  02111-1307 USA
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
 
-use strict;
+use Modern::Perl;
+use C4::Context;
 use C4::Scheduler;
-use C4::Reports;
-use C4::Auth;                                                                                                                                              
-use CGI;                                                                                                                                                   
-use C4::Output;                                                                                                                                            
+use C4::Reports::Guided;
+use C4::Auth;
+use CGI qw ( -utf8 );
+use C4::Output;
+use Koha::DateUtils;;
+
+use vars qw($debug);
+
+BEGIN {
+    $debug = $ENV{DEBUG} || 0;
+}
 
 my $input = new CGI;
+my $base;
+
+if ( C4::Context->config('supportdir') ) {
+     $base = C4::Context->config('supportdir');
+}
+else {
+     $base = "/usr/share/koha/bin";
+}
+
+my $CONFIG_NAME = $ENV{'KOHA_CONF'};
+
 my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
-           {
-                               template_name   => "tools/scheduler.tmpl",
-                                 query           => $input,
-                                 type            => "intranet",
-                                 authnotrequired => 0,
-                                 flagsrequired   => { editcatalogue => 1 },
-                                 debug           => 1,
-                             }
-       ); 
-
-my $mode=$input->param('mode');
-if ($mode eq 'job_add') {
-       my $startday   = $input->param('startday');
-       my $startmonth = $input->param('startmonth');
-       my $startyear  = $input->param('startyear');
-       my $starttime  = $input->param('starttime');
-       $starttime  =~ s/\://g;
-       my $start = $startyear . $startmonth . $startday . $starttime;
-       my $report=$input->param('report');
-       my $format=$input->param('format');
-       my $email=$input->param('email');
-       my $base = "/nzkoha/intranet";   # EDIT THIS
-       my $command = "EXPORT KOHA_CONF=\"/nzkoha/etc/koha-kapiti.conf\"; ".$base."/tools/runreport.pl $report $format $email"; # EDIT THIS
-       add_job($start,$command);
+    {
+        template_name   => "tools/scheduler.tt",
+        query           => $input,
+        type            => "intranet",
+        authnotrequired => 0,
+        flagsrequired   => { tools => 'schedule_tasks' },
+        debug           => 1,
+    }
+);
+
+my $mode = $input->param('mode');
+my $id   = $input->param('id');
+
+if ( $mode eq 'job_add' ) {
+
+    # Retrieving the date according to the dateformat syspref
+    my $c4date = output_pref({ dt => dt_from_string( scalar $input->param('startdate') ), dateformat => 'iso', dateonly => 1 });
+
+    # Formatting it for Schedule::At
+    my $startdate = join('', (split /-/, $c4date));
+
+    my $starttime = $input->param('starttime');
+    $starttime =~ s/\://g;
+    my $start  = $startdate . $starttime;
+    my $report = $input->param('report');
+    my $format = $input->param('format');
+    my $email  = $input->param('email');
+    my $command =
+        "export KOHA_CONF=\"$CONFIG_NAME\"; " .
+        "$base/cronjobs/runreport.pl $report --format=$format --to=$email";
+
+#FIXME commit ea899bc55933cd74e4665d70b1c48cab82cd1257 added recurring parameter (it is not in template) and call to add_cron_job (undefined)
+#    my $recurring = $input->param('recurring');
+#    if ($recurring) {
+#        my $frequency = $input->param('frequency');
+#        add_cron_job( $start, $command );
+#    }
+#    else {
+#        #here was the the unless ( add_at_job
+#    }
+
+    unless ( add_at_job( $start, $command ) ) {
+        $template->param( job_add_failed => 1 );
+    }
 }
 
-if ($mode eq 'job_change'){
-       my $jobid = $input->param('jobid');
-       if ($input->param('delete')){
-               remove_job($jobid);
-       }
+if ( $mode eq 'job_change' ) {
+    my $jobid = $input->param('jobid');
+    if ( $input->param('delete') ) {
+        remove_at_job($jobid);
+    }
 }
+
 my $jobs = get_jobs();
 my @jobloop;
- foreach my $job (values %$jobs) {
-                    push @jobloop,$job;
-                }
-@jobloop = sort {$a->{TIME} cmp $b->{TIME}} @jobloop;
-my $reports = get_saved_reports();                                                                                                                     
-$template->param( 'savedreports' => $reports ); 
-$template->param(JOBS => \@jobloop);
+foreach my $job ( values %$jobs ) {
+    push @jobloop, $job;
+}
+
+@jobloop = sort { $a->{TIME} cmp $b->{TIME} } @jobloop;
+
+my $reports = get_saved_reports();
+if ( defined $id ) {
+    foreach my $report (@$reports) {
+        $report->{'selected'} = 1 if $report->{'id'} eq $id;
+    }
+}
+
+$template->param( 'savedreports' => $reports );
+$template->param( JOBS           => \@jobloop );
 my $time = localtime(time);
-$template->param('time' => $time);
+$template->param( 'time' => $time );
+$template->param(
+    debug                    => $debug,
+);
 output_html_with_http_headers $input, $cookie, $template->output;