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

(-)a/C4/Members.pm (-14 / +17 lines)
Lines 855-861 sub AddMember { Link Here
855
    my $dbh = C4::Context->dbh;
855
    my $dbh = C4::Context->dbh;
856
856
857
    # generate a proper login if none provided
857
    # generate a proper login if none provided
858
    $data{'userid'} = Generate_Userid($data{'borrowernumber'}, $data{'firstname'}, $data{'surname'}) if $data{'userid'} eq '';
858
    $data{'userid'} = Generate_Userid( $data{'borrowernumber'}, $data{'firstname'}, $data{'surname'} )
859
      if ( $data{'userid'} eq '' || Check_Userid( $data{'userid'} ) );
859
860
860
    # add expiration date if it isn't already there
861
    # add expiration date if it isn't already there
861
    unless ( $data{'dateexpiry'} ) {
862
    unless ( $data{'dateexpiry'} ) {
Lines 917-935 sub AddMember { Link Here
917
=cut
918
=cut
918
919
919
sub Check_Userid {
920
sub Check_Userid {
920
    my ($uid,$member) = @_;
921
    my ( $uid, $borrowernumber ) = @_;
921
    my $dbh = C4::Context->dbh;
922
922
    my $sth =
923
    return 1 unless ($uid);
923
      $dbh->prepare(
924
924
        "SELECT * FROM borrowers WHERE userid=? AND borrowernumber != ?");
925
    return 0 if ( $uid eq C4::Context->config('user') );
925
    $sth->execute( $uid, $member );
926
926
    if ( (( $uid ne '' ) && ( my $row = $sth->fetchrow_hashref    )) or
927
    my $rs = Koha::Database->new()->schema()->resultset('Borrower');
927
         (( $uid ne '' ) && ( $uid eq C4::Context->config('user') )) ) {
928
928
        return 0;
929
    my $params;
929
    }
930
    $params->{userid} = $uid;
930
    else {
931
    $params->{borrowernumber} = { '!=' => $borrowernumber } if ($borrowernumber);
931
        return 1;
932
932
    }
933
    my $count = $rs->count( $params );
934
935
    return $count ? 0 : 1;
933
}
936
}
934
937
935
=head2 Generate_Userid
938
=head2 Generate_Userid
(-)a/t/db_dependent/Members.t (-8 / +6 lines)
Lines 276-290 ok (!_find_member($results), "Delete member") Link Here
276
    branchcode   => "MPL",
276
    branchcode   => "MPL",
277
    dateofbirth  => '',
277
    dateofbirth  => '',
278
    dateexpiry   => '9999-12-31',
278
    dateexpiry   => '9999-12-31',
279
    userid       => 'tomasito'
280
);
279
);
281
# Add a new borrower
280
# Add a new borrower
282
my $borrowernumber = AddMember( %data );
281
my $borrowernumber = AddMember( %data );
283
is( Check_Userid( 'tomasito', $borrowernumber ), 1,
282
is( Check_Userid( 'tomasito.non', $borrowernumber ), 1,
284
    'recently created userid -> unique (borrowernumber passed)' );
283
    'recently created userid -> unique (borrowernumber passed)' );
285
is( Check_Userid( 'tomasitoxxx', $borrowernumber ), 1,
284
is( Check_Userid( 'tomasitoxxx', $borrowernumber ), 1,
286
    'non-existent userid -> unique (borrowernumber passed)' );
285
    'non-existent userid -> unique (borrowernumber passed)' );
287
is( Check_Userid( 'tomasito', '' ), 0,
286
is( Check_Userid( 'tomasito.none', '' ), 0,
288
    'userid exists (blank borrowernumber)' );
287
    'userid exists (blank borrowernumber)' );
289
is( Check_Userid( 'tomasitoxxx', '' ), 1,
288
is( Check_Userid( 'tomasitoxxx', '' ), 1,
290
    'non-existent userid -> unique (blank borrowernumber)' );
289
    'non-existent userid -> unique (blank borrowernumber)' );
Lines 292-303 is( Check_Userid( 'tomasitoxxx', '' ), 1, Link Here
292
# Add a new borrower with the same userid but different cardnumber
291
# Add a new borrower with the same userid but different cardnumber
293
$data{ cardnumber } = "987654321";
292
$data{ cardnumber } = "987654321";
294
my $new_borrowernumber = AddMember( %data );
293
my $new_borrowernumber = AddMember( %data );
295
is( Check_Userid( 'tomasito', '' ), 0,
294
is( Check_Userid( 'tomasito.none', '' ), 0,
296
    'userid not unique (blank borrowernumber)' );
295
    'userid not unique (blank borrowernumber)' );
297
is( Check_Userid( 'tomasito', $borrowernumber ), 0,
296
is( Check_Userid( 'tomasito.none', $new_borrowernumber ), 0,
298
    'userid not unique (first borrowernumber passed)' );
299
is( Check_Userid( 'tomasito', $new_borrowernumber ), 0,
300
    'userid not unique (second borrowernumber passed)' );
297
    'userid not unique (second borrowernumber passed)' );
298
my $borrower = GetMember( borrowernumber => $new_borrowernumber );
299
ok( $borrower->{userid} ne 'tomasito', "Borrower with duplicate userid has new userid generated" );
301
300
302
# Regression tests for BZ12226
301
# Regression tests for BZ12226
303
is( Check_Userid( C4::Context->config('user'), '' ), 0,
302
is( Check_Userid( C4::Context->config('user'), '' ), 0,
304
- 

Return to bug 1861