@@ -, +, @@ required. field gdpr_proc_consent. --- .../opac-tmpl/bootstrap/en/modules/opac-memberentry.tt | 14 +++++++++++++- opac/opac-memberentry.pl | 7 +++++++ opac/opac-registration-verify.pl | 5 ++++- 3 files changed, 24 insertions(+), 2 deletions(-) --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt +++ a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt @@ -894,8 +894,20 @@ [% END %] [% END %] - [% UNLESS action == 'edit' %] + [% IF Koha.Preference('GDPR_Policy') && action != 'edit' %] + + [% END %] + + [% UNLESS action == 'edit' %]
+ Verification
  1. --- a/opac/opac-memberentry.pl +++ a/opac/opac-memberentry.pl @@ -30,6 +30,7 @@ use C4::Members::Attributes qw( GetBorrowerAttributes ); use C4::Form::MessagingPreferences; use Koha::AuthUtils; use Koha::Patrons; +use Koha::Patron::Consent; use Koha::Patron::Modification; use Koha::Patron::Modifications; use C4::Scrubber; @@ -209,7 +210,9 @@ if ( $action eq 'create' ) { $borrower{categorycode} ||= C4::Context->preference('PatronSelfRegistrationDefaultCategory'); $borrower{password} ||= Koha::AuthUtils::generate_password; + my $consent_dt = delete $borrower{gdpr_proc_consent}; my $patron = Koha::Patron->new( \%borrower )->store; + Koha::Patron::Consent->new({ borrowernumber => $patron->borrowernumber, type => 'GDPR_PROCESSING', given_on => $consent_dt })->store if $consent_dt; if ( $patron ) { C4::Members::Attributes::SetBorrowerAttributes( $patron->borrowernumber, $attributes ); if ( C4::Context->preference('EnhancedMessagingPreferences') ) { @@ -366,6 +369,7 @@ sub GetMandatoryFields { C4::Context->preference("PatronSelfRegistrationBorrowerMandatoryField"); my @fields = split( /\|/, $BorrowerMandatoryField ); + push @fields, 'gdpr_proc_consent' if C4::Context->preference('GDPR_Policy'); foreach (@fields) { $mandatory_fields{$_} = 1; @@ -472,6 +476,9 @@ sub ParseCgiForBorrower { $borrower{'dateofbirth'} = undef; } + # Replace checkbox 'agreed' by datetime in gdpr_proc_consent + $borrower{gdpr_proc_consent} = dt_from_string if $borrower{gdpr_proc_consent} && $borrower{gdpr_proc_consent} eq 'agreed'; + return %borrower; } --- a/opac/opac-registration-verify.pl +++ a/opac/opac-registration-verify.pl @@ -25,6 +25,7 @@ use C4::Members; use C4::Form::MessagingPreferences; use Koha::AuthUtils; use Koha::Patrons; +use Koha::Patron::Consent; use Koha::Patron::Modifications; my $cgi = new CGI; @@ -62,10 +63,12 @@ if ( my $patron_attrs = $m->unblessed; $patron_attrs->{password} ||= Koha::AuthUtils::generate_password; - + my $consent_dt = delete $patron_attrs->{gdpr_proc_consent}; $patron_attrs->{categorycode} ||= C4::Context->preference('PatronSelfRegistrationDefaultCategory'); my $patron = Koha::Patron->new( $patron_attrs )->store; + Koha::Patron::Consent->new({ borrowernumber => $patron->borrowernumber, type => 'GDPR_PROCESSING', given_on => $consent_dt })->store if $consent_dt; + if ($patron) { $m->delete(); C4::Form::MessagingPreferences::handle_form_action($cgi, { borrowernumber => $patron->borrowernumber }, $template, 1, C4::Context->preference('PatronSelfRegistrationDefaultCategory') ) if C4::Context->preference('EnhancedMessagingPreferences'); --