Bug 17578: GetMemberDetails - Remove flags
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Mon, 7 Nov 2016 16:52:54 +0000 (16:52 +0000)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 16 Dec 2016 13:12:42 +0000 (13:12 +0000)
Same as authflags, a flags key is set containing all the patron flags.
It is only used in a few places and it's better to call
C4::Members::patronflags when we need it.

Test plan:
Look at the diff and confirm that the change make sense
Use git grep to confirm we do not use the flags somewhere else.

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
C4/Circulation.pm
C4/ILSDI/Services.pm
C4/Members.pm
C4/SIP/ILS/Patron.pm
circ/circulation.pl
members/deletemem.pl
members/member-flags.pl

index b505031..2191fc9 100644 (file)
@@ -725,14 +725,16 @@ sub CanBookBeIssued {
         ModDateLastSeen( $item->{'itemnumber'} );
         return( { STATS => 1 }, {});
     }
-    if ( ref $borrower->{flags} ) {
-        if ( $borrower->{flags}->{GNA} ) {
+
+    my $flags = C4::Members::patronflags( $borrower );
+    if ( ref $flags ) {
+        if ( $flags->{GNA} ) {
             $issuingimpossible{GNA} = 1;
         }
-        if ( $borrower->{flags}->{'LOST'} ) {
+        if ( $flags->{'LOST'} ) {
             $issuingimpossible{CARD_LOST} = 1;
         }
-        if ( $borrower->{flags}->{'DBARRED'} ) {
+        if ( $flags->{'DBARRED'} ) {
             $issuingimpossible{DEBARRED} = 1;
         }
     }
index 7c5e5f3..33d15cb 100644 (file)
@@ -361,14 +361,14 @@ sub GetPatronInfo {
 
     # Get Member details
     my $borrowernumber = $cgi->param('patron_id');
-    my $borrower = GetMemberDetails( $borrowernumber );
+    my $borrower = GetMember( borrowernumber => $borrowernumber );
     return { code => 'PatronNotFound' } unless $$borrower{borrowernumber};
 
     # Cleaning the borrower hashref
-    $borrower->{'charges'}    = $borrower->{'flags'}->{'CHARGES'}->{'amount'};
+    my $flags = C4::Members::patronflags( $borrower );
+    $borrower->{'charges'}    = $flags>{'CHARGES'}->{'amount'};
     my $library = Koha::Libraries->find( $borrower->{branchcode} );
     $borrower->{'branchname'} = $library ? $library->branchname : '';
-    delete $borrower->{'flags'};
     delete $borrower->{'userid'};
     delete $borrower->{'password'};
 
index c53b5d7..c7fac6f 100644 (file)
@@ -133,18 +133,6 @@ number.
 
 C<$borrower> is a reference-to-hash whose keys are the fields of the
 borrowers table in the Koha database. In addition,
-C<$borrower-E<gt>{flags}> is a hash giving more detailed information
-about the patron. Its keys act as flags :
-
-    if $borrower->{flags}->{LOST} {
-        # Patron's card was reported lost
-    }
-
-If the state of a flag means that the patron should not be
-allowed to borrow any more books, then it will have a C<noissues> key
-with a true value.
-
-See patronflags for more details.
 
 =cut
 
@@ -185,9 +173,6 @@ sub GetMemberDetails {
     my $borrower = $sth->fetchrow_hashref;
     return unless $borrower;
 
-    my $flags = patronflags( $borrower);
-    $borrower->{'flags'}     = $flags;
-
     $borrower->{'is_expired'} = 0;
     $borrower->{'is_expired'} = 1 if
       defined($borrower->{dateexpiry}) &&
@@ -496,7 +481,6 @@ sub ModMember {
     my $schema = Koha::Database->new()->schema;
     my @columns = $schema->source('Borrower')->columns;
     my $new_borrower = { map { join(' ', @columns) =~ /$_/ ? ( $_ => $data{$_} ) : () } keys(%data) };
-    delete $new_borrower->{flags};
 
     $new_borrower->{dateofbirth}     ||= undef if exists $new_borrower->{dateofbirth};
     $new_borrower->{dateenrolled}    ||= undef if exists $new_borrower->{dateenrolled};
index 26ad963..59aedab 100644 (file)
@@ -40,9 +40,9 @@ sub new {
     $kp = GetMemberDetails($kp->{borrowernumber});
     $debug and warn "new Patron (GetMemberDetails): " . Dumper($kp);
     my $pw        = $kp->{password};
-    my $flags     = $kp->{flags};     # or warn "Warning: No flags from patron object for '$patron_id'";
-    my $debarred  = defined($kp->{flags}->{DBARRED});
-    $debug and warn sprintf("Debarred = %s : ", ($debarred||'undef')) . Dumper(%{$kp->{flags}});
+    my $flags     = C4::Members::patronflags( $kp );
+    my $debarred  = defined($flags->{DBARRED});
+    $debug and warn sprintf("Debarred = %s : ", ($debarred||'undef')) . Dumper(%$flags);
     my ($day, $month, $year) = (localtime)[3,4,5];
     my $today    = sprintf '%04d-%02d-%02d', $year+1900, $month+1, $day;
     my $expired  = ($today gt $kp->{dateexpiry}) ? 1 : 0;
index bc0ae4c..a7d8cfa 100755 (executable)
@@ -462,7 +462,7 @@ if ($borrowernumber) {
 }
 
 #title
-my $flags = $borrower->{'flags'};
+my $flags = $borrower ? C4::Members::patronflags( $borrower ) : {};
 foreach my $flag ( sort keys %$flags ) {
     $flags->{$flag}->{'message'} =~ s#\n#<br />#g;
     if ( $flags->{$flag}->{'noissues'} ) {
@@ -545,7 +545,7 @@ foreach my $flag ( sort keys %$flags ) {
     }
 }
 
-my $amountold = $borrower->{flags} ? $borrower->{flags}->{'CHARGES'}->{'message'} || 0 : 0;
+my $amountold = $flags ? $flags->{'CHARGES'}->{'message'} || 0 : 0;
 $amountold =~ s/^.*\$//;    # remove upto the $, if any
 
 my ( $total, $accts, $numaccts) = GetMemberAccountRecords( $borrowernumber );
index c764f35..15d1b29 100755 (executable)
@@ -77,8 +77,8 @@ if ( C4::Context->preference('NorwegianPatronDBEnable') && C4::Context->preferen
 my $issues = GetPendingIssues($member);     # FIXME: wasteful call when really, we only want the count
 my $countissues = scalar(@$issues);
 
-my ($bor)=GetMemberDetails($member,'');
-my $flags=$bor->{flags};
+my $bor = C4::Members::GetMember( borrowernumber => $member );
+my $flags = C4::Members::patronflags( $bor );
 my $userenv = C4::Context->userenv;
 
  
index 26fba76..7849760 100755 (executable)
@@ -86,7 +86,7 @@ if ($input->param('newflags')) {
     print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=$member");
 } else {
 
-    my $flags = $bor->{'flags'};
+    my $flags = C4::Members::patronflags( $bor );
     my $accessflags;
     my $dbh = C4::Context->dbh();
     # FIXME This needs to be improved to avoid doing the same query