Lines 29-34
use C4::Output;
Link Here
|
29 |
use C4::Dates qw/format_date/; |
29 |
use C4::Dates qw/format_date/; |
30 |
use C4::Debug; |
30 |
use C4::Debug; |
31 |
use C4::Branch; # XXX subfield_is_koha_internal_p |
31 |
use C4::Branch; # XXX subfield_is_koha_internal_p |
|
|
32 |
use C4::Koha qw/IsAuthorisedValueCategory/; |
33 |
use Carp; |
34 |
use Data::Dumper; |
32 |
|
35 |
|
33 |
=head1 NAME |
36 |
=head1 NAME |
34 |
|
37 |
|
Lines 132-138
elsif ( $phase eq 'Show SQL'){
Link Here
|
132 |
} |
135 |
} |
133 |
|
136 |
|
134 |
elsif ( $phase eq 'Edit SQL'){ |
137 |
elsif ( $phase eq 'Edit SQL'){ |
135 |
|
|
|
136 |
my $id = $input->param('reports'); |
138 |
my $id = $input->param('reports'); |
137 |
my $report = get_saved_report($id); |
139 |
my $report = get_saved_report($id); |
138 |
my $group = $report->{report_group}; |
140 |
my $group = $report->{report_group}; |
Lines 160-165
elsif ( $phase eq 'Update SQL'){
Link Here
|
160 |
my $cache_expiry = $input->param('cache_expiry'); |
162 |
my $cache_expiry = $input->param('cache_expiry'); |
161 |
my $cache_expiry_units = $input->param('cache_expiry_units'); |
163 |
my $cache_expiry_units = $input->param('cache_expiry_units'); |
162 |
my $public = $input->param('public'); |
164 |
my $public = $input->param('public'); |
|
|
165 |
my $save_anyway = $input->param('save_anyway'); |
163 |
|
166 |
|
164 |
my @errors; |
167 |
my @errors; |
165 |
|
168 |
|
Lines 184-209
elsif ( $phase eq 'Update SQL'){
Link Here
|
184 |
elsif ($sql !~ /^(SELECT)/i) { |
187 |
elsif ($sql !~ /^(SELECT)/i) { |
185 |
push @errors, {queryerr => 1}; |
188 |
push @errors, {queryerr => 1}; |
186 |
} |
189 |
} |
|
|
190 |
|
187 |
if (@errors) { |
191 |
if (@errors) { |
188 |
$template->param( |
192 |
$template->param( |
189 |
'errors' => \@errors, |
193 |
'errors' => \@errors, |
190 |
'sql' => $sql, |
194 |
'sql' => $sql, |
191 |
); |
195 |
); |
192 |
} else { |
196 |
} else { |
193 |
update_sql( $id, { |
197 |
|
194 |
sql => $sql, |
198 |
# Check defined SQL parameters for authorised value validity |
195 |
name => $reportname, |
199 |
my $problematic_authvals = ValidateSQLParameters($sql); |
196 |
group => $group, |
200 |
|
197 |
subgroup => $subgroup, |
201 |
if ( scalar @$problematic_authvals > 0 && not $save_anyway ) { |
198 |
notes => $notes, |
202 |
# There's at least one problematic parameter, report to the |
199 |
cache_expiry => $cache_expiry, |
203 |
# GUI and provide all user input for further actions |
200 |
public => $public, |
204 |
$template->param( |
201 |
} ); |
205 |
'id' => $id, |
202 |
$template->param( |
206 |
'sql' => $sql, |
203 |
'save_successful' => 1, |
207 |
'reportname' => $reportname, |
204 |
'reportname' => $reportname, |
208 |
'group' => $group, |
205 |
'id' => $id, |
209 |
'subgroup' => $subgroup, |
206 |
); |
210 |
'notes' => $notes, |
|
|
211 |
'cache_expiry' => $cache_expiry, |
212 |
'cache_expiry_units' => $cache_expiry_units, |
213 |
'public' => $public, |
214 |
'problematic_authvals' => $problematic_authvals, |
215 |
'warn_authval_problem' => 1, |
216 |
'phase_update' => 1 |
217 |
); |
218 |
|
219 |
} else { |
220 |
# No params problem found or asked to save anyway |
221 |
update_sql( $id, { |
222 |
sql => $sql, |
223 |
name => $reportname, |
224 |
group => $group, |
225 |
subgroup => $subgroup, |
226 |
notes => $notes, |
227 |
cache_expiry => $cache_expiry, |
228 |
public => $public, |
229 |
} ); |
230 |
$template->param( |
231 |
'save_successful' => 1, |
232 |
'reportname' => $reportname, |
233 |
'id' => $id, |
234 |
); |
235 |
} |
207 |
} |
236 |
} |
208 |
} |
237 |
} |
209 |
|
238 |
|
Lines 466-471
elsif ( $phase eq 'Save Report' ) {
Link Here
|
466 |
my $cache_expiry = $input->param('cache_expiry'); |
495 |
my $cache_expiry = $input->param('cache_expiry'); |
467 |
my $cache_expiry_units = $input->param('cache_expiry_units'); |
496 |
my $cache_expiry_units = $input->param('cache_expiry_units'); |
468 |
my $public = $input->param('public'); |
497 |
my $public = $input->param('public'); |
|
|
498 |
my $save_anyway = $input->param('save_anyway'); |
469 |
|
499 |
|
470 |
|
500 |
|
471 |
# if we have the units, then we came from creating a report from SQL and thus need to handle converting units |
501 |
# if we have the units, then we came from creating a report from SQL and thus need to handle converting units |
Lines 489-494
elsif ( $phase eq 'Save Report' ) {
Link Here
|
489 |
elsif ($sql !~ /^(SELECT)/i) { |
519 |
elsif ($sql !~ /^(SELECT)/i) { |
490 |
push @errors, {queryerr => "No SELECT"}; |
520 |
push @errors, {queryerr => "No SELECT"}; |
491 |
} |
521 |
} |
|
|
522 |
|
492 |
if (@errors) { |
523 |
if (@errors) { |
493 |
$template->param( |
524 |
$template->param( |
494 |
'errors' => \@errors, |
525 |
'errors' => \@errors, |
Lines 499-523
elsif ( $phase eq 'Save Report' ) {
Link Here
|
499 |
'cache_expiry' => $cache_expiry, |
530 |
'cache_expiry' => $cache_expiry, |
500 |
'public' => $public, |
531 |
'public' => $public, |
501 |
); |
532 |
); |
502 |
} |
533 |
} else { |
503 |
else { |
534 |
# Check defined SQL parameters for authorised value validity |
504 |
my $id = save_report( { |
535 |
my $problematic_authvals = ValidateSQLParameters($sql); |
505 |
borrowernumber => $borrowernumber, |
536 |
|
506 |
sql => $sql, |
537 |
if ( scalar @$problematic_authvals > 0 && not $save_anyway ) { |
507 |
name => $name, |
538 |
# There's at least one problematic parameter, report to the |
508 |
area => $area, |
539 |
# GUI and provide all user input for further actions |
509 |
group => $group, |
540 |
$template->param( |
510 |
subgroup => $subgroup, |
541 |
'area' => $area, |
511 |
type => $type, |
542 |
'group' => $group, |
512 |
notes => $notes, |
543 |
'subgroup' => $subgroup, |
513 |
cache_expiry => $cache_expiry, |
544 |
'sql' => $sql, |
514 |
public => $public, |
545 |
'reportname' => $name, |
515 |
} ); |
546 |
'type' => $type, |
516 |
$template->param( |
547 |
'notes' => $notes, |
517 |
'save_successful' => 1, |
548 |
'cache_expiry' => $cache_expiry, |
518 |
'reportname' => $name, |
549 |
'cache_expiry_units' => $cache_expiry_units, |
519 |
'id' => $id, |
550 |
'public' => $public, |
520 |
); |
551 |
'problematic_authvals' => $problematic_authvals, |
|
|
552 |
'warn_authval_problem' => 1, |
553 |
'phase_save' => 1 |
554 |
); |
555 |
} else { |
556 |
# No params problem found or asked to save anyway |
557 |
my $id = save_report( { |
558 |
borrowernumber => $borrowernumber, |
559 |
sql => $sql, |
560 |
name => $name, |
561 |
area => $area, |
562 |
group => $group, |
563 |
subgroup => $subgroup, |
564 |
type => $type, |
565 |
notes => $notes, |
566 |
cache_expiry => $cache_expiry, |
567 |
public => $public, |
568 |
} ); |
569 |
$template->param( |
570 |
'save_successful' => 1, |
571 |
'reportname' => $name, |
572 |
'id' => $id, |
573 |
); |
574 |
} |
521 |
} |
575 |
} |
522 |
} |
576 |
} |
523 |
|
577 |
|
Lines 549-562
elsif ($phase eq 'Run this report'){
Link Here
|
549 |
# split on ??. Each odd (2,4,6,...) entry should be a parameter to fill |
603 |
# split on ??. Each odd (2,4,6,...) entry should be a parameter to fill |
550 |
my @split = split /<<|>>/,$sql; |
604 |
my @split = split /<<|>>/,$sql; |
551 |
my @tmpl_parameters; |
605 |
my @tmpl_parameters; |
|
|
606 |
my @authval_errors; |
552 |
for(my $i=0;$i<($#split/2);$i++) { |
607 |
for(my $i=0;$i<($#split/2);$i++) { |
553 |
my ($text,$authorised_value) = split /\|/,$split[$i*2+1]; |
608 |
my ($text,$authorised_value) = split /\|/,$split[$i*2+1]; |
554 |
my $input; |
609 |
my $input; |
555 |
my $labelid; |
610 |
my $labelid; |
556 |
if ($authorised_value eq "date") { |
611 |
if ( not defined $authorised_value ) { |
557 |
$input = 'date'; |
612 |
# no authorised value input, provide a text box |
558 |
} |
613 |
$input = "text"; |
559 |
elsif ($authorised_value) { |
614 |
} elsif ( $authorised_value eq "date" ) { |
|
|
615 |
# require a date, provide a date picker |
616 |
$input = 'date'; |
617 |
} else { |
618 |
# defined $authorised_value, and not 'date' |
560 |
my $dbh=C4::Context->dbh; |
619 |
my $dbh=C4::Context->dbh; |
561 |
my @authorised_values; |
620 |
my @authorised_values; |
562 |
my %authorised_lib; |
621 |
my %authorised_lib; |
Lines 597-611
elsif ($phase eq 'Run this report'){
Link Here
|
597 |
#---- "true" authorised value |
656 |
#---- "true" authorised value |
598 |
} |
657 |
} |
599 |
else { |
658 |
else { |
600 |
my $authorised_values_sth = $dbh->prepare("SELECT authorised_value,lib FROM authorised_values WHERE category=? ORDER BY lib"); |
659 |
if ( IsAuthorisedValueCategory($authorised_value) ) { |
601 |
|
660 |
my $query = ' |
602 |
$authorised_values_sth->execute( $authorised_value); |
661 |
SELECT authorised_value,lib |
603 |
|
662 |
FROM authorised_values |
604 |
while ( my ( $value, $lib ) = $authorised_values_sth->fetchrow_array ) { |
663 |
WHERE category=? |
605 |
push @authorised_values, $value; |
664 |
ORDER BY lib |
606 |
$authorised_lib{$value} = $lib; |
665 |
'; |
607 |
# For item location, we show the code and the libelle |
666 |
my $authorised_values_sth = $dbh->prepare($query); |
608 |
$authorised_lib{$value} = $lib; |
667 |
$authorised_values_sth->execute( $authorised_value); |
|
|
668 |
|
669 |
while ( my ( $value, $lib ) = $authorised_values_sth->fetchrow_array ) { |
670 |
push @authorised_values, $value; |
671 |
$authorised_lib{$value} = $lib; |
672 |
# For item location, we show the code and the libelle |
673 |
$authorised_lib{$value} = $lib; |
674 |
} |
675 |
} else { |
676 |
# not exists $authorised_value_categories{$authorised_value}) |
677 |
push @authval_errors, {'entry' => $text, |
678 |
'auth_val' => $authorised_value }; |
679 |
# tell the template there's an error |
680 |
$template->param( auth_val_error => 1 ); |
681 |
# skip scrolling list creation and params push |
682 |
next; |
609 |
} |
683 |
} |
610 |
} |
684 |
} |
611 |
$labelid = $text; |
685 |
$labelid = $text; |
Lines 621-634
elsif ($phase eq 'Run this report'){
Link Here
|
621 |
-multiple => 0, |
695 |
-multiple => 0, |
622 |
-tabindex => 1, |
696 |
-tabindex => 1, |
623 |
); |
697 |
); |
624 |
} else { |
|
|
625 |
$input = "text"; |
626 |
} |
698 |
} |
|
|
699 |
|
627 |
push @tmpl_parameters, {'entry' => $text, 'input' => $input, 'labelid' => $labelid }; |
700 |
push @tmpl_parameters, {'entry' => $text, 'input' => $input, 'labelid' => $labelid }; |
628 |
} |
701 |
} |
629 |
$template->param('sql' => $sql, |
702 |
$template->param('sql' => $sql, |
630 |
'name' => $name, |
703 |
'name' => $name, |
631 |
'sql_params' => \@tmpl_parameters, |
704 |
'sql_params' => \@tmpl_parameters, |
|
|
705 |
'auth_val_errors' => \@authval_errors, |
632 |
'enter_params' => 1, |
706 |
'enter_params' => 1, |
633 |
'reports' => $report_id, |
707 |
'reports' => $report_id, |
634 |
); |
708 |
); |
635 |
- |
|
|