Bug 8015: QA Followup
[koha.git] / tools / marc_modification_templates.pl
1 #!/usr/bin/perl
2 # This file is part of Koha.
3 #
4 # Copyright 2010 Kyle M Hall <kyle.m.hall@gmail.com>
5 #
6 # Koha is free software; you can redistribute it and/or modify it
7 # under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3 of the License, or
9 # (at your option) any later version.
10 #
11 # Koha is distributed in the hope that it will be useful, but
12 # WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with Koha; if not, see <http://www.gnu.org/licenses>.
18
19 use Modern::Perl;
20
21 use CGI;
22
23 use C4::Auth;
24 use C4::Koha;
25 use C4::Output;
26 use C4::MarcModificationTemplates;
27
28 my $cgi = new CGI;
29
30 my $op = $cgi->param('op') || q{};
31 my $template_id = $cgi->param('template_id');
32
33 my ($template, $loggedinuser, $cookie)
34     = get_template_and_user({
35             template_name => "tools/marc_modification_templates.tt",
36             query => $cgi,
37             type => "intranet",
38             authnotrequired => 0,
39             flagsrequired => { tools => 'marc_modfication_templates' },
40             debug => 1,
41     });
42
43 if ( $op eq "create_template" ) {
44   $template_id = '' unless $cgi->param('duplicate_current_template');
45   $template_id = AddModificationTemplate( $cgi->param('template_name'), $template_id );
46
47 } elsif ( $op eq "delete_template" ) {
48
49   DelModificationTemplate( $template_id );
50   $template_id = '';
51
52 } elsif ( $op eq "add_action" ) {
53
54   my $mmta_id = $cgi->param('mmta_id');
55   my $action = $cgi->param('action');
56   my $field_number = $cgi->param('field_number');
57   my $from_field = $cgi->param('from_field');
58   my $from_subfield = $cgi->param('from_subfield');
59   my $field_value = $cgi->param('field_value');
60   my $to_field = $cgi->param('to_field');
61   my $to_subfield = $cgi->param('to_subfield');
62   my $to_regex_search = $cgi->param('to_regex_search');
63   my $to_regex_replace = $cgi->param('to_regex_replace');
64   my $to_regex_modifiers = $cgi->param('to_regex_modifiers');
65   my $conditional = $cgi->param('conditional');
66   my $conditional_field = $cgi->param('conditional_field');
67   my $conditional_subfield = $cgi->param('conditional_subfield');
68   my $conditional_comparison = $cgi->param('conditional_comparison');
69   my $conditional_value = $cgi->param('conditional_value');
70   my $conditional_regex = $cgi->param('conditional_regex') eq 'on';
71   my $description = $cgi->param('description');
72
73   unless ( $mmta_id ) {
74     AddModificationTemplateAction(
75       $template_id,
76       $action,
77       $field_number,
78       $from_field,
79       $from_subfield,
80       $field_value,
81       $to_field,
82       $to_subfield,
83       $to_regex_search,
84       $to_regex_replace,
85       $to_regex_modifiers,
86       $conditional,
87       $conditional_field,
88       $conditional_subfield,
89       $conditional_comparison,
90       $conditional_value,
91       $conditional_regex,
92       $description
93     );
94   } else {
95     ModModificationTemplateAction(
96       $mmta_id,
97       $action,
98       $field_number,
99       $from_field,
100       $from_subfield,
101       $field_value,
102       $to_field,
103       $to_subfield,
104       $to_regex_search,
105       $to_regex_replace,
106       $to_regex_modifiers,
107       $conditional,
108       $conditional_field,
109       $conditional_subfield,
110       $conditional_comparison,
111       $conditional_value,
112       $conditional_regex,
113       $description
114     );
115
116   }
117
118 } elsif ( $op eq "delete_action" ) {
119   DelModificationTemplateAction( $cgi->param('mmta_id') );
120
121 } elsif ( $op eq "move_action" ) {
122
123   MoveModificationTemplateAction( $cgi->param('mmta_id'), $cgi->param('where') );
124
125 }
126
127 my @templates = GetModificationTemplates( $template_id );
128
129 unless ( $template_id ) {
130   $template_id = $templates[0]->{'template_id'};
131   @templates = GetModificationTemplates( $template_id );
132 }
133
134 my @actions = GetModificationTemplateActions( $template_id );
135 foreach my $action ( @actions ) {
136   $action->{'action_delete_field'} = ( $action->{'action'} eq 'delete_field' );
137   $action->{'action_update_field'} = ( $action->{'action'} eq 'update_field' );
138   $action->{'action_move_field'} = ( $action->{'action'} eq 'move_field' );
139   $action->{'action_copy_field'} = ( $action->{'action'} eq 'copy_field' );
140
141   $action->{'conditional_if'} = ( $action->{'conditional'} eq 'if' );
142   $action->{'conditional_unless'} = ( $action->{'conditional'} eq 'unless' );
143
144   $action->{'conditional_comparison_exists'} = ( $action->{'conditional_comparison'} eq 'exists' );
145   $action->{'conditional_comparison_not_exists'} = ( $action->{'conditional_comparison'} eq 'not_exists' );
146   $action->{'conditional_comparison_equals'} = ( $action->{'conditional_comparison'} eq 'equals' );
147   $action->{'conditional_comparison_not_equals'} = ( $action->{'conditional_comparison'} eq 'not_equals' );
148 }
149
150 $template->param(
151   TemplatesLoop => \@templates,
152   ActionsLoop => \@actions,
153
154   template_id => $template_id,
155 );
156
157 output_html_with_http_headers $cgi, $cookie, $template->output;