Lines 22-27
use warnings;
Link Here
|
22 |
|
22 |
|
23 |
use MIME::Lite; |
23 |
use MIME::Lite; |
24 |
use Mail::Sendmail; |
24 |
use Mail::Sendmail; |
|
|
25 |
use Date::Calc qw( Add_Delta_Days ); |
26 |
use Encode; |
27 |
use Carp; |
28 |
use Template; |
29 |
use Module::Load::Conditional qw(can_load); |
25 |
|
30 |
|
26 |
use C4::Koha qw(GetAuthorisedValueByCode); |
31 |
use C4::Koha qw(GetAuthorisedValueByCode); |
27 |
use C4::Members; |
32 |
use C4::Members; |
Lines 33-43
use C4::Debug;
Link Here
|
33 |
use Koha::DateUtils; |
38 |
use Koha::DateUtils; |
34 |
use Koha::SMS::Providers; |
39 |
use Koha::SMS::Providers; |
35 |
|
40 |
|
36 |
use Date::Calc qw( Add_Delta_Days ); |
|
|
37 |
use Encode; |
38 |
use Carp; |
39 |
use Koha::Email; |
41 |
use Koha::Email; |
40 |
use Koha::DateUtils qw( format_sqldatetime ); |
42 |
use Koha::DateUtils qw( format_sqldatetime dt_from_string ); |
41 |
|
43 |
|
42 |
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); |
44 |
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); |
43 |
|
45 |
|
Lines 717-724
sub GetPreparedLetter {
Link Here
|
717 |
} |
719 |
} |
718 |
} |
720 |
} |
719 |
|
721 |
|
|
|
722 |
$letter->{content} = _process_tt( |
723 |
{ |
724 |
content => $letter->{content}, |
725 |
tables => $tables, |
726 |
} |
727 |
); |
728 |
|
720 |
$letter->{content} =~ s/<<\S*>>//go; #remove any stragglers |
729 |
$letter->{content} =~ s/<<\S*>>//go; #remove any stragglers |
721 |
# $letter->{content} =~ s/<<[^>]*>>//go; |
|
|
722 |
|
730 |
|
723 |
return $letter; |
731 |
return $letter; |
724 |
} |
732 |
} |
Lines 1326-1331
sub _set_message_status {
Link Here
|
1326 |
return $result; |
1334 |
return $result; |
1327 |
} |
1335 |
} |
1328 |
|
1336 |
|
|
|
1337 |
sub _process_tt { |
1338 |
my ( $params ) = @_; |
1339 |
|
1340 |
my $content = $params->{content}; |
1341 |
my $tables = $params->{tables}; |
1342 |
|
1343 |
my $use_template_cache = C4::Context->config('template_cache_dir') && defined $ENV{GATEWAY_INTERFACE}; |
1344 |
my $template = Template->new( |
1345 |
{ |
1346 |
EVAL_PERL => 1, |
1347 |
ABSOLUTE => 1, |
1348 |
PLUGIN_BASE => 'Koha::Template::Plugin', |
1349 |
COMPILE_EXT => $use_template_cache ? '.ttc' : '', |
1350 |
COMPILE_DIR => $use_template_cache ? C4::Context->config('template_cache_dir') : '', |
1351 |
FILTERS => {}, |
1352 |
ENCODING => 'UTF-8', |
1353 |
} |
1354 |
) or die Template->error(); |
1355 |
|
1356 |
my $tt_params = _get_tt_params( $tables ); |
1357 |
|
1358 |
my $output; |
1359 |
$template->process( \$content, $tt_params, \$output ) || croak "ERROR PROCESSING TEMPLATE: " . $template->error(); |
1360 |
|
1361 |
return $output; |
1362 |
} |
1363 |
|
1364 |
sub _get_tt_params { |
1365 |
my ($tables) = @_; |
1366 |
|
1367 |
my $params; |
1368 |
|
1369 |
my $config = { |
1370 |
biblio => { |
1371 |
module => 'Koha::Biblios', |
1372 |
singular => 'biblio', |
1373 |
plural => 'biblios', |
1374 |
pk => 'biblionumber', |
1375 |
}, |
1376 |
borrowers => { #FIXME: Bug 15548 will require this to be updated |
1377 |
module => 'Koha::Borrowers', # to Koha::Patrons |
1378 |
singular => 'borrower', |
1379 |
plural => 'borrowers', |
1380 |
pk => 'borrowernumber', |
1381 |
}, |
1382 |
branches => { |
1383 |
module => 'Koha::Libraries', |
1384 |
singular => 'branch', |
1385 |
plural => 'branches', |
1386 |
pk => 'branchcode', |
1387 |
}, |
1388 |
items => { |
1389 |
module => 'Koha::Items', |
1390 |
singular => 'item', |
1391 |
plural => 'items', |
1392 |
pk => 'itemnumber', |
1393 |
}, |
1394 |
opac_news => { |
1395 |
module => 'Koha::News', |
1396 |
singular => 'news', |
1397 |
plural => 'news', |
1398 |
pk => 'idnew', |
1399 |
}, |
1400 |
reserves => { |
1401 |
module => 'Koha::Holds', |
1402 |
singular => 'hold', |
1403 |
plural => 'holds', |
1404 |
fk => [ 'borrowernumber', 'biblionumber' ], |
1405 |
}, |
1406 |
serial => { |
1407 |
module => 'Koha::Serials', |
1408 |
singular => 'serial', |
1409 |
plural => 'serials', |
1410 |
pk => 'serialid', |
1411 |
}, |
1412 |
subscription => { |
1413 |
module => 'Koha::Subscriptions', |
1414 |
singular => 'subscription', |
1415 |
plural => 'subscriptions', |
1416 |
pk => 'subscriptionid', |
1417 |
}, |
1418 |
suggestions => { |
1419 |
module => 'Koha::Suggestions', |
1420 |
singular => 'suggestion', |
1421 |
plural => 'suggestions', |
1422 |
pk => 'suggestionid', |
1423 |
}, |
1424 |
issues => { |
1425 |
module => 'Koha::Checkouts', |
1426 |
singular => 'checkout', |
1427 |
plural => 'checkouts', |
1428 |
fk => 'itemnumber', |
1429 |
}, |
1430 |
borrower_modifications => { |
1431 |
module => 'Koha::Borrower::Modifications', |
1432 |
singular => 'patron_modification', |
1433 |
plural => 'patron_modifications', |
1434 |
fk => 'verification_token', |
1435 |
}, |
1436 |
}; |
1437 |
|
1438 |
foreach my $table ( keys %$tables ) { |
1439 |
next unless $config->{$table}; |
1440 |
|
1441 |
my $ref = ref( $tables->{$table} ) || q{}; |
1442 |
my $module = $config->{$table}->{module}; |
1443 |
|
1444 |
if ( can_load( modules => { $module => undef } ) ) { |
1445 |
my $pk = $config->{$table}->{pk}; |
1446 |
my $fk = $config->{$table}->{fk}; |
1447 |
|
1448 |
if ( $ref eq q{} || $ref eq 'HASH' ) { |
1449 |
my $id = ref $ref eq 'HASH' ? $tables->{$table}->{$pk} : $tables->{$table}; |
1450 |
my $object; |
1451 |
if ( $fk ) { # Using a foreign key for lookup |
1452 |
$object = $module->search( { $fk => $id } )->next(); |
1453 |
} else { # using the table's primary key for lookup |
1454 |
$object = $module->find($id); |
1455 |
} |
1456 |
$params->{ $config->{$table}->{singular} } = $object; |
1457 |
} |
1458 |
else { # $ref eq 'ARRAY' |
1459 |
my $object; |
1460 |
if ( @{ $tables->{$table} } == 1 ) { # Param is a single key |
1461 |
$object = $module->search( { $pk => $tables->{$table} } )->next(); |
1462 |
} |
1463 |
else { # Params are mutliple foreign keys |
1464 |
my @values = @{ $tables->{$table} }; |
1465 |
my @keys = @{ $config->{$table}->{fk} }; |
1466 |
my %params = map { $_ => shift(@values) } @keys; |
1467 |
$object = $module->search( \%params )->next(); |
1468 |
} |
1469 |
$params->{ $config->{$table}->{singular} } = $object; |
1470 |
} |
1471 |
} |
1472 |
else { |
1473 |
croak "ERROR LOADING MODULE $module: $Module::Load::Conditional::ERROR"; |
1474 |
} |
1475 |
} |
1476 |
|
1477 |
$params->{today} = dt_from_string(); |
1478 |
|
1479 |
return $params; |
1480 |
} |
1481 |
|
1329 |
|
1482 |
|
1330 |
1; |
1483 |
1; |
1331 |
__END__ |
1484 |
__END__ |