From 06d911f1c5429e4da5a808e00866693f77d7761e 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 ++++----------------- .../data/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 7220544c35c..9f6191e346c 100755 --- a/basket/sendbasket.pl +++ b/basket/sendbasket.pl @@ -55,7 +55,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'); @@ -70,6 +71,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, @@ -97,7 +101,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 8b54049d85a..c42a1a9d0cb 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 %]
    • - [% Branches.GetName( item.holdingbranch ) | html %] - [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => 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 %]
    • - [% Branches.GetName( item.holdingbranch ) | html %] - [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => 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 %]
    • [% Branches.GetName( item.holdingbranch ) | html %] + [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => 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 %]
    • [% Branches.GetName( item.holdingbranch ) | html %] + [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => 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 24fd1d4f1d7..d4fd9d4b033 100644 --- a/installer/data/mysql/en/mandatory/sample_notices.yml +++ b/installer/data/mysql/en/mandatory/sample_notices.yml @@ -2116,234 +2116,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 %]
      • " - - "[% Branches.GetName( item.holdingbranch ) | html %]" - - "[% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => 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 %]
    • [% Branches.GetName( item.holdingbranch ) | html %][% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => 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 %]
      • " - - "[% Branches.GetName( item.holdingbranch ) | html %]" - - "[% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => 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 %]
    • [% Branches.GetName( item.holdingbranch ) | html %][% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => 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 99ca57ef1ba..f0e46684854 100755 --- a/opac/opac-sendbasket.pl +++ b/opac/opac-sendbasket.pl @@ -55,6 +55,7 @@ if ( $email_add ) { }); my $patron = Koha::Patrons->find( $borrowernumber ); + my $user_email = $patron->first_valid_email_address; my $comment = $query->param('comment'); @@ -68,6 +69,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, @@ -95,7 +99,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 a0b485c8467..7de8f5bba23 100755 --- a/opac/opac-sendshelf.pl +++ b/opac/opac-sendshelf.pl @@ -70,7 +70,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; @@ -84,6 +84,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, @@ -117,7 +120,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 25e5ac72f90..3e944c58c75 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.11.0