Bugzilla – Attachment 76904 Details for
Bug 20287
Move AddMember and ModMember to Koha::Patron
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 20287: Move AddMember to Koha::Patron->store
Bug-20287-Move-AddMember-to-KohaPatron-store.patch (text/plain), 9.59 KB, created by
Jonathan Druart
on 2018-07-12 18:49:15 UTC
(
hide
)
Description:
Bug 20287: Move AddMember to Koha::Patron->store
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2018-07-12 18:49:15 UTC
Size:
9.59 KB
patch
obsolete
>From 21f7e0b539ae1ef8be263d69d7a36dea72f5a3f0 Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >Date: Thu, 22 Feb 2018 12:28:02 -0300 >Subject: [PATCH] Bug 20287: Move AddMember to Koha::Patron->store > >Signed-off-by: Josef Moravec <josef.moravec@gmail.com> > >Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> > >Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> >--- > C4/Members.pm | 93 -------------------------------------------------------- > Koha/Patron.pm | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- > 2 files changed, 93 insertions(+), 96 deletions(-) > >diff --git a/C4/Members.pm b/C4/Members.pm >index 18f8f67b87..cacccc781c 100644 >--- a/C4/Members.pm >+++ b/C4/Members.pm >@@ -78,7 +78,6 @@ BEGIN { > > #Insert data > push @EXPORT, qw( >- &AddMember > &AddMember_Auto > &AddMember_Opac > ); >@@ -375,98 +374,6 @@ sub ModMember { > return $execute_success; > } > >-=head2 AddMember >- >- $borrowernumber = &AddMember(%borrower); >- >-insert new borrower into table >- >-(%borrower keys are database columns. Database columns could be >-different in different versions. Please look into database for correct >-column names.) >- >-Returns the borrowernumber upon success >- >-Returns as undef upon any db error without further processing >- >-=cut >- >-#' >-sub AddMember { >- my (%data) = @_; >- my $dbh = C4::Context->dbh; >- my $schema = Koha::Database->new()->schema; >- >- my $category = Koha::Patron::Categories->find( $data{categorycode} ); >- unless ($category) { >- Koha::Exceptions::Object::FKConstraint->throw( >- broken_fk => 'categorycode', >- value => $data{categorycode}, >- ); >- } >- >- my $p = Koha::Patron->new( { userid => $data{userid}, firstname => $data{firstname}, surname => $data{surname} } ); >- # generate a proper login if none provided >- $data{'userid'} = $p->generate_userid >- if ( $data{'userid'} eq '' || ! $p->has_valid_userid ); >- >- # add expiration date if it isn't already there >- $data{dateexpiry} ||= $category->get_expiry_date; >- >- # add enrollment date if it isn't already there >- unless ( $data{'dateenrolled'} ) { >- $data{'dateenrolled'} = output_pref( { dt => dt_from_string, dateonly => 1, dateformat => 'iso' } ); >- } >- >- $data{'privacy'} = >- $category->default_privacy() eq 'default' ? 1 >- : $category->default_privacy() eq 'never' ? 2 >- : $category->default_privacy() eq 'forever' ? 0 >- : undef; >- >- $data{'privacy_guarantor_checkouts'} = 0 unless defined( $data{'privacy_guarantor_checkouts'} ); >- >- # Make a copy of the plain text password for later use >- my $plain_text_password = $data{'password'}; >- >- # create a disabled account if no password provided >- $data{'password'} = ($data{'password'})? hash_password($data{'password'}) : '!'; >- >- # we don't want invalid dates in the db (mysql has a bad habit of inserting 0000-00-00 >- $data{'dateofbirth'} = undef if ( not $data{'dateofbirth'} ); >- $data{'debarred'} = undef if ( not $data{'debarred'} ); >- $data{'sms_provider_id'} = undef if ( not $data{'sms_provider_id'} ); >- $data{'guarantorid'} = undef if ( not $data{'guarantorid'} ); >- >- # get only the columns of Borrower >- # FIXME Do we really need this check? >- my @columns = $schema->source('Borrower')->columns; >- my $new_member = { map { join(' ',@columns) =~ /$_/ ? ( $_ => $data{$_} ) : () } keys(%data) } ; >- >- delete $new_member->{borrowernumber}; >- >- my $patron = Koha::Patron->new( $new_member )->store; >- $data{borrowernumber} = $patron->borrowernumber; >- >- # If NorwegianPatronDBEnable is enabled, we set syncstatus to something that a >- # cronjob will use for syncing with NL >- if ( exists $data{'borrowernumber'} && C4::Context->preference('NorwegianPatronDBEnable') && C4::Context->preference('NorwegianPatronDBEnable') == 1 ) { >- Koha::Database->new->schema->resultset('BorrowerSync')->create({ >- 'borrowernumber' => $data{'borrowernumber'}, >- 'synctype' => 'norwegianpatrondb', >- 'sync' => 1, >- 'syncstatus' => 'new', >- 'hashed_pin' => Koha::NorwegianPatronDB::NLEncryptPIN( $plain_text_password ), >- }); >- } >- >- logaction("MEMBERS", "CREATE", $data{'borrowernumber'}, "") if C4::Context->preference("BorrowersLog"); >- >- $patron->add_enrolment_fee_if_needed; >- >- return $data{borrowernumber}; >-} >- > =head2 GetAllIssues > > $issues = &GetAllIssues($borrowernumber, $sortkey, $limit); >diff --git a/Koha/Patron.pm b/Koha/Patron.pm >index 6396b50f27..3d2456cc9e 100644 >--- a/Koha/Patron.pm >+++ b/Koha/Patron.pm >@@ -22,6 +22,7 @@ use Modern::Perl; > > use Carp; > use List::MoreUtils qw( uniq ); >+use Module::Load::Conditional qw( can_load ); > use Text::Unaccent qw( unac_string ); > > use C4::Context; >@@ -41,6 +42,10 @@ use Koha::Club::Enrollments; > use Koha::Account; > use Koha::Subscription::Routinglists; > >+if ( ! can_load( modules => { 'Koha::NorwegianPatronDB' => undef } ) ) { >+ warn "Unable to load Koha::NorwegianPatronDB"; >+} >+ > use base qw(Koha::Object); > > our $RESULTSET_PATRON_ID_MAPPING = { >@@ -110,7 +115,7 @@ sub trim_whitespaces { > my( $self ) = @_; > > my $schema = Koha::Database->new->schema; >- my @columns = $schema->source('Borrowers')->columns; >+ my @columns = $schema->source($self->_type)->columns; > > for my $column( @columns ) { > my $value = $self->$column; >@@ -123,7 +128,7 @@ sub trim_whitespaces { > } > > sub store { >- my( $self ) = @_; >+ my ($self) = @_; > > $self->_result->result_source->schema->txn_do( > sub { >@@ -138,10 +143,95 @@ sub store { > # We are in a transaction but the table is not locked > $self->fixup_cardnumber; > } >+ unless ( $self->in_storage ) { #AddMember >+ >+ unless( $self->category->in_storage ) { >+ Koha::Exceptions::Object::FKConstraint->throw( >+ broken_fk => 'categorycode', >+ value => $self->categorycode, >+ ); >+ } >+ >+ $self->trim_whitespaces; >+ >+ # Generate a valid userid/login if needed >+ $self->userid($self->generate_userid) >+ if not $self->userid or not $self->has_valid_userid; >+ >+ # Add expiration date if it isn't already there >+ unless ( $self->dateexpiry ) { >+ $self->dateexpiry( $self->category->get_expiry_date ); >+ } >+ >+ # Add enrollment date if it isn't already there >+ unless ( $self->dateenrolled ) { >+ $self->dateenrolled(dt_from_string); >+ } >+ >+ # Set the privacy depending on the patron's category >+ my $default_privacy = $self->category->default_privacy || q{}; >+ $default_privacy = >+ $default_privacy eq 'default' ? 1 >+ : $default_privacy eq 'never' ? 2 >+ : $default_privacy eq 'forever' ? 0 >+ : undef; >+ $self->privacy($default_privacy); >+ >+ unless ( defined $self->privacy_guarantor_checkouts ) { >+ $self->privacy_guarantor_checkouts(0); >+ } >+ >+ # Make a copy of the plain text password for later use >+ my $plain_text_password = $self->password; >+ >+ # Create a disabled account if no password provided >+ $self->password( $self->password >+ ? Koha::AuthUtils::hash_password( $self->password ) >+ : '!' ); >+ >+ # We don't want invalid dates in the db (mysql has a bad habit of inserting 0000-00-00) >+ $self->dateofbirth(undef) unless $self->dateofbirth; >+ $self->debarred(undef) unless $self->debarred; >+ >+ # Set default values if not set >+ $self->sms_provider_id(undef) unless $self->sms_provider_id; >+ $self->guarantorid(undef) unless $self->guarantorid; >+ >+ $self->borrowernumber(undef); >+ >+ $self = $self->SUPER::store; >+ >+ # If NorwegianPatronDBEnable is enabled, we set syncstatus to something that a >+ # cronjob will use for syncing with NL >+ if ( C4::Context->preference('NorwegianPatronDBEnable') >+ && C4::Context->preference('NorwegianPatronDBEnable') == 1 ) >+ { >+ Koha::Database->new->schema->resultset('BorrowerSync') >+ ->create( >+ { >+ 'borrowernumber' => $self->borrowernumber, >+ 'synctype' => 'norwegianpatrondb', >+ 'sync' => 1, >+ 'syncstatus' => 'new', >+ 'hashed_pin' => >+ Koha::NorwegianPatronDB::NLEncryptPIN( >+ $plain_text_password), >+ } >+ ); >+ } >+ >+ $self->add_enrolment_fee_if_needed; >+ >+ logaction( "MEMBERS", "CREATE", $self->borrowernumber, "" ) >+ if C4::Context->preference("BorrowersLog"); >+ } >+ else { #ModMember >+ $self = $self->SUPER::store; >+ } > >- $self->SUPER::store; > } > ); >+ return $self; > } > > =head3 delete >-- >2.11.0
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 20287
:
73436
|
76901
|
76902
|
76903
| 76904 |
76905
|
76906
|
76907
|
76908
|
76909
|
76910
|
76911
|
76912
|
76913
|
76914
|
76915
|
76916
|
76917
|
76918
|
76919
|
76920
|
76921
|
76922
|
76923
|
76924
|
76927
|
77221