View | Details | Raw Unified | Return to bug 1861
Collapse All | Expand All

(-)a/C4/Members.pm (-14 / +17 lines)
Lines 826-832 sub AddMember { Link Here
826
    my $dbh = C4::Context->dbh;
826
    my $dbh = C4::Context->dbh;
827
827
828
    # generate a proper login if none provided
828
    # generate a proper login if none provided
829
    $data{'userid'} = Generate_Userid($data{'borrowernumber'}, $data{'firstname'}, $data{'surname'}) if $data{'userid'} eq '';
829
    $data{'userid'} = Generate_Userid( $data{'borrowernumber'}, $data{'firstname'}, $data{'surname'} )
830
      if ( $data{'userid'} eq '' || Check_Userid( $data{'userid'} ) );
830
831
831
    # add expiration date if it isn't already there
832
    # add expiration date if it isn't already there
832
    unless ( $data{'dateexpiry'} ) {
833
    unless ( $data{'dateexpiry'} ) {
Lines 874-892 sub AddMember { Link Here
874
=cut
875
=cut
875
876
876
sub Check_Userid {
877
sub Check_Userid {
877
    my ($uid,$member) = @_;
878
    my ( $uid, $borrowernumber ) = @_;
878
    my $dbh = C4::Context->dbh;
879
879
    my $sth =
880
    return 1 unless ($uid);
880
      $dbh->prepare(
881
881
        "SELECT * FROM borrowers WHERE userid=? AND borrowernumber != ?");
882
    return 0 if ( $uid eq C4::Context->config('user') );
882
    $sth->execute( $uid, $member );
883
883
    if ( (( $uid ne '' ) && ( my $row = $sth->fetchrow_hashref    )) or
884
    my $rs = Koha::Database->new()->schema()->resultset('Borrower');
884
         (( $uid ne '' ) && ( $uid eq C4::Context->config('user') )) ) {
885
885
        return 0;
886
    my $params;
886
    }
887
    $params->{userid} = $uid;
887
    else {
888
    $params->{borrowernumber} = { '!=' => $borrowernumber } if ($borrowernumber);
888
        return 1;
889
889
    }
890
    my $count = $rs->count( $params );
891
892
    return $count ? 0 : 1;
890
}
893
}
891
894
892
=head2 Generate_Userid
895
=head2 Generate_Userid
(-)a/t/db_dependent/Members.t (-8 / +6 lines)
Lines 278-292 ok (!_find_member($results), "Delete member") Link Here
278
    branchcode   => "MPL",
278
    branchcode   => "MPL",
279
    dateofbirth  => '',
279
    dateofbirth  => '',
280
    dateexpiry   => '9999-12-31',
280
    dateexpiry   => '9999-12-31',
281
    userid       => 'tomasito'
282
);
281
);
283
# Add a new borrower
282
# Add a new borrower
284
my $borrowernumber = AddMember( %data );
283
my $borrowernumber = AddMember( %data );
285
is( Check_Userid( 'tomasito', $borrowernumber ), 1,
284
is( Check_Userid( 'tomasito.non', $borrowernumber ), 1,
286
    'recently created userid -> unique (borrowernumber passed)' );
285
    'recently created userid -> unique (borrowernumber passed)' );
287
is( Check_Userid( 'tomasitoxxx', $borrowernumber ), 1,
286
is( Check_Userid( 'tomasitoxxx', $borrowernumber ), 1,
288
    'non-existent userid -> unique (borrowernumber passed)' );
287
    'non-existent userid -> unique (borrowernumber passed)' );
289
is( Check_Userid( 'tomasito', '' ), 0,
288
is( Check_Userid( 'tomasito.none', '' ), 0,
290
    'userid exists (blank borrowernumber)' );
289
    'userid exists (blank borrowernumber)' );
291
is( Check_Userid( 'tomasitoxxx', '' ), 1,
290
is( Check_Userid( 'tomasitoxxx', '' ), 1,
292
    'non-existent userid -> unique (blank borrowernumber)' );
291
    'non-existent userid -> unique (blank borrowernumber)' );
Lines 294-305 is( Check_Userid( 'tomasitoxxx', '' ), 1, Link Here
294
# Add a new borrower with the same userid but different cardnumber
293
# Add a new borrower with the same userid but different cardnumber
295
$data{ cardnumber } = "987654321";
294
$data{ cardnumber } = "987654321";
296
my $new_borrowernumber = AddMember( %data );
295
my $new_borrowernumber = AddMember( %data );
297
is( Check_Userid( 'tomasito', '' ), 0,
296
is( Check_Userid( 'tomasito.none', '' ), 0,
298
    'userid not unique (blank borrowernumber)' );
297
    'userid not unique (blank borrowernumber)' );
299
is( Check_Userid( 'tomasito', $borrowernumber ), 0,
298
is( Check_Userid( 'tomasito.none', $new_borrowernumber ), 0,
300
    'userid not unique (first borrowernumber passed)' );
301
is( Check_Userid( 'tomasito', $new_borrowernumber ), 0,
302
    'userid not unique (second borrowernumber passed)' );
299
    'userid not unique (second borrowernumber passed)' );
300
my $borrower = GetMember( borrowernumber => $new_borrowernumber );
301
ok( $borrower->{userid} ne 'tomasito', "Borrower with duplicate userid has new userid generated" );
303
302
304
# Regression tests for BZ12226
303
# Regression tests for BZ12226
305
is( Check_Userid( C4::Context->config('user'), '' ), 0,
304
is( Check_Userid( C4::Context->config('user'), '' ), 0,
306
- 

Return to bug 1861