Merge branch 'bug_9875' into 3.12-master
[koha.git] / opac / opac-userupdate.pl
index aa5858a..3b90498 100755 (executable)
@@ -22,6 +22,7 @@ use warnings;
 
 use CGI;
 use Mail::Sendmail;
+use Encode;
 
 use C4::Auth;    # checkauth, getborrowernumber.
 use C4::Context;
@@ -40,7 +41,7 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
         template_name   => "opac-userupdate.tmpl",
         query           => $query,
         type            => "opac",
-        authnotrequired => ( C4::Context->preference("OpacPublic") ? 1 : 0 ),
+        authnotrequired => 0,
         flagsrequired   => { borrow => 1 },
         debug           => 1,
     }
@@ -48,6 +49,7 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
 
 # get borrower information ....
 my ( $borr ) = GetMemberDetails( $borrowernumber );
+my ( $patronemail ) = GetFirstValidEmailAddress($borrowernumber);
 my $lib = GetBranchDetail($borr->{'branchcode'});
 
 # handle the new information....
@@ -80,14 +82,17 @@ if ( !$updateemailaddress || $updateemailaddress eq '' ) {
     exit;
 }
 
+if ( !$patronemail || $patronemail eq '' ) {
+       $patronemail = $updateemailaddress;
+};
+
 if ( $query->param('modify') ) {
 
     # get all the fields:
     my $message = <<"EOF";
-Patron $borr->{'cardnumber'}
+Patron $borr->{'cardnumber'} has requested to change her/his personal details.
+Please check these new details and make the changes to these fields:
 
-has requested to change her/his personal details.
-Please check these new details and make the changes:
 EOF
 
     my $streetnumber = $borr->{'streetnumber'} || '';
@@ -98,7 +103,7 @@ EOF
     my $B_address2 = $borr->{'B_address2'} || '';
 
     foreach my $field (@fields) {
-        my $newfield = $query->param($field) || '';
+        my $newfield = decode('utf-8',$query->param($field)) || '';
         my $borrowerfield = '';
         if($borr->{$field}) {
             $borrowerfield = $borr->{$field};
@@ -108,19 +113,20 @@ EOF
            $borrowerfield  = format_date( $borr->{'dateofbirth'} ) || '';
         }
 
-        if($borrowerfield eq $newfield) {
-            $message .= "$field : $borrowerfield  -->  $newfield\n";
-        } else {
-            $message .= uc($field) . " : $borrowerfield  -->  $newfield\n";
+        if($borrowerfield ne $newfield) {
+            $message .= $field . " : $borrowerfield  -->  $newfield\n";
         }
     }
+
+    $message .= "\nEdit this patron's record: http://".C4::Context->preference('staffClientBaseURL ')."/cgi-bin/koha/members/memberentry.pl?op=modify&borrowernumber=".$borr->{'borrowernumber'}."&categorycode=".$borr->{'categorycode'} if C4::Context->preference('staffClientBaseURL ');
+
     $message .= "\n\nThanks,\nKoha\n\n";
     my %mail = (
         To      => $updateemailaddress,
-        From    => $updateemailaddress,
+        From    => $patronemail,
         Subject => "User Request for update of Record.",
-        Message => $message,
-        'Content-Type' => 'text/plain; charset="utf8"',
+        Message => encode('utf-8', $message), # Mail::Sendmail doesn't like wide characters
+        'Content-Type' => 'text/plain; charset="utf-8"',
     );
 
     if ( sendmail %mail ) {
@@ -136,9 +142,6 @@ EOF
     }
 }
 
-$borr->{'dateenrolled'} = format_date( $borr->{'dateenrolled'} );
-$borr->{'dateexpiry'}   = format_date( $borr->{'dateexpiry'} );
-$borr->{'dateofbirth'}  = format_date( $borr->{'dateofbirth'} );
 $borr->{'ethnicity'}    = fixEthnicity( $borr->{'ethnicity'} );
 $borr->{'branchname'}   = GetBranchName($borr->{'branchcode'});
 
@@ -154,17 +157,26 @@ my $checkin_prefs  = C4::Members::Messaging::GetMessagingPreferences({
     borrowernumber => $borrowernumber,
     message_name   => 'Item Checkout'
 });
-for (@{ $checkin_prefs->{transports} }) {
+for ( keys %{ $checkin_prefs->{transports} }) {
     $borr->{"items_returned_$_"} = 1;
 }
 my $checkout_prefs = C4::Members::Messaging::GetMessagingPreferences({
     borrowernumber => $borrowernumber,
     message_name   => 'Item Check-in'
 });
-for (@{ $checkout_prefs->{transports} }) {
+for ( keys %{ $checkout_prefs->{transports} }) {
     $borr->{"items_borrowed_$_"} = 1;
 }
 
+if (C4::Context->preference('OPACpatronimages')) {
+    my ($image, $dberror) = GetPatronImage($borr->{'cardnumber'});
+    if ($image) {
+        $template->param(
+            display_patron_image => 1
+        );
+    }
+}
+
 my @bordat;
 $bordat[0] = $borr;