Lines 47-60
use C4::Auth;
Link Here
|
47 |
use C4::Context; |
47 |
use C4::Context; |
48 |
use C4::Output; |
48 |
use C4::Output; |
49 |
use C4::Branch; # GetBranches |
49 |
use C4::Branch; # GetBranches |
|
|
50 |
use C4::Letters; |
50 |
use C4::Members::Attributes; |
51 |
use C4::Members::Attributes; |
51 |
|
52 |
|
52 |
# _letter_from_where($branchcode,$module, $code) |
53 |
# _letter_from_where($branchcode,$module, $code, $mtt) |
53 |
# - return FROM WHERE clause and bind args for a letter |
54 |
# - return FROM WHERE clause and bind args for a letter |
54 |
sub _letter_from_where { |
55 |
sub _letter_from_where { |
55 |
my ($branchcode, $module, $code) = @_; |
56 |
my ($branchcode, $module, $code, $mtt) = @_; |
56 |
my $sql = q{FROM letter WHERE branchcode = ? AND module = ? AND code = ?}; |
57 |
my $sql = q{FROM letter WHERE branchcode = ? AND module = ? AND code = ?}; |
57 |
my @args = ($branchcode || '', $module, $code); |
58 |
$sql .= q{ AND message_transport_type = ?} if $mtt ne '*'; |
|
|
59 |
my @args = ( $branchcode || '', $module, $code, ($mtt ne '*' ? $mtt : ()) ); |
58 |
# Mysql is retarded. cause branchcode is part of the primary key it cannot be null. How does that |
60 |
# Mysql is retarded. cause branchcode is part of the primary key it cannot be null. How does that |
59 |
# work with foreign key constraint I wonder... |
61 |
# work with foreign key constraint I wonder... |
60 |
|
62 |
|
Lines 68-79
sub _letter_from_where {
Link Here
|
68 |
return ($sql, \@args); |
70 |
return ($sql, \@args); |
69 |
} |
71 |
} |
70 |
|
72 |
|
71 |
# letter_exists($branchcode,$module, $code) |
73 |
# get_letters($branchcode,$module, $code, $mtt) |
72 |
# - return true if a letter with the given $branchcode, $module and $code exists |
74 |
# - return letters with the given $branchcode, $module, $code and $mtt exists |
73 |
sub letter_exists { |
75 |
sub get_letters { |
74 |
my ($sql, $args) = _letter_from_where(@_); |
76 |
my ($sql, $args) = _letter_from_where(@_); |
75 |
my $dbh = C4::Context->dbh; |
77 |
my $dbh = C4::Context->dbh; |
76 |
my $letter = $dbh->selectrow_hashref("SELECT * $sql", undef, @$args); |
78 |
my $letter = $dbh->selectall_hashref("SELECT * $sql", 'message_transport_type', undef, @$args); |
77 |
return $letter; |
79 |
return $letter; |
78 |
} |
80 |
} |
79 |
|
81 |
|
Lines 90-96
my $searchfield = $input->param('searchfield');
Link Here
|
90 |
my $script_name = '/cgi-bin/koha/tools/letter.pl'; |
92 |
my $script_name = '/cgi-bin/koha/tools/letter.pl'; |
91 |
our $branchcode = $input->param('branchcode'); |
93 |
our $branchcode = $input->param('branchcode'); |
92 |
my $code = $input->param('code'); |
94 |
my $code = $input->param('code'); |
93 |
my $module = $input->param('module'); |
95 |
my $module = $input->param('module') || ''; |
94 |
my $content = $input->param('content'); |
96 |
my $content = $input->param('content'); |
95 |
my $op = $input->param('op') || ''; |
97 |
my $op = $input->param('op') || ''; |
96 |
my $dbh = C4::Context->dbh; |
98 |
my $dbh = C4::Context->dbh; |
Lines 134-140
elsif ( $op eq 'delete_confirm' ) {
Link Here
|
134 |
delete_confirm($branchcode, $module, $code); |
136 |
delete_confirm($branchcode, $module, $code); |
135 |
} |
137 |
} |
136 |
elsif ( $op eq 'delete_confirmed' ) { |
138 |
elsif ( $op eq 'delete_confirmed' ) { |
137 |
delete_confirmed($branchcode, $module, $code); |
139 |
my $mtt = $input->param('message_transport_type'); |
|
|
140 |
delete_confirmed($branchcode, $module, $code, $mtt); |
138 |
$op = q{}; # next operation is to return to default screen |
141 |
$op = q{}; # next operation is to return to default screen |
139 |
} |
142 |
} |
140 |
else { |
143 |
else { |
Lines 151-175
if ($op) {
Link Here
|
151 |
output_html_with_http_headers $input, $cookie, $template->output; |
154 |
output_html_with_http_headers $input, $cookie, $template->output; |
152 |
|
155 |
|
153 |
sub add_form { |
156 |
sub add_form { |
154 |
my ($branchcode,$module, $code ) = @_; |
157 |
my ( $branchcode,$module, $code ) = @_; |
155 |
|
158 |
|
156 |
my $letter; |
159 |
my $letters; |
157 |
# if code has been passed we can identify letter and its an update action |
160 |
# if code has been passed we can identify letter and its an update action |
158 |
if ($code) { |
161 |
if ($code) { |
159 |
$letter = letter_exists($branchcode,$module, $code); |
162 |
$letters = get_letters($branchcode,$module, $code, '*'); |
160 |
} |
163 |
} |
161 |
if ($letter) { |
164 |
|
162 |
$template->param( modify => 1 ); |
165 |
my $message_transport_types = GetMessageTransportTypes(); |
163 |
$template->param( code => $letter->{code} ); |
166 |
my @letter_loop; |
|
|
167 |
if ($letters) { |
168 |
my $first_flag = 1; |
169 |
for my $mtt ( @$message_transport_types ) { |
170 |
$mtt = $mtt->{message_transport_type}; |
171 |
if ( $first_flag ) { |
172 |
$template->param( |
173 |
modify => 1, |
174 |
code => $code, |
175 |
branchcode => $branchcode, |
176 |
name => $letters->{$mtt}{name}, |
177 |
); |
178 |
$first_flag = 0; |
179 |
} |
180 |
|
181 |
push @letter_loop, { |
182 |
message_transport_type => $mtt, |
183 |
is_html => $letters->{$mtt}{is_html}, |
184 |
title => $letters->{$mtt}{title}, |
185 |
content => $letters->{$mtt}{content}, |
186 |
}; |
187 |
} |
164 |
} |
188 |
} |
165 |
else { # initialize the new fields |
189 |
else { # initialize the new fields |
166 |
$letter = { |
190 |
for my $mtt ( @$message_transport_types ) { |
|
|
191 |
$mtt = $mtt->{message_transport_type}; |
192 |
push @letter_loop, { |
193 |
message_transport_type => $mtt, |
194 |
} |
195 |
} |
196 |
$template->param( |
167 |
branchcode => $branchcode, |
197 |
branchcode => $branchcode, |
168 |
module => $module, |
198 |
module => $module, |
169 |
}; |
199 |
); |
170 |
$template->param( adding => 1 ); |
200 |
$template->param( adding => 1 ); |
171 |
} |
201 |
} |
172 |
|
202 |
|
|
|
203 |
$template->param( |
204 |
letters => \@letter_loop, |
205 |
); |
206 |
|
173 |
my $field_selection; |
207 |
my $field_selection; |
174 |
push @{$field_selection}, add_fields('branches'); |
208 |
push @{$field_selection}, add_fields('branches'); |
175 |
if ($module eq 'reserves') { |
209 |
if ($module eq 'reserves') { |
Lines 210-222
sub add_form {
Link Here
|
210 |
} |
244 |
} |
211 |
|
245 |
|
212 |
$template->param( |
246 |
$template->param( |
213 |
branchcode => $letter->{branchcode}, |
|
|
214 |
name => $letter->{name}, |
215 |
is_html => $letter->{is_html}, |
216 |
title => $letter->{title}, |
217 |
content => $letter->{content}, |
218 |
module => $module, |
247 |
module => $module, |
219 |
$module => 1, |
|
|
220 |
branchloop => _branchloop($branchcode), |
248 |
branchloop => _branchloop($branchcode), |
221 |
SQLfieldname => $field_selection, |
249 |
SQLfieldname => $field_selection, |
222 |
); |
250 |
); |
Lines 231-252
sub add_validate {
Link Here
|
231 |
my $oldmodule = $input->param('oldmodule'); |
259 |
my $oldmodule = $input->param('oldmodule'); |
232 |
my $code = $input->param('code'); |
260 |
my $code = $input->param('code'); |
233 |
my $name = $input->param('name'); |
261 |
my $name = $input->param('name'); |
234 |
my $is_html = $input->param('is_html'); |
262 |
my @mtt = $input->param('message_transport_type'); |
235 |
my $title = $input->param('title'); |
263 |
my @title = $input->param('title'); |
236 |
my $content = $input->param('content'); |
264 |
my @content = $input->param('content'); |
237 |
if (letter_exists($oldbranchcode,$oldmodule, $code)) { |
265 |
for my $mtt ( @mtt ) { |
238 |
$dbh->do( |
266 |
my $is_html = $input->param("is_html_$mtt"); |
239 |
q{UPDATE letter SET branchcode = ?, module = ?, name = ?, is_html = ?, title = ?, content = ? WHERE branchcode = ? AND module = ? AND code = ?}, |
267 |
my $title = shift @title; |
240 |
undef, |
268 |
my $content = shift @content; |
241 |
$branchcode, $module, $name, $is_html || 0, $title, $content, |
269 |
my $letter = get_letters($oldbranchcode,$oldmodule, $code, $mtt); |
242 |
$oldbranchcode, $oldmodule, $code |
270 |
unless ( $title and $content ) { |
243 |
); |
271 |
delete_confirmed( $oldbranchcode, $oldmodule, $code, $mtt ); |
244 |
} else { |
272 |
next; |
245 |
$dbh->do( |
273 |
} |
246 |
q{INSERT INTO letter (branchcode,module,code,name,is_html,title,content) VALUES (?,?,?,?,?,?,?)}, |
274 |
if ( exists $letter->{$mtt} ) { |
247 |
undef, |
275 |
$dbh->do( |
248 |
$branchcode, $module, $code, $name, $is_html || 0, $title, $content |
276 |
q{ |
249 |
); |
277 |
UPDATE letter |
|
|
278 |
SET branchcode = ?, module = ?, name = ?, is_html = ?, title = ?, content = ? |
279 |
WHERE branchcode = ? AND module = ? AND code = ? AND message_transport_type = ? |
280 |
}, |
281 |
undef, |
282 |
$branchcode, $module, $name, $is_html || 0, $title, $content, |
283 |
$oldbranchcode, $oldmodule, $code, $mtt |
284 |
); |
285 |
} else { |
286 |
$dbh->do( |
287 |
q{INSERT INTO letter (branchcode,module,code,name,is_html,title,content,message_transport_type) VALUES (?,?,?,?,?,?,?,?)}, |
288 |
undef, |
289 |
$branchcode, $module, $code, $name, $is_html || 0, $title, $content, $mtt |
290 |
); |
291 |
} |
250 |
} |
292 |
} |
251 |
# set up default display |
293 |
# set up default display |
252 |
default_display($branchcode); |
294 |
default_display($branchcode); |
Lines 259-289
sub add_copy {
Link Here
|
259 |
my $module = $input->param('module'); |
301 |
my $module = $input->param('module'); |
260 |
my $code = $input->param('code'); |
302 |
my $code = $input->param('code'); |
261 |
|
303 |
|
262 |
return if letter_exists($branchcode,$module, $code); |
304 |
return if keys %{ get_letters($branchcode,$module, $code, '*') }; |
263 |
|
305 |
|
264 |
my $old_letter = letter_exists($oldbranchcode,$module, $code); |
306 |
my $old_letters = get_letters($oldbranchcode,$module, $code, '*'); |
265 |
|
307 |
|
266 |
$dbh->do( |
308 |
my $message_transport_types = GetMessageTransportTypes(); |
267 |
q{INSERT INTO letter (branchcode,module,code,name,is_html,title,content) VALUES (?,?,?,?,?,?,?)}, |
309 |
for my $mtt ( @$message_transport_types ) { |
268 |
undef, |
310 |
my $mtt = $mtt->{message_transport_type}; |
269 |
$branchcode, $module, $code, $old_letter->{name}, $old_letter->{is_html}, $old_letter->{title}, $old_letter->{content} |
311 |
next unless exists $old_letters->{$mtt}; |
270 |
); |
312 |
my $old_letter = $old_letters->{$mtt}; |
|
|
313 |
|
314 |
$dbh->do( |
315 |
q{INSERT INTO letter (branchcode,module,code,name,is_html,title,content,message_transport_type) VALUES (?,?,?,?,?,?,?,?)}, |
316 |
undef, |
317 |
$branchcode, $module, $code, $old_letter->{name}, $old_letter->{is_html}, $old_letter->{title}, $old_letter->{content}, $mtt |
318 |
); |
319 |
} |
271 |
} |
320 |
} |
272 |
|
321 |
|
273 |
sub delete_confirm { |
322 |
sub delete_confirm { |
274 |
my ($branchcode, $module, $code) = @_; |
323 |
my ($branchcode, $module, $code) = @_; |
275 |
my $dbh = C4::Context->dbh; |
324 |
my $dbh = C4::Context->dbh; |
276 |
my $letter = letter_exists($branchcode, $module, $code); |
325 |
my $letter = get_letters($branchcode, $module, $code, '*'); |
277 |
$template->param( branchcode => $branchcode, branchname => GetBranchName($branchcode) ); |
326 |
my @values = values %$letter; |
278 |
$template->param( code => $code ); |
327 |
$template->param( |
279 |
$template->param( module => $module); |
328 |
branchcode => $branchcode, |
280 |
$template->param( name => $letter->{name}); |
329 |
branchname => GetBranchName($branchcode), |
|
|
330 |
code => $code, |
331 |
module => $module, |
332 |
name => $values[0]->{name}, |
333 |
); |
281 |
return; |
334 |
return; |
282 |
} |
335 |
} |
283 |
|
336 |
|
284 |
sub delete_confirmed { |
337 |
sub delete_confirmed { |
285 |
my ($branchcode, $module, $code) = @_; |
338 |
my ($branchcode, $module, $code, $mtt) = @_; |
286 |
my ($sql, $args) = _letter_from_where($branchcode, $module, $code); |
339 |
my ($sql, $args) = _letter_from_where($branchcode, $module, $code, $mtt); |
287 |
my $dbh = C4::Context->dbh; |
340 |
my $dbh = C4::Context->dbh; |
288 |
$dbh->do("DELETE $sql", undef, @$args); |
341 |
$dbh->do("DELETE $sql", undef, @$args); |
289 |
# setup default display for screen |
342 |
# setup default display for screen |
Lines 300-306
sub retrieve_letters {
Link Here
|
300 |
my ($sql, @where, @args); |
353 |
my ($sql, @where, @args); |
301 |
$sql = "SELECT branchcode, module, code, name, branchname |
354 |
$sql = "SELECT branchcode, module, code, name, branchname |
302 |
FROM letter |
355 |
FROM letter |
303 |
LEFT OUTER JOIN branches USING (branchcode)"; |
356 |
LEFT OUTER JOIN branches USING (branchcode) |
|
|
357 |
"; |
304 |
if ($searchstring && $searchstring=~m/(\S+)/) { |
358 |
if ($searchstring && $searchstring=~m/(\S+)/) { |
305 |
$searchstring = $1 . q{%}; |
359 |
$searchstring = $1 . q{%}; |
306 |
push @where, 'code LIKE ?'; |
360 |
push @where, 'code LIKE ?'; |
Lines 316-323
sub retrieve_letters {
Link Here
|
316 |
} |
370 |
} |
317 |
|
371 |
|
318 |
$sql .= " WHERE ".join(" AND ", @where) if @where; |
372 |
$sql .= " WHERE ".join(" AND ", @where) if @where; |
|
|
373 |
$sql .= " GROUP BY branchcode,module,code"; |
319 |
$sql .= " ORDER BY module, code, branchcode"; |
374 |
$sql .= " ORDER BY module, code, branchcode"; |
320 |
# use Data::Dumper; die Dumper($sql, \@args); |
375 |
|
321 |
return $dbh->selectall_arrayref($sql, { Slice => {} }, @args); |
376 |
return $dbh->selectall_arrayref($sql, { Slice => {} }, @args); |
322 |
} |
377 |
} |
323 |
|
378 |
|