Merge pull request #6057 from christianbeeznest/fixes-updates62

User: Fix settings update, lang filter, profile form
pull/6058/head
christianbeeznest 7 months ago committed by GitHub
commit f6452e7191
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 7
      src/CoreBundle/Controller/AccountController.php
  2. 13
      src/CoreBundle/Entity/User.php
  3. 32
      src/CoreBundle/Form/ProfileType.php
  4. 10
      src/CoreBundle/Repository/LanguageRepository.php

@ -61,6 +61,13 @@ class AccountController extends BaseController
}
}
if ($form->has('password')) {
$password = $form['password']->getData();
if ($password) {
$user->setPlainPassword($password);
}
}
$showTermsIfProfileCompleted = ('true' === $settingsManager->getSetting('show_terms_if_profile_completed'));
$user->setProfileCompleted($showTermsIfProfileCompleted);

@ -1220,7 +1220,7 @@ class User implements UserInterface, EquatableInterface, ResourceInterface, Reso
return $this->plainPassword;
}
public function setPlainPassword(string $password): self
public function setPlainPassword(?string $password): self
{
$this->plainPassword = $password;
// forces the object to look "dirty" to Doctrine. Avoids
@ -2210,6 +2210,17 @@ class User implements UserInterface, EquatableInterface, ResourceInterface, Reso
return $this;
}
public function getLogin(): string
{
return $this->username;
}
public function setLogin(string $login): self
{
$this->username = $login;
return $this;
}
/**
* @return Collection<int, TrackELogin>
*/

@ -11,8 +11,9 @@ use Chamilo\CoreBundle\Form\Type\IllustrationType;
use Chamilo\CoreBundle\Repository\LanguageRepository;
use Chamilo\CoreBundle\Settings\SettingsManager;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\LocaleType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TimezoneType;
use Symfony\Component\Form\FormBuilderInterface;
@ -23,20 +24,16 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
*/
class ProfileType extends AbstractType
{
private LanguageRepository $languageRepository;
public function __construct(
LanguageRepository $languageRepository,
private readonly SettingsManager $settingsManager
) {
$this->languageRepository = $languageRepository;
}
private readonly LanguageRepository $languageRepository,
private readonly SettingsManager $settingsManager,
) {}
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$changeableOptions = $this->settingsManager->getSetting('profile.changeable_options') ?? [];
$visibleOptions = $this->settingsManager->getSetting('profile.visible_options') ?? [];
$languages = array_flip($this->languageRepository->getAllAvailableToArray());
$changeableOptions = $this->settingsManager->getSetting('profile.changeable_options', true) ?? [];
$visibleOptions = $this->settingsManager->getSetting('profile.visible_options', true) ?? [];
$languages = array_flip($this->languageRepository->getAllAvailableToArray(true));
$fieldsMap = [
'name' => ['field' => 'firstname', 'type' => TextType::class, 'label' => 'Firstname'],
@ -49,10 +46,16 @@ class ProfileType extends AbstractType
'mapped' => false,
],
'login' => ['field' => 'login', 'type' => TextType::class, 'label' => 'Login'],
'password' => ['field' => 'password', 'type' => TextType::class, 'label' => 'Password'],
'password' => [
'field' => 'password',
'type' => PasswordType::class,
'label' => 'Password',
'mapped' => false,
'required' => false,
],
'language' => [
'field' => 'locale',
'type' => LocaleType::class,
'type' => ChoiceType::class,
'label' => 'Language',
'choices' => $languages,
],
@ -69,7 +72,8 @@ class ProfileType extends AbstractType
array_merge(
[
'label' => $fieldConfig['label'],
'required' => false,
'required' => $fieldConfig['required'] ?? false,
'mapped' => $fieldConfig['mapped'] ?? true,
'attr' => !$isEditable ? ['readonly' => true] : [],
],
isset($fieldConfig['choices']) ? ['choices' => $fieldConfig['choices']] : []

@ -44,9 +44,15 @@ class LanguageRepository extends ServiceEntityRepository
return $qb;
}
public function getAllAvailableToArray(): array
public function getAllAvailableToArray(bool $onlyActive = false): array
{
$languages = $this->getAllAvailable()->getQuery()->getResult();
$queryBuilder = $this->getAllAvailable();
if (!$onlyActive) {
$queryBuilder->resetDQLPart('where');
}
$languages = $queryBuilder->getQuery()->getResult();
$list = [];

Loading…
Cancel
Save