Bug 35942: OPAC user can enroll several times to the same club [23.05.x]
Test Plan:
1) Create 3 clubs, 1 limited to library A, 1 limited to library B and one not limited
2) Use a patron with home library A.
3) Go to the opac-user page, "Clubs" tab show 0/2 (the one from library B is not listed)
4) Browse to /cgi-bin/koha/svc/club/enroll?id=1
5) Reload that page a couple times
6) Note the patron is now enrolled in the same club multiple times
7) Delete those enrollments
8) Apply this patch
9) Restart all the things!
10) Repeat steps 2-7, note the lack of duplicate enrollments!
11) Repeat steps 2-10 for the staff interface
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit 9bdab108e2)
Signed-off-by: Aleisha Amohia <aleishaamohia@hotmail.com>
This commit is contained in:
parent
7b3a8e5c46
commit
c922f7304b
|
|
@ -30,8 +30,8 @@ use Koha::Clubs;
|
|||
|
||||
my $cgi = CGI->new;
|
||||
|
||||
my ( $auth_status ) =
|
||||
check_cookie_auth( $cgi->cookie('CGISESSID') );
|
||||
my ($auth_status) =
|
||||
check_cookie_auth( $cgi->cookie('CGISESSID') );
|
||||
if ( $auth_status ne "ok" ) {
|
||||
exit 0;
|
||||
}
|
||||
|
|
@ -42,31 +42,42 @@ my $id = $cgi->param('id');
|
|||
|
||||
my $enrollment;
|
||||
if ( $borrowernumber && $id ) {
|
||||
my $already_enrolled = Koha::Club::Enrollments->search(
|
||||
{
|
||||
club_id => $id,
|
||||
borrowernumber => $borrowernumber,
|
||||
date_canceled => undef,
|
||||
}
|
||||
)->count();
|
||||
|
||||
my $club = Koha::Clubs->find($id);
|
||||
|
||||
if ( $club->club_template()->is_enrollable_from_opac() ) {
|
||||
$enrollment = Koha::Club::Enrollment->new()->set(
|
||||
{
|
||||
club_id => $club->id(),
|
||||
borrowernumber => $borrowernumber,
|
||||
date_enrolled => \'NOW()',
|
||||
date_created => \'NOW()',
|
||||
branchcode => C4::Context->userenv
|
||||
? C4::Context->userenv->{'branch'}
|
||||
: undef,
|
||||
}
|
||||
)->store();
|
||||
my $wrong_branch = $club->branchcode && C4::Context->userenv && C4::Context->userenv->{branch} ne $club->branchcode;
|
||||
|
||||
my @enrollment_fields = $club->club_template()->club_template_enrollment_fields->as_list;
|
||||
unless ( $already_enrolled || $wrong_branch ) {
|
||||
|
||||
foreach my $e (@enrollment_fields) {
|
||||
Koha::Club::Enrollment::Field->new()->set(
|
||||
if ( $club->club_template()->is_enrollable_from_opac() ) {
|
||||
$enrollment = Koha::Club::Enrollment->new(
|
||||
{
|
||||
club_enrollment_id => $enrollment->id(),
|
||||
club_template_enrollment_field_id => $e->id(),
|
||||
value => $cgi->param( $e->id() ),
|
||||
club_id => $club->id(),
|
||||
borrowernumber => $borrowernumber,
|
||||
date_enrolled => \'NOW()',
|
||||
date_created => \'NOW()',
|
||||
branchcode => C4::Context->userenv ? C4::Context->userenv->{branch} : undef,
|
||||
}
|
||||
)->store();
|
||||
|
||||
my @enrollment_fields = $club->club_template()->club_template_enrollment_fields->as_list;
|
||||
|
||||
foreach my $e (@enrollment_fields) {
|
||||
Koha::Club::Enrollment::Field->new()->set(
|
||||
{
|
||||
club_enrollment_id => $enrollment->id(),
|
||||
club_template_enrollment_field_id => $e->id(),
|
||||
value => scalar $cgi->param( $e->id() ),
|
||||
}
|
||||
)->store();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,8 +30,8 @@ use Koha::Clubs;
|
|||
|
||||
my $cgi = CGI->new;
|
||||
|
||||
my ( $auth_status ) =
|
||||
check_cookie_auth( $cgi->cookie('CGISESSID'), { clubs => 'enroll' } );
|
||||
my ($auth_status) =
|
||||
check_cookie_auth( $cgi->cookie('CGISESSID'), { clubs => 'enroll' } );
|
||||
if ( $auth_status ne "ok" ) {
|
||||
exit 0;
|
||||
}
|
||||
|
|
@ -43,15 +43,21 @@ my $club = Koha::Clubs->find($id);
|
|||
|
||||
my $enrollment;
|
||||
if ($club) {
|
||||
my $already_enrolled = Koha::Club::Enrollments->search(
|
||||
{
|
||||
club_id => $id,
|
||||
borrowernumber => $borrowernumber,
|
||||
date_canceled => undef,
|
||||
}
|
||||
)->count();
|
||||
|
||||
$enrollment = Koha::Club::Enrollment->new(
|
||||
{
|
||||
club_id => $club->id(),
|
||||
borrowernumber => $borrowernumber,
|
||||
date_enrolled => \'NOW()',
|
||||
date_created => \'NOW()',
|
||||
branchcode => C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef,
|
||||
date_canceled => undef,
|
||||
}
|
||||
)->store();
|
||||
)->store() unless $already_enrolled;
|
||||
|
||||
if ($enrollment) {
|
||||
my @enrollment_fields = $club->club_template()->club_template_enrollment_fields->as_list;
|
||||
|
|
|
|||
Loading…
Reference in New Issue