X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=C4%2FMembers.pm;h=2e59c916ca4ddb8d7d821de6ab93d77cfd3af9e3;hb=509d673f10bf8e03529602b922d1fab603457ee2;hp=6161ac9f3003f9258d697dfd3f3e7f8be81b5a34;hpb=49c35ba38eee7bf4880f9975c9b4a5bed5227cc4;p=srvgit diff --git a/C4/Members.pm b/C4/Members.pm index 6161ac9f30..2e59c916ca 100644 --- a/C4/Members.pm +++ b/C4/Members.pm @@ -38,90 +38,92 @@ use C4::NewsChannels; #get slip news use DateTime; use DateTime::Format::DateParse; use Koha::DateUtils; +use Text::Unaccent qw( unac_string ); our ($VERSION,@ISA,@EXPORT,@EXPORT_OK,$debug); BEGIN { - $VERSION = 3.02; - $debug = $ENV{DEBUG} || 0; - require Exporter; - @ISA = qw(Exporter); - #Get data - push @EXPORT, qw( - &Search - &GetMemberDetails + $VERSION = 3.07.00.049; + $debug = $ENV{DEBUG} || 0; + require Exporter; + @ISA = qw(Exporter); + #Get data + push @EXPORT, qw( + &Search + &GetMemberDetails &GetMemberRelatives - &GetMember + &GetMember - &GetGuarantees + &GetGuarantees - &GetMemberIssuesAndFines - &GetPendingIssues - &GetAllIssues + &GetMemberIssuesAndFines + &GetPendingIssues + &GetAllIssues - &get_institutions - &getzipnamecity - &getidcity + &get_institutions + &getzipnamecity + &getidcity - &GetFirstValidEmailAddress + &GetFirstValidEmailAddress - &GetAge - &GetCities - &GetRoadTypes - &GetRoadTypeDetails - &GetSortDetails - &GetTitles + &GetAge + &GetCities + &GetRoadTypes + &GetRoadTypeDetails + &GetSortDetails + &GetTitles - &GetPatronImage - &PutPatronImage - &RmPatronImage + &GetPatronImage + &PutPatronImage + &RmPatronImage - &GetHideLostItemsPreference + &GetHideLostItemsPreference - &IsMemberBlocked - &GetMemberAccountRecords - &GetBorNotifyAcctRecord + &IsMemberBlocked + &GetMemberAccountRecords + &GetBorNotifyAcctRecord - &GetborCatFromCatType - &GetBorrowercategory - &GetBorrowercategoryList + &GetborCatFromCatType + &GetBorrowercategory + GetBorrowerCategorycode + &GetBorrowercategoryList - &GetBorrowersWhoHaveNotBorrowedSince - &GetBorrowersWhoHaveNeverBorrowed - &GetBorrowersWithIssuesHistoryOlderThan + &GetBorrowersWhoHaveNotBorrowedSince + &GetBorrowersWhoHaveNeverBorrowed + &GetBorrowersWithIssuesHistoryOlderThan - &GetExpiryDate + &GetExpiryDate - &AddMessage - &DeleteMessage - &GetMessages - &GetMessagesCount + &AddMessage + &DeleteMessage + &GetMessages + &GetMessagesCount &IssueSlip - GetBorrowersWithEmail - ); + GetBorrowersWithEmail + ); - #Modify data - push @EXPORT, qw( - &ModMember - &changepassword + #Modify data + push @EXPORT, qw( + &ModMember + &changepassword &ModPrivacy - ); - - #Delete data - push @EXPORT, qw( - &DelMember - ); - - #Insert data - push @EXPORT, qw( - &AddMember - &add_member_orgs - &MoveMemberToDeleted - &ExtendMemberSubscriptionTo - ); - - #Check data + ); + + #Delete data + push @EXPORT, qw( + &DelMember + ); + + #Insert data + push @EXPORT, qw( + &AddMember + &add_member_orgs + &MoveMemberToDeleted + &ExtendMemberSubscriptionTo + ); + + #Check data push @EXPORT, qw( &checkuniquemember &checkuserpassword @@ -329,7 +331,7 @@ sub GetMemberDetails { $sth->execute($cardnumber); } else { - return undef; + return; } my $borrower = $sth->fetchrow_hashref; my ($amount) = GetMemberAccountRecords( $borrowernumber); @@ -581,7 +583,7 @@ sub GetMemberRelatives { $sth->execute($borrowernumber); my $data = $sth->fetchrow_arrayref(); push @glist, $data->[0] if $data->[0]; - my $guarantor = $data->[0] if $data->[0]; + my $guarantor = $data->[0] ? $data->[0] : undef; # Getting guarantees $query = "SELECT borrowernumber FROM borrowers WHERE guarantorid=?"; @@ -799,6 +801,7 @@ sub Generate_Userid { $firstname =~ s/[[:digit:][:space:][:blank:][:punct:][:cntrl:]]//g; $surname =~ s/[[:digit:][:space:][:blank:][:punct:][:cntrl:]]//g; $newuid = lc(($firstname)? "$firstname.$surname" : $surname); + $newuid = unac_string('utf-8',$newuid); $newuid .= $offset unless $offset == 0; $offset++; @@ -846,7 +849,7 @@ mode, to avoid database corruption. use vars qw( @weightings ); my @weightings = ( 8, 4, 6, 3, 5, 2, 1 ); -sub fixup_cardnumber ($) { +sub fixup_cardnumber { my ($cardnumber) = @_; my $autonumber_members = C4::Context->boolean_preference('autoMemberNum') || 0; @@ -997,7 +1000,6 @@ sub GetPendingIssues { # must avoid biblioitems.* to prevent large marc and marcxml fields from killing performance # FIXME: namespace collision: each table has "timestamp" fields. Which one is "timestamp" ? # FIXME: circ/ciculation.pl tries to sort by timestamp! - # FIXME: C4::Print::printslip tries to sort by timestamp! # FIXME: namespace collision: other collisions possible. # FIXME: most of this data isn't really being used by callers. my $query = @@ -1184,6 +1186,11 @@ sub GetBorNotifyAcctRecord { $sth->execute( $borrowernumber, $notifyid ); my $total = 0; while ( my $data = $sth->fetchrow_hashref ) { + if ( $data->{itemnumber} ) { + my $biblio = GetBiblioFromItemNumber( $data->{itemnumber} ); + $data->{biblionumber} = $biblio->{biblionumber}; + $data->{title} = $biblio->{title}; + } $acctlines[$numlines] = $data; $numlines++; $total += int(100 * $data->{'amountoutstanding'}); @@ -1409,10 +1416,6 @@ sub GetborCatFromCatType { Given the borrower's category code, the function returns the corresponding data hashref for a comprehensive information display. - $arrayref_hashref = &GetBorrowercategory; - -If no category code provided, the function returns all the categories. - =cut sub GetBorrowercategory { @@ -1433,6 +1436,26 @@ sub GetBorrowercategory { return; } # sub getborrowercategory + +=head2 GetBorrowerCategorycode + + $categorycode = &GetBorrowerCategoryCode( $borrowernumber ); + +Given the borrowernumber, the function returns the corresponding categorycode +=cut + +sub GetBorrowerCategorycode { + my ( $borrowernumber ) = @_; + my $dbh = C4::Context->dbh; + my $sth = $dbh->prepare( qq{ + SELECT categorycode + FROM borrowers + WHERE borrowernumber = ? + } ); + $sth->execute( $borrowernumber ); + return $sth->fetchrow; +} + =head2 GetBorrowercategoryList $arrayref_hashref = &GetBorrowercategoryList; @@ -2258,14 +2281,14 @@ sub IssueSlip { # return unless ( C4::Context->boolean_preference('printcirculationslips') ); - my $today = POSIX::strftime("%Y-%m-%d", localtime); + my $now = POSIX::strftime("%Y-%m-%d", localtime); my $issueslist = GetPendingIssues($borrowernumber); foreach my $it (@$issueslist){ - if ($it->{'issuedate'} eq $today) { - $it->{'today'} = 1; + if ((substr $it->{'issuedate'}, 0, 10) eq $now) { + $it->{'now'} = 1; } - elsif ($it->{'date_due'} le $today) { + elsif ((substr $it->{'date_due'}, 0, 10) le $now) { $it->{'overdue'} = 1; } @@ -2281,7 +2304,7 @@ sub IssueSlip { 'biblio' => $_, 'items' => $_, 'issues' => $_, - }, grep { $_->{'today'} } @issues ], + }, grep { $_->{'now'} } @issues ], ); } else {