Bug 18403: Use patron-title.inc when hidepatronname is used
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Wed, 5 Apr 2017 19:43:41 +0000 (16:43 -0300)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Mon, 12 Feb 2018 18:41:38 +0000 (15:41 -0300)
There is already a HidePatronName syspref to hide patron's information
on bibliographic
record detail pages and the hold list.

Test plan:
With the HidePatronName enabled, make sure the patron's information are
hidden from
the catalogue and hold list pages. If the logged in user is not allowed
to see the
patron's info, no link and no cardnumber will be displayed
With he HidePatronName disabled, make sure the patron's information are
displayed
if the logged in user is allowed to see the patron's info.

Technical note:
This patch improves the existing patron-title.inc include file to
display patron's
information. Using it everywhere patron's details are displayed will
permit to
homogenise the way they are displayed. The file takes now a patron
object (what
should be, in the future, the only way to use it), that way we can call
the new
method on it to know if patron's information can be shown by the logged
in used.

NOTE: I am not sure this syspref makes sense anymore. Should not we
remove it?

Signed-off-by: Signed-off-by: Jon McGowan <jon.mcgowan@ptfs-europe.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Koha/Hold.pm
catalogue/detail.pl
catalogue/moredetail.pl
koha-tmpl/intranet-tmpl/prog/en/includes/patron-title.inc
koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt
koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt
reserve/request.pl

index 84117a5..949770d 100644 (file)
@@ -305,6 +305,7 @@ Returns the related Koha::Patron object for this Hold
 
 =cut
 
+# FIXME Should be renamed with ->patron
 sub borrower {
     my ($self) = @_;
 
index 1359c0b..58d4511 100755 (executable)
@@ -253,11 +253,6 @@ foreach my $item (@items) {
         $itemfields{$_} = 1 if ( $item->{$_} );
     }
 
-    if (C4::Context->preference('HidePatronName')){
-        $item->{'hidepatronname'} = 1;
-    }
-
-
     # checking for holds
     my $item_object = Koha::Items->find( $item->{itemnumber} );
     my $holds = $item_object->current_holds;
@@ -265,15 +260,15 @@ foreach my $item (@items) {
         my $patron = Koha::Patrons->find( $first_hold->borrowernumber );
         $item->{backgroundcolor} = 'reserved';
         $item->{reservedate}     = $first_hold->reservedate;
-        $item->{ReservedForBorrowernumber}     = $first_hold->borrowernumber;
-        $item->{ReservedForSurname}     = $patron->surname;
-        $item->{ReservedForFirstname}   = $patron->firstname;
+        $item->{ReservedFor}     = $patron,
         $item->{ExpectedAtLibrary}      = $first_hold->branchcode;
-        $item->{Reservedcardnumber}     = $patron->cardnumber;
         # Check waiting status
         $item->{waitingdate} = $first_hold->waitingdate;
     }
 
+    if ( my $checkout = $item_object->checkout ) {
+        $item->{CheckedOutFor} = $checkout->patron;
+    }
 
        # Check the transit status
     my ( $transfertwhen, $transfertfrom, $transfertto ) = GetTransfers($item->{itemnumber});
index 5624240..c82e653 100755 (executable)
@@ -60,8 +60,6 @@ if($query->cookie("holdfor")){
     );
 }
 
-my $hidepatronname = C4::Context->preference("HidePatronName");
-
 # get variables
 
 my $biblionumber=$query->param('biblionumber');
@@ -186,14 +184,10 @@ foreach my $item (@items){
         $item->{'issue'}= 0;
     }
 
-    unless ($hidepatronname) {
-        if ( $item->{'borrowernumber'} ) {
-            my $curr_borrower = Koha::Patrons->find( $item->{borrowernumber} );
-            $item->{borrowerfirstname} = $curr_borrower->firstname;
-            $item->{borrowersurname} = $curr_borrower->surname;
-        }
+    if ( $item->{'borrowernumber'} ) {
+        my $curr_borrower = Koha::Patrons->find( $item->{borrowernumber} );
+        $item->{patron} = $curr_borrower;
     }
-
 }
 
 my $mss = Koha::MarcSubfieldStructures->search({ frameworkcode => $fw, kohafield => 'items.itemlost', authorised_value => { not => undef } });
@@ -224,7 +218,6 @@ $template->param(
     itemnumber          => $itemnumber,
     z3950_search_params => C4::Search::z3950_search_args(GetBiblioData($biblionumber)),
     subtitle            => $subtitle,
-    hidepatronname      => $hidepatronname,
 );
 $template->param(ONLY_ONE => 1) if ( $itemnumber && $showncount != @items );
 $template->{'VARS'}->{'searchid'} = $query->param('searchid');
index 6600032..355ef1b 100644 (file)
@@ -1,35 +1,75 @@
+[%- USE Koha -%]
+[%- USE Branches -%]
+[%- SET data = {} -%]
+[%- IF patron -%]
+    [%- SET data.category_type  = patron.category.category_type -%]
+    [%- SET data.surname        = patron.surname -%]
+    [%- SET data.othernames     = patron.othernames -%]
+    [%- SET data.firstname      = patron.firstname -%]
+    [%- SET data.cardnumber     = patron.cardnumber -%]
+    [%- SET data.borrowernumber = patron.borrowernumber -%]
+    [%- SET data.title          = patron.title -%]
+[%- ELSIF ( borrower.borrowernumber ) -%]
+    [%- SET data.category_type  = borrower.category_type -%]
+    [%- SET data.surname        = borrower.surname -%]
+    [%- SET data.othernames     = borrower.othernames -%]
+    [%- SET data.firstname      = borrower.firstname -%]
+    [%- SET data.cardnumber     = borrower.cardnumber -%]
+    [%- SET data.borrowernumber = borrower.borrowernumber -%]
+    [%- SET data.title          = borrower.title -%]
+[%- ELSIF ( borrowernumber ) -%]
+    [%- SET data.category_type  = category_type -%]
+    [%- SET data.surname        = surname -%]
+    [%- SET data.othernames     = othernames -%]
+    [%- SET data.firstname      = firstname -%]
+    [%- SET data.cardnumber     = cardnumber -%]
+    [%- SET data.borrowernumber = borrowernumber -%]
+    [%- SET data.title          = title -%]
+[%- END -%]
 [%# Parameter no_html - if 1, the html tags are NOT generated %]
-[%- IF no_html %]
-    [%- span_start = '' %]
-    [%- span_end   = '' %]
-[%- ELSE %]
-    [%- span_start = '<span class="patron-title">' %]
-    [%- span_end   = '</span>' %]
-[%- END %]
-[%- IF ( borrower.borrowernumber ) %]
-    [%- IF borrower.category_type == 'I' %]
-        [%- borrower.surname | html %] [% IF borrower.othernames %] ([% borrower.othernames | html %]) [% END %]
+[% IF data.title %]
+    [%- IF no_html %]
+        [%- span_start = '' %]
+        [%- span_end   = '' %]
     [%- ELSE %]
-        [%- IF invert_name %]
-            [%- IF borrower.title %][% span_start %][%- borrower.title | html %][% span_end %] [% END %][%- borrower.surname | html %], [% borrower.firstname | html %] [% IF borrower.othernames %] ([% borrower.othernames | html %]) [% END %]
-        [%- ELSE %]
-            [%- IF borrower.title %][% span_start %][%- borrower.title | html %][% span_end %] [% END %][%- borrower.firstname | html %] [% IF borrower.othernames %] ([% borrower.othernames | html %]) [% END %] [% borrower.surname | html %]
-        [%- END -%]
-    [%- END -%]
-    [%- IF ( borrower.cardnumber ) -%]
-        ([% borrower.cardnumber | html %])
+        [%- span_start = '<span class="patron-title">' %]
+        [%- span_end   = '</span>' %]
     [%- END %]
-[%- ELSIF ( borrowernumber ) %]
-    [%- IF category_type == 'I' %]
-        [%- surname | html %] [% IF othernames %] ([% othernames | html %]) [% END %]
-    [%- ELSE %]
-        [%- IF invert_name %]
-            [%- IF title %][% span_start %][%- title | html %][% span_end %] [% END %][%- surname | html %], [% firstname | html %] [% IF othernames %] ([% othernames | html %]) [% END %]
-        [%- ELSE %]
-            [%- IF title %][% span_start %][%- title | html %][% span_end %] [% END %][%- firstname | html %] [% IF othernames %] ([% othernames | html %]) [% END %] [% surname | html %]
-        [%- END %]
+    [%- SET data.title = span_start _ data.title _ span_end _ ' ' -%]
+[%- END -%]
+[%- SET display_patron_name = 1 -%]
+[%- SET display_cardnumber  = 1 -%]
+[%- IF hide_patron_infos_if_needed %] [%# Should only be set if patron is set -%]
+    [%- SET can_see_patron_infos = logged_in_user.can_see_patron_infos( patron ) -%]
+    [%- UNLESS can_see_patron_infos -%]
+        [%- SET display_patron_name = 0 -%]
+        [%- SET display_cardnumber  = 0 -%]
+    [%- ELSIF Koha.Preference('HidePatronName') -%]
+        [%- SET display_patron_name = 0 -%]
     [%- END -%]
-    [%- IF ( cardnumber ) -%]
-        ([% cardnumber | html %])
-    [%- END %]
+[%- END -%]
+[%- IF hide_patron_infos_if_needed AND ( display_patron_name OR display_cardnumber ) -%]
+    [%- IF link_to == 'circulation_reserves' %]<a href="/cgi-bin/koha/circ/circulation.pl?borrowernumber=[% data.borrowernumber %]#reserves">
+    [%- ELSE %]<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% data.borrowernumber %]">
+    [%- END -%]
+[%- END -%]
+[%- IF data.category_type == 'I' -%]
+    [%- UNLESS display_patron_name %][%- data.surname | html %] [% IF data.othernames %] [% END %]([% data.othernames | html %]) [% END -%]
+[%- ELSIF display_patron_name -%]
+    [%- IF invert_name -%]
+        [% data.title%][%- data.surname | html %], [% data.firstname | html %] [% IF data.othernames %] ([% data.othernames | html %]) [% END -%]
+    [%- ELSE -%]
+        [% data.title %][%- data.firstname | html %] [% IF data.othernames %] ([% data.othernames | html %]) [% END %] [% data.surname | html -%]
+    [%- END -%]
+    [%- IF display_cardnumber AND data.cardnumber %]([% data.cardnumber | html %])[% END -%]
+[%- ELSIF display_cardnumber -%]
+    [%- IF data.cardnumber -%][%# FIXME Cardnumber should always be defined, right? -%]
+        [%- data.cardnumber | html -%]
+    [%- END -%]
+[%- ELSE -%]
+    A patron from library [% Branches.GetName( patron.branchcode ) -%]
+[%- END -%]
+
+[%- IF hide_patron_infos_if_needed AND ( display_patron_name OR display_cardnumber ) -%]
+    </a>
 [%- END -%]
index e6f06ef..69f098c 100644 (file)
                     <td class="itemcallnumber">[% IF ( item.itemcallnumber ) %] [% item.itemcallnumber %][% END %]</td>
                     <td class="status">
 
-                        [% IF ( item.datedue ) %]
+                        [% IF item.CheckedOutFor %]
                           [% IF item.onsite_checkout %]
                             <span>Currently in local use
                           [% ELSE %]
                           [% END %]
                                 [% UNLESS ( item.NOTSAMEBRANCH ) %]
                                   [% IF item.onsite_checkout %]
-                                    by <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% item.borrowernumber %]">
+                                    by
                                   [% ELSE %]
-                                    to <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% item.borrowernumber %]">
+                                    to
                                   [% END %]
-                                        [% IF ( item.hidepatronname ) %]
-                                            [% item.cardnumber %]
-                                        [% ELSE %]
-                                            [% item.firstname %] [% item.surname %]
-                                        [% END %]
-                                    </a>
+                                  [% INCLUDE 'patron-title.inc' patron=item.CheckedOutFor hide_patron_infos_if_needed=1 %]
                                 [% END %]
                                 : due [% item.datedue %]
                             </span>
                                 Item-level hold (placed [% item.reservedate | $KohaDates %]) for delivery at [% Branches.GetName( item.ExpectedAtLibrary ) %].
                             [% END %]
                             [% IF ( canreservefromotherbranches ) %]
-                                Hold for: <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% item.ReservedForBorrowernumber %]">
-                                    [% IF ( item.hidepatronname ) %]
-                                        [% item.Reservedcardnumber %]
-                                    [% ELSE %]
-                                        [% item.ReservedForFirstname _ " " _ item.ReservedForSurname _ " (" _ item.Reservedcardnumber _ ")" %]
-                                    [% END %]
-                                </a>
+                                Hold for:
+                                [% INCLUDE 'patron-title.inc' patron=item.ReservedFor hide_patron_infos_if_needed=1 %]
                             [% END %]
                         [% END %]
                         [% UNLESS ( item.itemnotforloan || item.notforloan_per_itemtype || item.onloan || item.itemlost || item.withdrawn || item.damaged || item.transfertwhen || item.reservedate ) %]
index fe82128..7b1c873 100644 (file)
@@ -795,13 +795,7 @@ function checkMultiHold() {
     [% END %]
 
         <td>
-          <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% reserveloo.borrowernumber %]" >
-         [% IF ( reserveloo.hidename ) %]
-             [% reserveloo.cardnumber (reserveloo.borrowernumber) %]
-         [% ELSE %]
-             [% reserveloo.firstname %] [% reserveloo.surname %]
-         [% END %]
-         </a>
+          [% INCLUDE 'patron-title.inc' patron=reserveloo.patron hide_patron_infos_if_needed=1 %]
         </td>
         <td>[% reserveloo.notes %]</td>
         <td>[% reserveloo.date %]</td>
index 7a60b85..d66be33 100755 (executable)
@@ -572,19 +572,12 @@ foreach my $biblionumber (@biblionumbers) {
             }
         }
 
-        #     get borrowers reserve info
-        if ( C4::Context->preference('HidePatronName') ) {
-            $reserve{'hidename'}   = 1;
-            $reserve{'cardnumber'} = $res->borrower()->cardnumber();
-        }
         $reserve{'expirationdate'} = output_pref( { dt => dt_from_string( $res->expirationdate ), dateonly => 1 } )
           unless ( !defined( $res->expirationdate ) || $res->expirationdate eq '0000-00-00' );
         $reserve{'date'}           = output_pref( { dt => dt_from_string( $res->reservedate ), dateonly => 1 } );
         $reserve{'borrowernumber'} = $res->borrowernumber();
         $reserve{'biblionumber'}   = $res->biblionumber();
-        $reserve{'borrowernumber'} = $res->borrowernumber();
-        $reserve{'firstname'}      = $res->borrower()->firstname();
-        $reserve{'surname'}        = $res->borrower()->surname();
+        $reserve{'patron'}         = $res->borrower;
         $reserve{'notes'}          = $res->reservenotes();
         $reserve{'waiting_date'}   = $res->waitingdate();
         $reserve{'ccode'}          = $res->item() ? $res->item()->ccode() : undef;