Bug 18331: Force tt to insert newline to empty_line.inc
[koha.git] / reports / guided_reports.pl
index a5e15be..bfd0a76 100755 (executable)
@@ -53,7 +53,7 @@ my $usecache = Koha::Caches->get_instance->memcached_cache;
 
 my $phase = $input->param('phase') // '';
 my $flagsrequired;
-if ( $phase eq 'Build new' ) {
+if ( ( $phase eq 'Build new' ) || ( $phase eq 'Create report from SQL' ) || ( $phase eq 'Edit SQL' ) ){
     $flagsrequired = 'create_reports';
 }
 elsif ( $phase eq 'Use saved' ) {
@@ -89,6 +89,7 @@ elsif ($session and not $input->param('clear_filters')) {
     $filter = $session->param('report_filter');
 }
 
+my $op = $input->param('op') || q||;
 
 my @errors = ();
 if ( !$phase ) {
@@ -106,6 +107,27 @@ elsif ( $phase eq 'Build new' ) {
     );
 } elsif ( $phase eq 'Use saved' ) {
 
+    if ( $op eq 'convert' ) {
+        my $report_id = $input->param('report_id');
+        my $report    = C4::Reports::Guided::get_saved_report($report_id);
+        if ($report) {
+            my $updated_sql = C4::Reports::Guided::convert_sql( $report->{savedsql} );
+            C4::Reports::Guided::update_sql(
+                $report_id,
+                {
+                    sql          => $updated_sql,
+                    name         => $report->{report_name},
+                    group        => $report->{report_group},
+                    subgroup     => $report->{report_subgroup},
+                    notes        => $report->{notes},
+                    public       => $report->{public},
+                    cache_expiry => $report->{cache_expiry},
+                }
+            );
+            $template->param( report_converted => $report->{report_name} );
+        }
+    }
+
     # use a saved report
     # get list of reports and display them
     my $group = $input->param('group');
@@ -113,8 +135,13 @@ elsif ( $phase eq 'Build new' ) {
     $filter->{group} = $group;
     $filter->{subgroup} = $subgroup;
     my $reports = get_saved_reports($filter);
+    my $has_obsolete_reports;
     for my $report ( @$reports ) {
         $report->{results} = C4::Reports::Guided::get_results( $report->{id} );
+        if ( $report->{savedsql} =~ m|marcxml| ) {
+            $report->{seems_obsolete} = 1;
+            $has_obsolete_reports++;
+        }
     }
     $template->param(
         'saved1' => 1,
@@ -122,6 +149,7 @@ elsif ( $phase eq 'Build new' ) {
         'usecache' => $usecache,
         'groups_with_subgroups'=> groups_with_subgroups($group, $subgroup),
         filters => $filter,
+        has_obsolete_reports => $has_obsolete_reports,
     );
 }
 
@@ -772,7 +800,7 @@ elsif ($phase eq 'Run this report'){
                 $quoted = C4::Context->dbh->quote($quoted);
                 $sql =~ s/<<$split[$i*2+1]>>/$quoted/;
             }
-            my ($sth, $errors) = execute_query($sql, $offset, $limit);
+            my ( $sth, $errors ) = execute_query( $sql, $offset, $limit, undef, $report_id );
             my $total = nb_rows($sql) || 0;
             unless ($sth) {
                 die "execute_query failed to return sth for report $report_id: $sql";