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

(-)a/Koha/Patron.pm (-14 / +5 lines)
Lines 177-183 sub store { Link Here
177
            unless ( $self->in_storage ) {    #AddMember
177
            unless ( $self->in_storage ) {    #AddMember
178
178
179
                # Generate a valid userid/login if needed
179
                # Generate a valid userid/login if needed
180
                $self->userid($self->generate_userid)
180
                $self->generate_userid
181
                  if not $self->userid or not $self->has_valid_userid;
181
                  if not $self->userid or not $self->has_valid_userid;
182
182
183
                # Add expiration date if it isn't already there
183
                # Add expiration date if it isn't already there
Lines 1234-1273 sub has_valid_userid { Link Here
1234
=head3 generate_userid
1234
=head3 generate_userid
1235
1235
1236
my $patron = Koha::Patron->new( $params );
1236
my $patron = Koha::Patron->new( $params );
1237
my $userid = $patron->generate_userid
1237
$patron->generate_userid
1238
1238
1239
Generate a userid using the $surname and the $firstname (if there is a value in $firstname).
1239
Generate a userid using the $surname and the $firstname (if there is a value in $firstname).
1240
1240
1241
Return the generate userid ($firstname.$surname if there is a $firstname, or $surname if there is no value in $firstname) plus offset (0 if the $userid is unique, or a higher numeric value if not unique).
1241
Set a generated userid ($firstname.$surname if there is a $firstname, or $surname if there is no value in $firstname) plus offset (0 if the $userid is unique, or a higher numeric value if not unique).
1242
1243
# TODO: Set $self->userid with the generated value
1244
1242
1245
=cut
1243
=cut
1246
1244
1247
sub generate_userid {
1245
sub generate_userid {
1248
    my ($self) = @_;
1246
    my ($self) = @_;
1249
    my $userid;
1250
    my $offset = 0;
1247
    my $offset = 0;
1251
    my $existing_userid = $self->userid;
1252
    my $firstname = $self->firstname // q{};
1248
    my $firstname = $self->firstname // q{};
1253
    my $surname = $self->surname // q{};
1249
    my $surname = $self->surname // q{};
1254
    #The script will "do" the following code and increment the $offset until the generated userid is unique
1250
    #The script will "do" the following code and increment the $offset until the generated userid is unique
1255
    do {
1251
    do {
1256
      $firstname =~ s/[[:digit:][:space:][:blank:][:punct:][:cntrl:]]//g;
1252
      $firstname =~ s/[[:digit:][:space:][:blank:][:punct:][:cntrl:]]//g;
1257
      $surname =~ s/[[:digit:][:space:][:blank:][:punct:][:cntrl:]]//g;
1253
      $surname =~ s/[[:digit:][:space:][:blank:][:punct:][:cntrl:]]//g;
1258
      $userid = lc(($firstname)? "$firstname.$surname" : $surname);
1254
      my $userid = lc(($firstname)? "$firstname.$surname" : $surname);
1259
      $userid = unac_string('utf-8',$userid);
1255
      $userid = unac_string('utf-8',$userid);
1260
      $userid .= $offset unless $offset == 0;
1256
      $userid .= $offset unless $offset == 0;
1261
      $self->userid( $userid );
1257
      $self->userid( $userid );
1262
      $offset++;
1258
      $offset++;
1263
     } while (! $self->has_valid_userid );
1259
     } while (! $self->has_valid_userid );
1264
1260
1265
     # Resetting to the previous value as the callers do not expect
1261
     return $self;
1266
     # this method to modify the userid attribute
1267
     # This will be done later (move of AddMember and ModMember)
1268
     $self->userid( $existing_userid );
1269
1270
     return $userid;
1271
1262
1272
}
1263
}
1273
1264
(-)a/members/memberentry.pl (-2 / +4 lines)
Lines 283-289 if ( ( defined $newdata{'userid'} && $newdata{'userid'} eq '' ) || $check_Borrow Link Here
283
        # Full page edit, firstname and surname input zones are present
283
        # Full page edit, firstname and surname input zones are present
284
        $patron->firstname($newdata{firstname});
284
        $patron->firstname($newdata{firstname});
285
        $patron->surname($newdata{surname});
285
        $patron->surname($newdata{surname});
286
        $newdata{'userid'} = $patron->generate_userid;
286
        $patron->generate_userid;
287
        $newdata{'userid'} = $patron->userid;
287
    }
288
    }
288
    elsif ( ( defined $data{'firstname'} || $category_type eq 'I' ) && ( defined $data{'surname'} ) ) {
289
    elsif ( ( defined $data{'firstname'} || $category_type eq 'I' ) && ( defined $data{'surname'} ) ) {
289
        # Partial page edit (access through "Details"/"Library details" tab), firstname and surname input zones are not used
290
        # Partial page edit (access through "Details"/"Library details" tab), firstname and surname input zones are not used
Lines 291-297 if ( ( defined $newdata{'userid'} && $newdata{'userid'} eq '' ) || $check_Borrow Link Here
291
        # FIXME clean thiscode newdata vs data is very confusing
292
        # FIXME clean thiscode newdata vs data is very confusing
292
        $patron->firstname($data{firstname});
293
        $patron->firstname($data{firstname});
293
        $patron->surname($data{surname});
294
        $patron->surname($data{surname});
294
        $newdata{'userid'} = $patron->generate_userid;
295
        $patron->generate_userid;
296
        $newdata{'userid'} = $patron->userid;
295
    }
297
    }
296
    else {
298
    else {
297
        $newdata{'userid'} = $data{'userid'};
299
        $newdata{'userid'} = $data{'userid'};
(-)a/t/db_dependent/Koha/Patrons.t (-5 / +8 lines)
Lines 1324-1336 subtest 'generate_userid' => sub { Link Here
1324
1324
1325
    my $expected_userid_patron_1 = 'tomasito.none';
1325
    my $expected_userid_patron_1 = 'tomasito.none';
1326
    my $new_patron = Koha::Patron->new({ firstname => $data{firstname}, surname => $data{surname} } );
1326
    my $new_patron = Koha::Patron->new({ firstname => $data{firstname}, surname => $data{surname} } );
1327
    my $userid = $new_patron->generate_userid;
1327
    $new_patron->generate_userid;
1328
    my $userid = $new_patron->userid;
1328
    is( $userid, $expected_userid_patron_1, 'generate_userid should generate the userid we expect' );
1329
    is( $userid, $expected_userid_patron_1, 'generate_userid should generate the userid we expect' );
1329
    my $borrowernumber = Koha::Patron->new(\%data)->store->borrowernumber;
1330
    my $borrowernumber = Koha::Patron->new(\%data)->store->borrowernumber;
1330
    my $patron_1 = Koha::Patrons->find($borrowernumber);
1331
    my $patron_1 = Koha::Patrons->find($borrowernumber);
1331
    is ( $patron_1->userid, $expected_userid_patron_1, 'The userid generated should be the one we expect' );
1332
    is ( $patron_1->userid, $expected_userid_patron_1, 'The userid generated should be the one we expect' );
1332
1333
1333
    $userid = $new_patron->generate_userid;
1334
    $new_patron->generate_userid;
1335
    $userid = $new_patron->userid;
1334
    is( $userid, $expected_userid_patron_1 . '1', 'generate_userid should generate the userid we expect' );
1336
    is( $userid, $expected_userid_patron_1 . '1', 'generate_userid should generate the userid we expect' );
1335
    $data{cardnumber} = '987654321';
1337
    $data{cardnumber} = '987654321';
1336
    my $new_borrowernumber = Koha::Patron->new(\%data)->store->borrowernumber;
1338
    my $new_borrowernumber = Koha::Patron->new(\%data)->store->borrowernumber;
Lines 1340-1351 subtest 'generate_userid' => sub { Link Here
1340
    is( $patron_2->userid, $expected_userid_patron_1 . '1', # TODO we could make that configurable
1342
    is( $patron_2->userid, $expected_userid_patron_1 . '1', # TODO we could make that configurable
1341
        "Patron with duplicate userid has new userid generated (1 is appened" );
1343
        "Patron with duplicate userid has new userid generated (1 is appened" );
1342
1344
1343
    $userid = $new_patron->generate_userid;
1345
    $new_patron->generate_userid;
1346
    $userid = $new_patron->userid;
1344
    is( $userid, $expected_userid_patron_1 . '2', 'generate_userid should generate the userid we expect' );
1347
    is( $userid, $expected_userid_patron_1 . '2', 'generate_userid should generate the userid we expect' );
1345
1348
1346
    $patron_1 = Koha::Patrons->find($borrowernumber);
1349
    $patron_1 = Koha::Patrons->find($borrowernumber);
1347
    $patron_1->userid(undef);
1350
    $patron_1->userid(undef);
1348
    $userid = $patron_1->generate_userid;
1351
    $patron_1->generate_userid;
1352
    $userid = $patron_1->userid;
1349
    is( $userid, $expected_userid_patron_1, 'generate_userid should generate the userid we expect' );
1353
    is( $userid, $expected_userid_patron_1, 'generate_userid should generate the userid we expect' );
1350
1354
1351
    # Cleanup
1355
    # Cleanup
1352
- 

Return to bug 20287