Merge pull request #5249 from christianbeeznest/GH-5121-3

User: Fix language and consent features in user agreements - refs #5121
pull/5254/head
christianbeeznest 2 years ago committed by GitHub
commit d578ca929a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 21
      public/main/auth/inscription.php
  2. 2
      src/CoreBundle/Controller/Admin/IndexBlocksController.php
  3. 21
      src/CoreBundle/Controller/SocialController.php
  4. 2
      src/CoreBundle/Entity/Language.php

@ -679,6 +679,10 @@ if ('true' === api_get_setting('allow_terms_conditions')) {
// Ofaj // Ofaj
if (!api_is_anonymous() || 'course' !== api_get_setting('platform.load_term_conditions_section')) { if (!api_is_anonymous() || 'course' !== api_get_setting('platform.load_term_conditions_section')) {
$language = api_get_language_isocode(); $language = api_get_language_isocode();
if (isset($termRegistered['user_id'])) {
$userInfo = api_get_user_info($termRegistered['user_id']);
$language = $userInfo['locale'];
}
$language = api_get_language_id($language); $language = api_get_language_id($language);
$termPreview = LegalManager::get_last_condition($language); $termPreview = LegalManager::get_last_condition($language);
if (!$termPreview) { if (!$termPreview) {
@ -712,12 +716,12 @@ if ('true' === api_get_setting('allow_terms_conditions')) {
'checkbox', 'checkbox',
'legal_accept', 'legal_accept',
null, null,
get_lang('IHaveReadAndAgree') . '&nbsp;<a href="inscription.php?legal" target="_blank">' . get_lang('I have read and agree') . '&nbsp;<a href="inscription.php?legal" target="_blank">' .
get_lang('TermsAndConditions') . '</a>' get_lang('Terms and conditions') . '</a>'
); );
$form->addRule( $form->addRule(
'legal_accept', 'legal_accept',
get_lang('ThisFieldIsRequired'), get_lang('This field is required'),
'required' 'required'
); );
} else { } else {
@ -731,6 +735,17 @@ if ('true' === api_get_setting('allow_terms_conditions')) {
$form->addLabel($value['display_text'], $value['field_value']); $form->addLabel($value['display_text'], $value['field_value']);
} }
} }
$form->addElement(
'checkbox',
'legal_accept',
null,
get_lang('I have read and agree')
);
$form->addRule(
'legal_accept',
get_lang('This field is required'),
'required'
);
} }
} }
} }

@ -78,7 +78,7 @@ class IndexBlocksController extends BaseController
} }
// Data protection // Data protection
if ('false' === $this->settingsManager->getSetting('profile.disable_gdpr')) { if ('true' !== $this->settingsManager->getSetting('profile.disable_gdpr')) {
$json['data_privacy'] = [ $json['data_privacy'] = [
'editable' => false, 'editable' => false,
'items' => $this->getItemsPrivacy(), 'items' => $this->getItemsPrivacy(),

@ -238,7 +238,8 @@ class SocialController extends AbstractController
SettingsManager $settingsManager, SettingsManager $settingsManager,
UserRepository $userRepo, UserRepository $userRepo,
TranslatorInterface $translator, TranslatorInterface $translator,
MailerInterface $mailer MailerInterface $mailer,
RequestStack $requestStack
): JsonResponse { ): JsonResponse {
$data = json_decode($request->getContent(), true); $data = json_decode($request->getContent(), true);
$userId = $data['userId'] ? (int) $data['userId'] : null; $userId = $data['userId'] ? (int) $data['userId'] : null;
@ -255,12 +256,12 @@ class SocialController extends AbstractController
if ('delete_account' === $requestType) { if ('delete_account' === $requestType) {
$fieldToUpdate = 'request_for_delete_account'; $fieldToUpdate = 'request_for_delete_account';
$justificationFieldToUpdate = 'request_for_delete_account_justification'; $justificationFieldToUpdate = 'request_for_delete_account_justification';
$emailSubject = 'Request for account removal'; $emailSubject = $translator->trans('Request for account deletion');
$emailContent = sprintf($translator->trans('User %s asked for the deletion of his/her account, explaining that : ').$explanation, $user->getFullName()); $emailContent = sprintf($translator->trans('User %s asked for the deletion of his/her account, explaining that : ').$explanation, $user->getFullName());
} elseif ('delete_legal' === $requestType) { } elseif ('delete_legal' === $requestType) {
$fieldToUpdate = 'request_for_legal_agreement_consent_removal'; $fieldToUpdate = 'request_for_legal_agreement_consent_removal';
$justificationFieldToUpdate = 'request_for_legal_agreement_consent_removal_justification'; $justificationFieldToUpdate = 'request_for_legal_agreement_consent_removal_justification';
$emailSubject = 'Request for consent withdrawal on legal terms'; $emailSubject = $translator->trans('Request for consent withdrawal on legal terms');
$emailContent = sprintf($translator->trans('User %s asked for the removal of his/her consent to our legal terms, explaining that: ').$explanation, $user->getFullName()); $emailContent = sprintf($translator->trans('User %s asked for the removal of his/her consent to our legal terms, explaining that: ').$explanation, $user->getFullName());
} else { } else {
return $this->json(['success' => false, 'message' => 'Invalid action type']); return $this->json(['success' => false, 'message' => 'Invalid action type']);
@ -270,17 +271,25 @@ class SocialController extends AbstractController
UserManager::update_extra_field_value($userId, $fieldToUpdate, 1); UserManager::update_extra_field_value($userId, $fieldToUpdate, 1);
UserManager::update_extra_field_value($userId, $justificationFieldToUpdate, $explanation); UserManager::update_extra_field_value($userId, $justificationFieldToUpdate, $explanation);
$emailPlatform = $settingsManager->getSetting('admin.administrator_email'); $request = $requestStack->getCurrentRequest();
$baseUrl = $request->getSchemeAndHttpHost() . $request->getBasePath();
$specificPath = '/main/admin/user_list_consent.php';
$link = $baseUrl . $specificPath;
$emailContent .= $translator->trans('Go here : '). '<a href="' . $link . '">' . $link . '</a>';
$emailOfficer = $settingsManager->getSetting('profile.data_protection_officer_email');
if (!empty($emailOfficer)) {
$email = new Email(); $email = new Email();
$email $email
->from($user->getEmail()) ->from($user->getEmail())
->to($emailPlatform) ->to($emailOfficer)
->subject($emailSubject) ->subject($emailSubject)
->html($emailContent) ->html($emailContent)
; ;
$mailer->send($email); $mailer->send($email);
} else {
MessageManager::sendMessageToAllAdminUsers($user->getId(), $emailSubject, $emailContent);
}
return $this->json([ return $this->json([
'success' => true, 'success' => true,

@ -20,7 +20,7 @@ use Symfony\Component\Validator\Constraints as Assert;
/** /**
* Platform languages. * Platform languages.
*/ */
#[ApiResource] #[ApiResource(attributes: ["pagination_enabled" => false])]
#[ApiFilter(BooleanFilter::class, properties: ['available'])] #[ApiFilter(BooleanFilter::class, properties: ['available'])]
#[ApiFilter(OrderFilter::class, properties: ['english_name' => 'DESC'])] #[ApiFilter(OrderFilter::class, properties: ['english_name' => 'DESC'])]
#[ORM\Table(name: 'language', options: ['row_format' => 'DYNAMIC'])] #[ORM\Table(name: 'language', options: ['row_format' => 'DYNAMIC'])]

Loading…
Cancel
Save