unless ( $self->in_storage ) { #AddMember
# Generate a valid userid/login if needed
- $self->userid($self->generate_userid)
+ $self->generate_userid
if not $self->userid or not $self->has_valid_userid;
# Add expiration date if it isn't already there
=head3 generate_userid
my $patron = Koha::Patron->new( $params );
-my $userid = $patron->generate_userid
+$patron->generate_userid
Generate a userid using the $surname and the $firstname (if there is a value in $firstname).
-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).
-
-# TODO: Set $self->userid with the generated value
+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).
=cut
sub generate_userid {
my ($self) = @_;
- my $userid;
my $offset = 0;
- my $existing_userid = $self->userid;
my $firstname = $self->firstname // q{};
my $surname = $self->surname // q{};
#The script will "do" the following code and increment the $offset until the generated userid is unique
do {
$firstname =~ s/[[:digit:][:space:][:blank:][:punct:][:cntrl:]]//g;
$surname =~ s/[[:digit:][:space:][:blank:][:punct:][:cntrl:]]//g;
- $userid = lc(($firstname)? "$firstname.$surname" : $surname);
+ my $userid = lc(($firstname)? "$firstname.$surname" : $surname);
$userid = unac_string('utf-8',$userid);
$userid .= $offset unless $offset == 0;
$self->userid( $userid );
$offset++;
} while (! $self->has_valid_userid );
- # Resetting to the previous value as the callers do not expect
- # this method to modify the userid attribute
- # This will be done later (move of AddMember and ModMember)
- $self->userid( $existing_userid );
-
- return $userid;
+ return $self;
}
# Full page edit, firstname and surname input zones are present
$patron->firstname($newdata{firstname});
$patron->surname($newdata{surname});
- $newdata{'userid'} = $patron->generate_userid;
+ $patron->generate_userid;
+ $newdata{'userid'} = $patron->userid;
}
elsif ( ( defined $data{'firstname'} || $category_type eq 'I' ) && ( defined $data{'surname'} ) ) {
# Partial page edit (access through "Details"/"Library details" tab), firstname and surname input zones are not used
# FIXME clean thiscode newdata vs data is very confusing
$patron->firstname($data{firstname});
$patron->surname($data{surname});
- $newdata{'userid'} = $patron->generate_userid;
+ $patron->generate_userid;
+ $newdata{'userid'} = $patron->userid;
}
else {
$newdata{'userid'} = $data{'userid'};
my $expected_userid_patron_1 = 'tomasito.none';
my $new_patron = Koha::Patron->new({ firstname => $data{firstname}, surname => $data{surname} } );
- my $userid = $new_patron->generate_userid;
+ $new_patron->generate_userid;
+ my $userid = $new_patron->userid;
is( $userid, $expected_userid_patron_1, 'generate_userid should generate the userid we expect' );
my $borrowernumber = Koha::Patron->new(\%data)->store->borrowernumber;
my $patron_1 = Koha::Patrons->find($borrowernumber);
is ( $patron_1->userid, $expected_userid_patron_1, 'The userid generated should be the one we expect' );
- $userid = $new_patron->generate_userid;
+ $new_patron->generate_userid;
+ $userid = $new_patron->userid;
is( $userid, $expected_userid_patron_1 . '1', 'generate_userid should generate the userid we expect' );
$data{cardnumber} = '987654321';
my $new_borrowernumber = Koha::Patron->new(\%data)->store->borrowernumber;
is( $patron_2->userid, $expected_userid_patron_1 . '1', # TODO we could make that configurable
"Patron with duplicate userid has new userid generated (1 is appened" );
- $userid = $new_patron->generate_userid;
+ $new_patron->generate_userid;
+ $userid = $new_patron->userid;
is( $userid, $expected_userid_patron_1 . '2', 'generate_userid should generate the userid we expect' );
$patron_1 = Koha::Patrons->find($borrowernumber);
$patron_1->userid(undef);
- $userid = $patron_1->generate_userid;
+ $patron_1->generate_userid;
+ $userid = $patron_1->userid;
is( $userid, $expected_userid_patron_1, 'generate_userid should generate the userid we expect' );
# Cleanup