From e009c4b46da26c281852a3487a07a051ff549f18 Mon Sep 17 00:00:00 2001 From: Aleisha Amohia Date: Thu, 22 Jul 2021 14:59:10 +1200 Subject: [PATCH] Bug 3150: (follow-up) Reformat notices, don't send if no sender email This patch reformats the notices so that the is_html flag is disabled and the notices display better It also throws an error if trying to send an email but the logged in borrower has no valid email address. Signed-off-by: David Nind --- basket/sendbasket.pl | 7 +- .../bug_3150_-_add_LIST_and_CART_notices.perl | 264 ++++-------------- .../mysql/en/mandatory/sample_notices.yml | 257 +++-------------- opac/opac-sendbasket.pl | 5 +- opac/opac-sendshelf.pl | 7 +- virtualshelves/sendshelf.pl | 6 +- 6 files changed, 108 insertions(+), 438 deletions(-) diff --git a/basket/sendbasket.pl b/basket/sendbasket.pl index 70fdf4550c..e15a9a1067 100755 --- a/basket/sendbasket.pl +++ b/basket/sendbasket.pl @@ -56,7 +56,8 @@ if ( $email_add ) { token => scalar $query->param('csrf_token'), }); - my $patron = Koha:::Patrons->find( $borrowernumber ); + my $patron = Koha::Patrons->find( $borrowernumber ); + my $user_email = $patron->first_valid_email_address; my $comment = $query->param('comment'); @@ -71,6 +72,9 @@ if ( $email_add ) { if ( !defined $iso2709 ) { carp "Error sending mail: empty basket"; $template->param( error => 1 ); + } elsif ( !defined $user_email or $user_email eq '' ) { + carp "Error sending mail: sender's email address is invalid"; + $template->param( error => 1 ); } else { my %loops = ( biblio => \@bibs, @@ -98,7 +102,6 @@ if ( $email_add ) { content => Encode::encode("UTF-8", $iso2709), }; - my $user_email = $patron->first_valid_email_address || C4::Context->preference('KohaAdminEmailAddress'); C4::Letters::EnqueueLetter({ letter => $letter, message_transport_type => 'email', diff --git a/installer/data/mysql/atomicupdate/bug_3150_-_add_LIST_and_CART_notices.perl b/installer/data/mysql/atomicupdate/bug_3150_-_add_LIST_and_CART_notices.perl index 4360c8f4bf..efa111b2b7 100644 --- a/installer/data/mysql/atomicupdate/bug_3150_-_add_LIST_and_CART_notices.perl +++ b/installer/data/mysql/atomicupdate/bug_3150_-_add_LIST_and_CART_notices.perl @@ -1,222 +1,54 @@ $DBversion = 'XXX'; if( CheckVersion( $DBversion ) ) { $dbh->do(q{ INSERT IGNORE INTO letter (module, code, branchcode, name, is_html, title, content, message_transport_type, lang) VALUES - ('catalog','LIST','','Send list',1,'Your list: [% listname | html %]',"

Hi,

-

[% borrower.firstname | html %] [% borrower.surname | html %] sent you a list from our online catalog called: [% listname | html %].

-

Please note that the attached file is a MARC bibliographic records file which can be imported into personal bibliographic software like EndNote, Reference Manager or ProCite.

-
-

[% comment | html %]

-
-
    -[% FOREACH biblio IN biblios %] -
  1. - - [% biblio.title | html %] - [% IF ( biblio.subtitle ) %] - [% FOREACH subtitle IN biblio.subtitle.split(' | ') %] - [% subtitle | html %] - [% END %] - [% END %] - [% biblio.part_number | html %] [% biblio.part_name | html %] - -

    - [% IF ( biblio.author || biblio.get_authors_from_MARC ) %] - Author(s): [% IF ( biblio.author ) %][% biblio.author | html %][% END %] - [% IF ( biblio.get_authors_from_MARC ) %] - [% IF ( biblio.author ) %]; [% END %] - [% FOREACH author IN biblio.get_authors_from_MARC %] - [% FOREACH subfield IN author.MARCAUTHOR_SUBFIELDS_LOOP %] - [% subfield.separator | html %][% subfield.value | html %] - [% END %] - [% UNLESS ( loop.last ) %];[% END %] - [% END %] - [% END %] -
    - [% END %] - [% SET biblioitem = biblio.biblioitem %] - [% IF ( biblioitem.isbn ) %] - - ISBN: [% FOREACH isbn IN biblioitem.isbn %] - [% isbn | html %] - [% UNLESS ( loop.last ) %]; [% END %] - [% END %] -
    - [% END %] - [% IF ( biblioitem.publishercode ) %] - - Published by: [% biblioitem.publishercode | html %] - [% IF ( biblioitem.publicationyear ) %] - in [% biblioitem.publicationyear | html %] - [% END %] - [% IF ( biblioitem.pages ) %] - , [% biblioitem.pages | html %] - [% END %] -
    - [% END %] - [% IF ( biblio.seriestitle ) %] - - Collection: [% biblio.seriestitle | html %] -
    - [% END %] - [% IF ( biblio.copyrightdate ) %] - - Copyright year: [% biblio.copyrightdate | html %] -
    - [% END %] - [% IF ( biblio.notes ) %] - - Notes: [% biblio.notes | html %] -
    - [% END %] - [% IF ( biblio.unititle ) %] - - Unified title: [% biblio.unititle | html %] -
    - [% END %] - [% IF ( biblio.serial ) %] - - Serial: [% biblio.serial | html %] -
    - [% END %] - [% IF ( biblioitem.lccn ) %] - - LCCN: [% biblioitem.lccn | html %] -
    - [% END %] - [% IF ( biblioitem.url ) %] - - URL: [% biblioitem.url | html %] - - [% END %] -

    - [% SET OPACBaseURL = Koha.Preference('OPACBaseURL') %] - [% IF ( OPACBaseURL ) %] -

    In online catalog: [% OPACBaseURL | html %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% biblio.biblionumber | html %]

    - [% END %] - [% IF ( biblio.items.count > 0 ) %] -

    Items: -

      - [% FOREACH item IN biblio.items %]
    • - [% item.holding_branch.branchname | html %] - [% item.location | html %] - [% IF item.itemcallnumber %]([% item.itemcallnumber | html %])[% END %] - [% item.barcode | html %] -
    • [% END %] -
    -

    - [% END %] -
    -
  2. -[% END %] -
", 'email','default' ), - ('catalog','CART','','Send cart',1,'Your cart',"

Hi,

-

[% borrower.firstname | html %] [% borrower.surname | html %] sent you a cart from our online catalog.

-

Please note that the attached file is a MARC bibliographic records file which can be imported into personal bibliographic software like EndNote, Reference Manager or ProCite.

-
-

[% comment | html %]

-
-
    -[% FOREACH biblio IN biblios %] -
  1. - - [% biblio.title | html %] - [% IF ( biblio.subtitle ) %] - [% FOREACH subtitle IN biblio.subtitle.split(' | ') %] - [% subtitle | html %] - [% END %] - [% END %] - [% biblio.part_number | html %] [% biblio.part_name | html %] - -

    - [% IF ( biblio.author || biblio.get_authors_from_MARC ) %] - Author(s): [% IF ( biblio.author ) %][% biblio.author | html %][% END %] - [% IF ( biblio.get_authors_from_MARC ) %] - [% IF ( biblio.author ) %]; [% END %] - [% FOREACH author IN biblio.get_authors_from_MARC %] - [% FOREACH subfield IN author.MARCAUTHOR_SUBFIELDS_LOOP %] - [% subfield.separator | html %][% subfield.value | html %] - [% END %] - [% UNLESS ( loop.last ) %];[% END %] - [% END %] - [% END %] -
    - [% END %] - [% SET biblioitem = biblio.biblioitem %] - [% IF ( biblioitem.isbn ) %] - - ISBN: [% FOREACH isbn IN biblioitem.isbn %] - [% isbn | html %] - [% UNLESS ( loop.last ) %]; [% END %] - [% END %] -
    - [% END %] - [% IF ( biblioitem.publishercode ) %] - - Published by: [% biblioitem.publishercode | html %] - [% IF ( biblioitem.publicationyear ) %] - in [% biblioitem.publicationyear | html %] - [% END %] - [% IF ( biblioitem.pages ) %] - , [% biblioitem.pages | html %] - [% END %] -
    - [% END %] - [% IF ( biblio.seriestitle ) %] - - Collection: [% biblio.seriestitle | html %] -
    - [% END %] - [% IF ( biblio.copyrightdate ) %] - - Copyright year: [% biblio.copyrightdate | html %] -
    - [% END %] - [% IF ( biblio.notes ) %] - - Notes: [% biblio.notes | html %] -
    - [% END %] - [% IF ( biblio.unititle ) %] - - Unified title: [% biblio.unititle | html %] -
    - [% END %] - [% IF ( biblio.serial ) %] - - Serial: [% biblio.serial | html %] -
    - [% END %] - [% IF ( biblioitem.lccn ) %] - - LCCN: [% biblioitem.lccn | html %] -
    - [% END %] - [% IF ( biblioitem.url ) %] - - URL: [% biblioitem.url | html %] - - [% END %] -

    - [% SET OPACBaseURL = Koha.Preference('OPACBaseURL') %] - [% IF ( OPACBaseURL ) %] -

    In online catalog: [% OPACBaseURL | html %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% biblio.biblionumber | html %]

    - [% END %] - [% IF ( biblio.items.count > 0 ) %] -

    Items: -

      - [% FOREACH item IN biblio.items %]
    • - [% item.holding_branch.branchname | html %] - [% item.location | html %] - [% IF item.itemcallnumber %]([% item.itemcallnumber | html %])[% END %] - [% item.barcode | html %] -
    • [% END %] -
    -

    - [% END %] -
    -
  2. -[% END %] -
",'email','default') }); +('catalog','LIST','','Send list',0,'Your list: [% listname | html %]',"Hi, +[% borrower.firstname | html %] [% borrower.surname | html %] sent you a list from our online catalog called: [% listname | html %]. +Please note that the attached file is a MARC bibliographic records file which can be imported into personal bibliographic software like EndNote, Reference Manager or ProCite. +
[% comment | html %]
+
    [% FOREACH biblio IN biblios %]
  1. + [% biblio.title | html %] + [% IF ( biblio.subtitle ) %][% FOREACH subtitle IN biblio.subtitle.split(' | ') %][% subtitle | html %][% END %][% END %] + [% biblio.part_number | html %] [% biblio.part_name | html %] + [% IF ( biblio.author || biblio.get_marc_authors ) %]Author(s): [% IF ( biblio.author ) %][% biblio.author | html %][% END %][% IF ( biblio.get_marc_authors ) %][% IF ( biblio.author ) %]; [% END %][% FOREACH author IN biblio.get_marc_authors %][% FOREACH subfield IN author.MARCAUTHOR_SUBFIELDS_LOOP %][% subfield.separator | html %][% subfield.value | html %][% END %][% UNLESS ( loop.last ) %];[% END %][% END %][% END %][% END %] + [% SET biblioitem = biblio.biblioitem %][% IF ( biblioitem.isbn ) %]ISBN: [% FOREACH isbn IN biblioitem.isbn %][% isbn | html %][% UNLESS ( loop.last ) %]; [% END %][% END %][% END %] + [% IF ( biblioitem.publishercode ) %]Published by: [% biblioitem.publishercode | html %][% IF ( biblioitem.publicationyear ) %] in [% biblioitem.publicationyear | html %][% END %][% IF ( biblioitem.pages ) %], [% biblioitem.pages | html %][% END %][% END %] + [% IF ( biblio.seriestitle ) %]Collection: [% biblio.seriestitle | html %][% END %] + [% IF ( biblio.copyrightdate ) %]Copyright year: [% biblio.copyrightdate | html %][% END %] + [% IF ( biblio.notes ) %]Notes: [% biblio.notes | html %][% END %] + [% IF ( biblio.unititle ) %]Unified title: [% biblio.unititle | html %][% END %] + [% IF ( biblio.serial ) %]Serial: [% biblio.serial | html %][% END %] + [% IF ( biblioitem.lccn ) %]LCCN: [% biblioitem.lccn | html %][% END %] + [% IF ( biblioitem.url ) %]URL: [% biblioitem.url | html %][% END %] + [% SET OPACBaseURL = Koha.Preference('OPACBaseURL') %][% IF ( OPACBaseURL ) %]In online catalog: [% OPACBaseURL | html %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% biblio.biblionumber | html %][% END %] + [% IF ( biblio.items.count > 0 ) %]Items:
      [% FOREACH item IN biblio.items %]
    • [% item.holding_branch.branchname | html %] + [% item.location | html %] + [% IF item.itemcallnumber %]([% item.itemcallnumber | html %])[% END %] + [% item.barcode | html %]
    • [% END %]
    [% END %] +
  2. [% END %]
", 'email','default' ), + ('catalog','CART','','Send cart',0,'Your cart',"Hi, +[% borrower.firstname | html %] [% borrower.surname | html %] sent you a cart from our online catalog. +Please note that the attached file is a MARC bibliographic records file which can be imported into personal bibliographic software like EndNote, Reference Manager or ProCite. +
[% comment | html %]
+
    [% FOREACH biblio IN biblios %]
  1. + [% biblio.title | html %] + [% IF ( biblio.subtitle ) %][% FOREACH subtitle IN biblio.subtitle.split(' | ') %][% subtitle | html %][% END %][% END %] + [% biblio.part_number | html %] [% biblio.part_name | html %] + [% IF ( biblio.author || biblio.get_marc_authors ) %]Author(s): [% IF ( biblio.author ) %][% biblio.author | html %][% END %][% IF ( biblio.get_marc_authors ) %][% IF ( biblio.author ) %]; [% END %][% FOREACH author IN biblio.get_marc_authors %][% FOREACH subfield IN author.MARCAUTHOR_SUBFIELDS_LOOP %][% subfield.separator | html %][% subfield.value | html %][% END %][% UNLESS ( loop.last ) %];[% END %][% END %][% END %][% END %] + [% SET biblioitem = biblio.biblioitem %][% IF ( biblioitem.isbn ) %]ISBN: [% FOREACH isbn IN biblioitem.isbn %][% isbn | html %][% UNLESS ( loop.last ) %]; [% END %][% END %][% END %] + [% IF ( biblioitem.publishercode ) %]Published by: [% biblioitem.publishercode | html %][% IF ( biblioitem.publicationyear ) %] in [% biblioitem.publicationyear | html %][% END %][% IF ( biblioitem.pages ) %], [% biblioitem.pages | html %][% END %][% END %] + [% IF ( biblio.seriestitle ) %]Collection: [% biblio.seriestitle | html %][% END %] + [% IF ( biblio.copyrightdate ) %]Copyright year: [% biblio.copyrightdate | html %][% END %] + [% IF ( biblio.notes ) %]Notes: [% biblio.notes | html %][% END %] + [% IF ( biblio.unititle ) %]Unified title: [% biblio.unititle | html %][% END %] + [% IF ( biblio.serial ) %]Serial: [% biblio.serial | html %][% END %] + [% IF ( biblioitem.lccn ) %]LCCN: [% biblioitem.lccn | html %][% END %] + [% IF ( biblioitem.url ) %]URL: [% biblioitem.url | html %][% END %] + [% SET OPACBaseURL = Koha.Preference('OPACBaseURL') %][% IF ( OPACBaseURL ) %]In online catalog: [% OPACBaseURL | html %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% biblio.biblionumber | html %][% END %] + [% IF ( biblio.items.count > 0 ) %]Items:
      [% FOREACH item IN biblio.items %]
    • [% item.holding_branch.branchname | html %] + [% item.location | html %] + [% IF item.itemcallnumber %]([% item.itemcallnumber | html %])[% END %] + [% item.barcode | html %]
    • [% END %]
    [% END %] +
  2. [% END %]
",'email','default') }); NewVersion( $DBversion, 3150, 'Add LIST and CART notices' ); } diff --git a/installer/data/mysql/en/mandatory/sample_notices.yml b/installer/data/mysql/en/mandatory/sample_notices.yml index 3176305ee7..5104c4af7b 100644 --- a/installer/data/mysql/en/mandatory/sample_notices.yml +++ b/installer/data/mysql/en/mandatory/sample_notices.yml @@ -1703,234 +1703,59 @@ tables: code: LIST branchcode: "" name: "Send list" - is_html: 1 + is_html: 0 title: "Your list: [% listname | html %]" message_transport_type: email lang: default content: - - "

Hi,

" - - "

[% borrower.firstname | html %] [% borrower.surname | html %] sent you a list from our online catalog called: [% listname | html %].

" - - "

Please note that the attached file is a MARC bibliographic records file which can be imported into personal bibliographic software like EndNote, Reference Manager or ProCite.

" - - "
" - - "

[% comment | html %]

" - - "
" - - "
    " - - "[% FOREACH biblio IN biblios %]" - - "
  1. " - - "" + - "Hi," + - "[% borrower.firstname | html %] [% borrower.surname | html %] sent you a list from our online catalog called: [% listname | html %]." + - "Please note that the attached file is a MARC bibliographic records file which can be imported into personal bibliographic software like EndNote, Reference Manager or ProCite." + - "
    [% comment | html %]
    " + - "
      [% FOREACH biblio IN biblios %]
    1. " - "[% biblio.title | html %]" - - "[% IF ( biblio.subtitle ) %]" - - "[% FOREACH subtitle IN biblio.subtitle.split(' | ') %]" - - "[% subtitle | html %]" - - "[% END %]" - - "[% END %]" - - "[% biblio.part_number | html %] [% biblio.part_name | html %]" - - "" - - "

      " - - "[% IF ( biblio.author || biblio.get_authors_from_MARC ) %]" - - "Author(s): [% IF ( biblio.author ) %][% biblio.author | html %][% END %]" - - "[% IF ( biblio.get_authors_from_MARC ) %]" - - "[% IF ( biblio.author ) %]; [% END %]" - - "[% FOREACH author IN biblio.get_authors_from_MARC %]" - - "[% FOREACH subfield IN author.MARCAUTHOR_SUBFIELDS_LOOP %]" - - "[% subfield.separator | html %][% subfield.value | html %]" - - "[% END %]" - - "[% UNLESS ( loop.last ) %];[% END %]" - - "[% END %]" - - "[% END %]" - - "
      " - - "[% END %]" - - "[% SET biblioitem = biblio.biblioitem %]" - - "[% IF ( biblioitem.isbn ) %]" - - "" - - "ISBN: [% FOREACH isbn IN biblioitem.isbn %]" - - "[% isbn | html %]" - - "[% UNLESS ( loop.last ) %]; [% END %]" - - "[% END %]" - - "
      " - - "[% END %]" - - "[% IF ( biblioitem.publishercode ) %]" - - "" - - "Published by: [% biblioitem.publishercode | html %]" - - "[% IF ( biblioitem.publicationyear ) %]" - - "in [% biblioitem.publicationyear | html %]" - - "[% END %]" - - "[% IF ( biblioitem.pages ) %]" - - ", [% biblioitem.pages | html %]" - - "[% END %]" - - "
      " - - "[% END %]" - - "[% IF ( biblio.seriestitle ) %]" - - "" - - "Collection: [% biblio.seriestitle | html %]" - - "
      " - - "[% END %]" - - "[% IF ( biblio.copyrightdate ) %]" - - "" - - "Copyright year: [% biblio.copyrightdate | html %]" - - "
      " - - "[% END %]" - - "[% IF ( biblio.notes ) %]" - - "" - - "Notes: [% biblio.notes | html %]" - - "
      " - - "[% END %]" - - "[% IF ( biblio.unititle ) %]" - - "" - - "Unified title: [% biblio.unititle | html %]" - - "
      " - - "[% END %]" - - "[% IF ( biblio.serial ) %]" - - "" - - "Serial: [% biblio.serial | html %]" - - "
      " - - "[% END %]" - - "[% IF ( biblioitem.lccn ) %]" - - "" - - "LCCN: [% biblioitem.lccn | html %]" - - "
      " - - "[% END %]" - - "[% IF ( biblioitem.url ) %]" - - "" - - "URL: [% biblioitem.url | html %]" - - "" - - "[% END %]" - - "

      " - - "[% SET OPACBaseURL = Koha.Preference('OPACBaseURL') %]" - - "[% IF ( OPACBaseURL ) %]" - - "

      In online catalog: [% OPACBaseURL | html %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% biblio.biblionumber | html %]

      " - - "[% END %]" - - "[% IF ( biblio.items.count > 0 ) %]" - - "

      Items:" - - "

        " - - "[% FOREACH item IN biblio.items %]
      • " - - "[% item.holding_branch.branchname | html %]" - - "[% item.location | html %]" - - "[% IF item.itemcallnumber %]([% item.itemcallnumber | html %])[% END %]" - - "[% item.barcode | html %]" - - "
      • [% END %]" - - "
      " - - "

      " - - "[% END %]" - - "
      " - - "
    2. " - - "[% END %]" - - "
    " +- "[% IF ( biblio.subtitle ) %][% FOREACH subtitle IN biblio.subtitle.split(' | ') %][% subtitle | html %][% END %][% END %][% biblio.part_number | html %] [% biblio.part_name | html %]" + - "[% IF ( biblio.author || biblio.get_marc_authors ) %]Author(s): [% IF ( biblio.author ) %][% biblio.author | html %][% END %][% IF ( biblio.get_marc_authors ) %][% IF ( biblio.author ) %]; [% END %][% FOREACH author IN biblio.get_marc_authors %][% FOREACH subfield IN author.MARCAUTHOR_SUBFIELDS_LOOP %][% subfield.separator | html %][% subfield.value | html %][% END %][% UNLESS ( loop.last ) %];[% END %][% END %][% END %][% END %]" + - "[% SET biblioitem = biblio.biblioitem %][% IF ( biblioitem.isbn ) %]ISBN: [% FOREACH isbn IN biblioitem.isbn %][% isbn | html %][% UNLESS ( loop.last ) %]; [% END %][% END %][% END %]" + - "[% IF ( biblioitem.publishercode ) %]Published by: [% biblioitem.publishercode | html %][% IF ( biblioitem.publicationyear ) %] in [% biblioitem.publicationyear | html %][% END %][% IF ( biblioitem.pages ) %], [% biblioitem.pages | html %][% END %][% END %]" + - "[% IF ( biblio.seriestitle ) %]Collection: [% biblio.seriestitle | html %][% END %]" + - "[% IF ( biblio.copyrightdate ) %]Copyright year: [% biblio.copyrightdate | html %][% END %]" + - "[% IF ( biblio.notes ) %]Notes: [% biblio.notes | html %][% END %]" + - "[% IF ( biblio.unititle ) %]Unified title: [% biblio.unititle | html %][% END %]" + - "[% IF ( biblio.serial ) %]Serial: [% biblio.serial | html %][% END %]" + - "[% IF ( biblioitem.lccn ) %]LCCN: [% biblioitem.lccn | html %][% END %]" + - "[% IF ( biblioitem.url ) %]URL: [% biblioitem.url | html %][% END %]" + - "[% SET OPACBaseURL = Koha.Preference('OPACBaseURL') %][% IF ( OPACBaseURL ) %]In online catalog: [% OPACBaseURL | html %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% biblio.biblionumber | html %][% END %]" + - "[% IF ( biblio.items.count > 0 ) %]Items:
      [% FOREACH item IN biblio.items %]
    • [% item.holding_branch.branchname | html %][% item.location | html %][% IF item.itemcallnumber %]([% item.itemcallnumber | html %])[% END %][% item.barcode | html %]
    • [% END %]
    [% END %]" + - "
  2. [% END %]
" - module: catalog code: CART branchcode: "" name: "Send cart" - is_html: 1 + is_html: 0 title: "Your cart" message_transport_type: email lang: default content: - - "

Hi,

" - - "

[% borrower.firstname | html %] [% borrower.surname | html %] sent you a cart from our online catalog.

" - - "

Please note that the attached file is a MARC bibliographic records file which can be imported into personal bibliographic software like EndNote, Reference Manager or ProCite.

" - - "
" - - "

[% comment | html %]

" - - "
" - - "
    " - - "[% FOREACH biblio IN biblios %]" - - "
  1. " - - "" + - "Hi," + - "[% borrower.firstname | html %] [% borrower.surname | html %] sent you a cart from our online catalog." + - "[% borrower.firstname | html %] [% borrower.surname | html %] sent you a list from our online catalog called: [% listname | html %]." + - "Please note that the attached file is a MARC bibliographic records file which can be imported into personal bibliographic software like EndNote, Reference Manager or ProCite." + - "
    [% comment | html %]
    " + - "
      [% FOREACH biblio IN biblios %]
    1. " - "[% biblio.title | html %]" - - "[% IF ( biblio.subtitle ) %]" - - "[% FOREACH subtitle IN biblio.subtitle.split(' | ') %]" - - "[% subtitle | html %]" - - "[% END %]" - - "[% END %]" - - "[% biblio.part_number | html %] [% biblio.part_name | html %]" - - "" - - "

      " - - "[% IF ( biblio.author || biblio.get_authors_from_MARC ) %]" - - "Author(s): [% IF ( biblio.author ) %][% biblio.author | html %][% END %]" - - "[% IF ( biblio.get_authors_from_MARC ) %]" - - "[% IF ( biblio.author ) %]; [% END %]" - - "[% FOREACH author IN biblio.get_authors_from_MARC %]" - - "[% FOREACH subfield IN author.MARCAUTHOR_SUBFIELDS_LOOP %]" - - "[% subfield.separator | html %][% subfield.value | html %]" - - "[% END %]" - - "[% UNLESS ( loop.last ) %];[% END %]" - - "[% END %]" - - "[% END %]" - - "
      " - - "[% END %]" - - "[% SET biblioitem = biblio.biblioitem %]" - - "[% IF ( biblioitem.isbn ) %]" - - "" - - "ISBN: [% FOREACH isbn IN biblioitem.isbn %]" - - "[% isbn | html %]" - - "[% UNLESS ( loop.last ) %]; [% END %]" - - "[% END %]" - - "
      " - - "[% END %]" - - "[% IF ( biblioitem.publishercode ) %]" - - "" - - "Published by: [% biblioitem.publishercode | html %]" - - "[% IF ( biblioitem.publicationyear ) %]" - - "in [% biblioitem.publicationyear | html %]" - - "[% END %]" - - "[% IF ( biblioitem.pages ) %]" - - ", [% biblioitem.pages | html %]" - - "[% END %]" - - "
      " - - "[% END %]" - - "[% IF ( biblio.seriestitle ) %]" - - "" - - "Collection: [% biblio.seriestitle | html %]" - - "
      " - - "[% END %]" - - "[% IF ( biblio.copyrightdate ) %]" - - "" - - "Copyright year: [% biblio.copyrightdate | html %]" - - "
      " - - "[% END %]" - - "[% IF ( biblio.notes ) %]" - - "" - - "Notes: [% biblio.notes | html %]" - - "
      " - - "[% END %]" - - "[% IF ( biblio.unititle ) %]" - - "" - - "Unified title: [% biblio.unititle | html %]" - - "
      " - - "[% END %]" - - "[% IF ( biblio.serial ) %]" - - "" - - "Serial: [% biblio.serial | html %]" - - "
      " - - "[% END %]" - - "[% IF ( biblioitem.lccn ) %]" - - "" - - "LCCN: [% biblioitem.lccn | html %]" - - "
      " - - "[% END %]" - - "[% IF ( biblioitem.url ) %]" - - "" - - "URL: [% biblioitem.url | html %]" - - "" - - "[% END %]" - - "

      " - - "[% SET OPACBaseURL = Koha.Preference('OPACBaseURL') %]" - - "[% IF ( OPACBaseURL ) %]" - - "

      In online catalog: [% OPACBaseURL | html %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% biblio.biblionumber | html %]

      " - - "[% END %]" - - "[% IF ( biblio.items.count > 0 ) %]" - - "

      Items:" - - "

        " - - "[% FOREACH item IN biblio.items %]
      • " - - "[% item.holding_branch.branchname | html %]" - - "[% item.location | html %]" - - "[% IF item.itemcallnumber %]([% item.itemcallnumber | html %])[% END %]" - - "[% item.barcode | html %]" - - "
      • [% END %]" - - "
      " - - "

      " - - "[% END %]" - - "
      " - - "
    2. " - - "[% END %]" - - "
    " +- "[% IF ( biblio.subtitle ) %][% FOREACH subtitle IN biblio.subtitle.split(' | ') %][% subtitle | html %][% END %][% END %][% biblio.part_number | html %] [% biblio.part_name | html %]" + - "[% IF ( biblio.author || biblio.get_marc_authors ) %]Author(s): [% IF ( biblio.author ) %][% biblio.author | html %][% END %][% IF ( biblio.get_marc_authors ) %][% IF ( biblio.author ) %]; [% END %][% FOREACH author IN biblio.get_marc_authors %][% FOREACH subfield IN author.MARCAUTHOR_SUBFIELDS_LOOP %][% subfield.separator | html %][% subfield.value | html %][% END %][% UNLESS ( loop.last ) %];[% END %][% END %][% END %][% END %]" + - "[% SET biblioitem = biblio.biblioitem %][% IF ( biblioitem.isbn ) %]ISBN: [% FOREACH isbn IN biblioitem.isbn %][% isbn | html %][% UNLESS ( loop.last ) %]; [% END %][% END %][% END %]" + - "[% IF ( biblioitem.publishercode ) %]Published by: [% biblioitem.publishercode | html %][% IF ( biblioitem.publicationyear ) %] in [% biblioitem.publicationyear | html %][% END %][% IF ( biblioitem.pages ) %], [% biblioitem.pages | html %][% END %][% END %]" + - "[% IF ( biblio.seriestitle ) %]Collection: [% biblio.seriestitle | html %][% END %]" + - "[% IF ( biblio.copyrightdate ) %]Copyright year: [% biblio.copyrightdate | html %][% END %]" + - "[% IF ( biblio.notes ) %]Notes: [% biblio.notes | html %][% END %]" + - "[% IF ( biblio.unititle ) %]Unified title: [% biblio.unititle | html %][% END %]" + - "[% IF ( biblio.serial ) %]Serial: [% biblio.serial | html %][% END %]" + - "[% IF ( biblioitem.lccn ) %]LCCN: [% biblioitem.lccn | html %][% END %]" + - "[% IF ( biblioitem.url ) %]URL: [% biblioitem.url | html %][% END %]" + - "[% SET OPACBaseURL = Koha.Preference('OPACBaseURL') %][% IF ( OPACBaseURL ) %]In online catalog: [% OPACBaseURL | html %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% biblio.biblionumber | html %][% END %]" + - "[% IF ( biblio.items.count > 0 ) %]Items:
      [% FOREACH item IN biblio.items %]
    • [% item.holding_branch.branchname | html %][% item.location | html %][% IF item.itemcallnumber %]([% item.itemcallnumber | html %])[% END %][% item.barcode | html %]
    • [% END %]
    [% END %]" + - "
  2. [% END %]
" diff --git a/opac/opac-sendbasket.pl b/opac/opac-sendbasket.pl index 238116f6cf..5b5b79fb71 100755 --- a/opac/opac-sendbasket.pl +++ b/opac/opac-sendbasket.pl @@ -58,6 +58,7 @@ if ( $email_add ) { }); my $patron = Koha::Patrons->find( $borrowernumber ); + my $user_email = $patron->first_valid_email_address; my $comment = $query->param('comment'); @@ -72,6 +73,9 @@ if ( $email_add ) { if ( !defined $iso2709 ) { carp "Error sending mail: empty basket"; $template->param( error => 1 ); + } elsif ( !defined $user_email or $user_email eq '' ) { + carp "Error sending mail: sender's email address is invalid"; + $template->param( error => 1 ); } else { my %loops = ( biblio => \@bibs, @@ -99,7 +103,6 @@ if ( $email_add ) { content => Encode::encode("UTF-8", $iso2709), }; - my $user_email = $patron->first_valid_email_address || C4::Context->preference('KohaAdminEmailAddress'); C4::Letters::EnqueueLetter({ letter => $letter, message_transport_type => 'email', diff --git a/opac/opac-sendshelf.pl b/opac/opac-sendshelf.pl index 7bb0d904a2..acbe9a6465 100755 --- a/opac/opac-sendshelf.pl +++ b/opac/opac-sendshelf.pl @@ -73,7 +73,7 @@ if ( $shelf and $shelf->can_be_viewed( $borrowernumber ) ) { ); my $patron = Koha::Patrons->find( $borrowernumber ); - + my $user_email = $patron->first_valid_email_address; my $shelf = Koha::Virtualshelves->find( $shelfid ); my $contents = $shelf->get_contents; my $iso2709; @@ -87,6 +87,9 @@ if ( $shelf and $shelf->can_be_viewed( $borrowernumber ) ) { if ( !defined $iso2709 ) { carp "Error sending mail: empty list"; $template->param( error => 1 ); + } elsif ( !defined $user_email or $user_email eq '' ) { + carp "Error sending mail: sender's email address is invalid"; + $template->param( error => 1 ); } else { my %loops = ( biblio => \@biblionumbers, @@ -120,7 +123,7 @@ if ( $shelf and $shelf->can_be_viewed( $borrowernumber ) ) { message_transport_type => 'email', borrowernumber => $patron->borrowernumber, to_address => $email, - reply_address => $patron->first_valid_email_address, + reply_address => $user_email, attachments => [$attachment], }); diff --git a/virtualshelves/sendshelf.pl b/virtualshelves/sendshelf.pl index 6808dc4206..f147af25a9 100755 --- a/virtualshelves/sendshelf.pl +++ b/virtualshelves/sendshelf.pl @@ -70,6 +70,7 @@ if ($to_address) { ); my $patron = Koha:::Patrons->find( $borrowernumber ); + my $user_email = $patron->first_valid_email_address; my $contents = $shelf->get_contents; my @biblionumbers; my $iso2709; @@ -83,6 +84,9 @@ if ($to_address) { if ( !defined $iso2709 ) { carp "Error sending mail: empty basket"; $template->param( error => 1 ); + } elsif ( !defined $user_email or $user_email eq '' ) { + carp "Error sending mail: sender's email address is invalid"; + $template->param( error => 1 ); } else { my %loops = ( biblio => \@biblionumbers, @@ -116,7 +120,7 @@ if ($to_address) { message_transport_type => 'email', borrowernumber => $patron->borrowernumber, to_address => $to_address, - reply_address => $patron->first_valid_email_address, + reply_address => $user_email, attachments => [$attachment], }); -- 2.30.2