|
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 |
|