diff --git a/Controller/PersonAddressController.php b/Controller/PersonAddressController.php index 39e4cd4c7..026577832 100644 --- a/Controller/PersonAddressController.php +++ b/Controller/PersonAddressController.php @@ -3,7 +3,7 @@ /* * Chill is a software for social workers * - * Copyright (C) 2016, Champs Libres Cooperative SCRLFS, + * Copyright (C) 2016, Champs Libres Cooperative SCRLFS, * , * * This program is free software: you can redistribute it and/or modify @@ -23,6 +23,7 @@ namespace Chill\PersonBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Chill\PersonBundle\Entity\Person; use Chill\MainBundle\Form\Type\AddressType; use Chill\MainBundle\Entity\Address; @@ -37,97 +38,97 @@ use Symfony\Component\HttpFoundation\Request; */ class PersonAddressController extends Controller { - + public function listAction($person_id) { $person = $this->getDoctrine()->getManager() ->getRepository('ChillPersonBundle:Person') ->find($person_id); - + if ($person === null) { throw $this->createNotFoundException("Person with id $person_id not" . " found "); } - + $this->denyAccessUnlessGranted( 'CHILL_PERSON_SEE', $person, "You are not allowed to edit this person." ); - + return $this->render('ChillPersonBundle:Address:list.html.twig', array( 'person' => $person )); } - + public function newAction($person_id) { $person = $this->getDoctrine()->getManager() ->getRepository('ChillPersonBundle:Person') ->find($person_id); - + if ($person === null) { throw $this->createNotFoundException("Person with id $person_id not" . " found "); } - + $this->denyAccessUnlessGranted( 'CHILL_PERSON_UPDATE', $person, "You are not allowed to edit this person." ); - + $address = new Address(); - + $form = $this->createCreateForm($person, $address); - + return $this->render('ChillPersonBundle:Address:new.html.twig', array( 'person' => $person, 'form' => $form->createView() )); } - + public function createAction($person_id, Request $request) { $person = $this->getDoctrine()->getManager() ->getRepository('ChillPersonBundle:Person') ->find($person_id); - + if ($person === null) { throw $this->createNotFoundException("Person with id $person_id not" . " found "); } - + $this->denyAccessUnlessGranted( 'CHILL_PERSON_UPDATE', $person, "You are not allowed to edit this person." ); - + $address = new Address(); - + $form = $this->createCreateForm($person, $address); $form->handleRequest($request); - + $person->addAddress($address); - + if ($form->isSubmitted()) { $validatePersonErrors = $this->validatePerson($person); - + if (count($validatePersonErrors) !== 0) { foreach ($validatePersonErrors as $error) { $this->addFlash('error', $error->getMessage()); } } elseif ($form->isValid()) { - + $em = $this->getDoctrine()->getManager(); $em->flush(); - + $this->addFlash( 'success', $this->get('translator')->trans('The new address was created successfully') ); - + return $this->redirectToRoute('chill_person_address_list', array( 'person_id' => $person->getId() )); @@ -136,66 +137,66 @@ class PersonAddressController extends Controller ->trans('Error! Address not created!')); } } - + return $this->render('ChillPersonBundle:Address:new.html.twig', array( 'person' => $person, 'form' => $form->createView() )); } - + public function editAction($person_id, $address_id) { $person = $this->getDoctrine()->getManager() ->getRepository('ChillPersonBundle:Person') ->find($person_id); - + if ($person === null) { throw $this->createNotFoundException("Person with id $person_id not" . " found "); } - + $this->denyAccessUnlessGranted( 'CHILL_PERSON_UPDATE', $person, "You are not allowed to edit this person." ); - + $address = $this->findAddressById($person, $address_id); - + $form = $this->createEditForm($person, $address); - + return $this->render('ChillPersonBundle:Address:edit.html.twig', array( 'person' => $person, 'address' => $address, 'form' => $form->createView() )); } - + public function updateAction($person_id, $address_id, Request $request) { $person = $this->getDoctrine()->getManager() ->getRepository('ChillPersonBundle:Person') ->find($person_id); - + if ($person === null) { throw $this->createNotFoundException("Person with id $person_id not" . " found "); } - + $this->denyAccessUnlessGranted( 'CHILL_PERSON_UPDATE', $person, "You are not allowed to edit this person." ); - + $address = $this->findAddressById($person, $address_id); - + $form = $this->createEditForm($person, $address); $form->handleRequest($request); - - if ($request->getMethod() === 'POST') { + + if ($request->getMethod() === 'POST') { $validatePersonErrors = $this->validatePerson($person); - + if (count($validatePersonErrors) !== 0) { foreach ($validatePersonErrors as $error) { $this->addFlash('error', $error->getMessage()); @@ -203,11 +204,11 @@ class PersonAddressController extends Controller } elseif ($form->isValid()) { $this->getDoctrine()->getManager() ->flush(); - + $this->addFlash('success', $this->get('translator')->trans( "The address has been successfully updated" )); - + return $this->redirectToRoute('chill_person_address_list', array( 'person_id' => $person->getId() )); @@ -216,14 +217,14 @@ class PersonAddressController extends Controller ->trans('Error when updating the period')); } } - + return $this->render('ChillPersonBundle:Address:edit.html.twig', array( 'person' => $person, 'address' => $address, 'form' => $form->createView() )); } - + /** * @param Person $person * @param Address $address @@ -238,16 +239,16 @@ class PersonAddressController extends Controller 'address_id' => $address->getId() )) )); - - $form->add('submit', 'submit', array( + + $form->add('submit', SubmitType::class, array( 'label' => 'Submit' )); - + return $form; } - + /** - * + * * @param Person $person * @param Address $address * @return \Symfony\Component\Form\Form @@ -260,16 +261,16 @@ class PersonAddressController extends Controller 'person_id' => $person->getId() )) )); - - $form->add('submit', 'submit', array( + + $form->add('submit', SubmitType::class, array( 'label' => 'Submit' )); - + return $form; } - + /** - * + * * @param Person $person * @param int $address_id * @return Address @@ -282,15 +283,15 @@ class PersonAddressController extends Controller ->where(Criteria::expr()->eq('id', $address_id)) ->setMaxResults(1); $addresses = $person->getAddresses()->matching($criteria); - + if (count($addresses) === 0) { throw $this->createNotFoundException("Address with id $address_id " . "matching person $person_id not found "); } - + return $addresses->first(); } - + /** * @param Chill\PersonBundle\Entity\Person $person * @return \Symfony\Component\Validator\ConstraintViolationListInterface @@ -301,11 +302,11 @@ class PersonAddressController extends Controller ->validate($person, array('Default')); $errors_addresses_consistent = $this->get('validator') ->validate($person, array('addresses_consistent')); - + foreach($errors_addresses_consistent as $error) { $errors->add($error); } - + return $errors; } } diff --git a/Export/Aggregator/CountryOfBirthAggregator.php b/Export/Aggregator/CountryOfBirthAggregator.php index 84a45fcc8..0818c1c30 100644 --- a/Export/Aggregator/CountryOfBirthAggregator.php +++ b/Export/Aggregator/CountryOfBirthAggregator.php @@ -30,14 +30,15 @@ use Symfony\Component\Security\Core\Role\Role; use Chill\PersonBundle\Security\Authorization\PersonVoter; use Chill\MainBundle\Export\ExportElementValidatedInterface; use Symfony\Component\Validator\Context\ExecutionContextInterface; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; /** - * + * * * @author Julien Fastré */ -class CountryOfBirthAggregator implements AggregatorInterface, +class CountryOfBirthAggregator implements AggregatorInterface, ExportElementValidatedInterface { /** @@ -45,19 +46,19 @@ class CountryOfBirthAggregator implements AggregatorInterface, * @var EntityRepository */ protected $countriesRepository; - + /** * * @var TranslatableStringHelper */ protected $translatableStringHelper; - + /** * * @var TranslatorInterface */ protected $translator; - + public function __construct(EntityRepository $countriesRepository, TranslatableStringHelper $translatableStringHelper, TranslatorInterface $translator) @@ -66,16 +67,16 @@ class CountryOfBirthAggregator implements AggregatorInterface, $this->translatableStringHelper = $translatableStringHelper; $this->translator = $translator; } - + public function applyOn() { return 'person'; } - - + + public function buildForm(FormBuilderInterface $builder) { - $builder->add('group_by_level', 'choice', array( + $builder->add('group_by_level', ChoiceType::class, array( 'choices' => array( 'Group by continents' => 'continent', 'Group by country' => 'country' @@ -84,9 +85,9 @@ class CountryOfBirthAggregator implements AggregatorInterface, 'expanded' => true, 'multiple' => false )); - + } - + public function validateForm($data, ExecutionContextInterface $context) { if ($data['group_by_level'] === null) { @@ -94,7 +95,7 @@ class CountryOfBirthAggregator implements AggregatorInterface, ->addViolation(); } } - + public function alterQuery(QueryBuilder $qb, $data) { // add a clause in select part @@ -109,10 +110,10 @@ class CountryOfBirthAggregator implements AggregatorInterface, . 'WHEN countryOfBirth.countryCode IN(:cob_south_america_codes) THEN \'SA\' ' . 'WHEN countryOfBirth.countryCode IN(:cob_oceania_codes) THEN \'OC\' ' . 'WHEN countryOfBirth.countryCode IN(:cob_antartica_codes) THEN \'AN\' ' - . 'ELSE \'\' ' + . 'ELSE \'\' ' . 'END as country_of_birth_aggregator '; $qb->addSelect($clause); - $params = + $params = array( 'cob_africa_codes' => CountriesInfo::getCountriesCodeByContinent('AF'), 'cob_asia_codes' => CountriesInfo::getCountriesCodeByContinent('AS'), @@ -129,47 +130,47 @@ class CountryOfBirthAggregator implements AggregatorInterface, throw new \LogicException("The group_by_level '".$data['group_by_level'] ." is not known."); } - - + + $qb->leftJoin('person.countryOfBirth', 'countryOfBirth'); - + // add group by $groupBy = $qb->getDQLPart('groupBy'); - + if (!empty($groupBy)) { $qb->addGroupBy('country_of_birth_aggregator'); } else { $qb->groupBy('country_of_birth_aggregator'); } - + } - + public function getTitle() { return "Group people by country of birth"; } - + public function getQueryKeys($data) { return array('country_of_birth_aggregator'); } - + public function addRole() { return NULL; } - + public function getLabels($key, array $values, $data) { if ($data['group_by_level'] === 'country') { $qb = $this->countriesRepository->createQueryBuilder('c'); - + $countries = $qb ->andWhere($qb->expr()->in('c.countryCode', ':countries')) ->setParameter('countries', $values) ->getQuery() ->getResult(\Doctrine\ORM\Query::HYDRATE_SCALAR); - + // initialize array and add blank key for null values $labels[''] = $this->translator->trans('without data'); $labels['_header'] = $this->translator->trans('Country of birth'); @@ -177,9 +178,9 @@ class CountryOfBirthAggregator implements AggregatorInterface, $labels[$row['c_countryCode']] = $this->translatableStringHelper->localize($row['c_name']); } - + } elseif ($data['group_by_level'] === 'continent') { - + $labels = array( 'EU' => $this->translator->trans('Europe'), 'AS' => $this->translator->trans('Asia'), @@ -192,11 +193,11 @@ class CountryOfBirthAggregator implements AggregatorInterface, '_header' => $this->translator->trans('Continent of birth') ); } - - + + return function($value) use ($labels) { return $labels[$value]; }; - - } + + } } diff --git a/Export/Aggregator/NationalityAggregator.php b/Export/Aggregator/NationalityAggregator.php index 00838961d..e4554a8f0 100644 --- a/Export/Aggregator/NationalityAggregator.php +++ b/Export/Aggregator/NationalityAggregator.php @@ -30,9 +30,10 @@ use Symfony\Component\Security\Core\Role\Role; use Chill\PersonBundle\Security\Authorization\PersonVoter; use Chill\MainBundle\Export\ExportElementValidatedInterface; use Symfony\Component\Validator\Context\ExecutionContextInterface; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; /** - * + * * * @author Julien Fastré */ @@ -44,19 +45,19 @@ class NationalityAggregator implements AggregatorInterface, * @var EntityRepository */ protected $countriesRepository; - + /** * * @var TranslatableStringHelper */ protected $translatableStringHelper; - + /** * * @var TranslatorInterface */ protected $translator; - + public function __construct(EntityRepository $countriesRepository, TranslatableStringHelper $translatableStringHelper, TranslatorInterface $translator) @@ -65,16 +66,16 @@ class NationalityAggregator implements AggregatorInterface, $this->translatableStringHelper = $translatableStringHelper; $this->translator = $translator; } - + public function applyOn() { return 'person'; } - - + + public function buildForm(FormBuilderInterface $builder) { - $builder->add('group_by_level', 'choice', array( + $builder->add('group_by_level', ChoiceType::class, array( 'choices' => array( 'Group by continents' => 'continent', 'Group by country' => 'country' @@ -83,7 +84,7 @@ class NationalityAggregator implements AggregatorInterface, 'expanded' => true, 'multiple' => false )); - + } public function validateForm($data, ExecutionContextInterface $context) @@ -93,7 +94,7 @@ class NationalityAggregator implements AggregatorInterface, ->addViolation(); } } - + public function alterQuery(QueryBuilder $qb, $data) { // add a clause in select part @@ -108,10 +109,10 @@ class NationalityAggregator implements AggregatorInterface, . 'WHEN nationality.countryCode IN(:south_america_codes) THEN \'SA\' ' . 'WHEN nationality.countryCode IN(:oceania_codes) THEN \'OC\' ' . 'WHEN nationality.countryCode IN(:antartica_codes) THEN \'AN\' ' - . 'ELSE \'\' ' + . 'ELSE \'\' ' . 'END as nationality_aggregator '; $qb->addSelect($clause); - $params = + $params = array( 'africa_codes' => CountriesInfo::getCountriesCodeByContinent('AF'), 'asia_codes' => CountriesInfo::getCountriesCodeByContinent('AS'), @@ -128,47 +129,47 @@ class NationalityAggregator implements AggregatorInterface, throw new \LogicException("The group_by_level '".$data['group_by_level'] ." is not known."); } - - + + $qb->leftJoin('person.nationality', 'nationality'); - + // add group by $groupBy = $qb->getDQLPart('groupBy'); - + if (!empty($groupBy)) { $qb->addGroupBy('nationality_aggregator'); } else { $qb->groupBy('nationality_aggregator'); } - + } - + public function getTitle() { return "Group people by nationality"; } - + public function getQueryKeys($data) { return array('nationality_aggregator'); } - + public function addRole() { return NULL; } - + public function getLabels($key, array $values, $data) { if ($data['group_by_level'] === 'country') { $qb = $this->countriesRepository->createQueryBuilder('c'); - + $countries = $qb ->andWhere($qb->expr()->in('c.countryCode', ':countries')) ->setParameter('countries', $values) ->getQuery() ->getResult(\Doctrine\ORM\Query::HYDRATE_SCALAR); - + // initialize array and add blank key for null values $labels[''] = $this->translator->trans('without data'); $labels['_header'] = $this->translator->trans('Nationality'); @@ -176,9 +177,9 @@ class NationalityAggregator implements AggregatorInterface, $labels[$row['c_countryCode']] = $this->translatableStringHelper->localize($row['c_name']); } - + } elseif ($data['group_by_level'] === 'continent') { - + $labels = array( 'EU' => $this->translator->trans('Europe'), 'AS' => $this->translator->trans('Asia'), @@ -191,11 +192,11 @@ class NationalityAggregator implements AggregatorInterface, '_header' => $this->translator->trans('Continent') ); } - - + + return function($value) use ($labels) { return $labels[$value]; }; - - } + + } } diff --git a/Export/Filter/GenderFilter.php b/Export/Filter/GenderFilter.php index 30af1f015..677f807a5 100644 --- a/Export/Filter/GenderFilter.php +++ b/Export/Filter/GenderFilter.php @@ -27,27 +27,28 @@ use Doctrine\ORM\Query\Expr; use Symfony\Component\Security\Core\Role\Role; use Chill\MainBundle\Export\ExportElementValidatedInterface; use Symfony\Component\Validator\Context\ExecutionContextInterface; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; /** - * + * * * @author Julien Fastré */ class GenderFilter implements FilterInterface, ExportElementValidatedInterface { - + public function applyOn() { return 'person'; } - + /** - * + * */ public function buildForm(FormBuilderInterface $builder) { - $builder->add('accepted_genders', 'choice', array( + $builder->add('accepted_genders', ChoiceType::class, array( 'choices' => array( Person::FEMALE_GENDER => 'Woman', Person::MALE_GENDER => 'Man' @@ -56,7 +57,7 @@ class GenderFilter implements FilterInterface, 'expanded' => false )); } - + public function validateForm($data, ExecutionContextInterface $context) { if (count($data['accepted_genders']) === 0) { @@ -64,38 +65,38 @@ class GenderFilter implements FilterInterface, ->addViolation(); } } - + public function alterQuery(QueryBuilder $qb, $data) { $where = $qb->getDQLPart('where'); $clause = $qb->expr()->in('person.gender', ':person_gender'); - + if ($where instanceof Expr\Andx) { $where->add($clause); } else { $where = $qb->expr()->andX($clause); } - + $qb->add('where', $where); $qb->setParameter('person_gender', $data['accepted_genders']); } - + /** * A title which will be used in the label for the form - * + * * @return string */ public function getTitle() { return 'Filter by person gender'; } - + public function addRole() { return NULL; } - + public function describeAction($data, $format = 'string') { switch($data['accepted_genders']) { diff --git a/Form/AccompanyingPeriodType.php b/Form/AccompanyingPeriodType.php index f1ba4a95d..4ccdef6ce 100644 --- a/Form/AccompanyingPeriodType.php +++ b/Form/AccompanyingPeriodType.php @@ -4,11 +4,13 @@ namespace Chill\PersonBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Form\FormEvents; use Symfony\Component\Form\FormEvent; use Symfony\Component\Form\FormView; use Symfony\Component\Form\FormInterface; +use Symfony\Component\Form\Extension\Core\Type\TextareaType; +use Symfony\Component\Form\Extension\Core\Type\DateType; class AccompanyingPeriodType extends AbstractType { @@ -21,14 +23,14 @@ class AccompanyingPeriodType extends AbstractType //if the period_action is close, date opening should not be seen if ($options['period_action'] !== 'close') { $builder - ->add('openingDate', 'date', array( - "required" => true, + ->add('openingDate', DateType::class, array( + "required" => true, 'widget' => 'single_text', 'format' => 'dd-MM-yyyy' )); } - - // the closingDate should be seen only if period_action = close + + // the closingDate should be seen only if period_action = close // or period_action = update AND accopanying period is already closed $builder->addEventListener( FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($options) { @@ -44,22 +46,22 @@ class AccompanyingPeriodType extends AbstractType OR ($options['period_action'] === 'update' AND !$accompanyingPeriod->isOpen()) ) { - $form->add('closingDate', 'date', array('required' => true, + $form->add('closingDate', DateType::class, array('required' => true, 'widget' => 'single_text', 'format' => 'dd-MM-yyyy')); $form->add('closingMotive', 'closing_motive'); } }); - - $builder->add('remark', 'textarea', array( + + $builder->add('remark', TextareaType::class, array( 'required' => false )) ; } - + /** - * @param OptionsResolverInterface $resolver + * @param OptionsResolver $resolver */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'data_class' => 'Chill\PersonBundle\Entity\AccompanyingPeriod' @@ -71,7 +73,7 @@ class AccompanyingPeriodType extends AbstractType ->addAllowedValues(array('period_action' => array( 'update', 'open', 'close', 'create'))); } - + public function buildView(FormView $view, FormInterface $form, array $options) { $view->vars['action'] = $options['period_action']; diff --git a/Form/CreationPersonType.php b/Form/CreationPersonType.php index 5a305880c..da0b6a90b 100644 --- a/Form/CreationPersonType.php +++ b/Form/CreationPersonType.php @@ -24,29 +24,32 @@ namespace Chill\PersonBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; -use Chill\PersonBundle\Form\Type\GenderType; use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToStringTransformer; +use Symfony\Component\Form\Extension\Core\Type\HiddenType; +use Symfony\Component\Form\Extension\Core\Type\DateType; + +use Chill\PersonBundle\Form\Type\GenderType; use Chill\MainBundle\Form\Type\DataTransformer\CenterTransformer; class CreationPersonType extends AbstractType { - + const NAME = 'chill_personbundle_person_creation'; - + const FORM_NOT_REVIEWED = 'not_reviewed'; const FORM_REVIEWED = 'reviewed' ; const FORM_BEING_REVIEWED = 'being_reviewed'; - + /** * * @var CenterTransformer */ private $centerTransformer; - + public function __construct(CenterTransformer $centerTransformer) { $this->centerTransformer = $centerTransformer; } - + /** * @param FormBuilderInterface $builder * @param array $options @@ -54,24 +57,24 @@ class CreationPersonType extends AbstractType public function buildForm(FormBuilderInterface $builder, array $options) { if ($options['form_status'] === self::FORM_BEING_REVIEWED) { - + $dateToStringTransformer = new DateTimeToStringTransformer( null, null, 'd-m-Y', false); - - $builder->add('firstName', 'hidden') - ->add('lastName', 'hidden') - ->add('birthdate', 'hidden', array( + + $builder->add('firstName', HiddenType::class) + ->add('lastName', HiddenType::class) + ->add('birthdate', HiddenType::class, array( 'property_path' => 'birthdate' )) - ->add('gender', 'hidden') - ->add('creation_date', 'hidden', array( + ->add('gender', HiddenType::class) + ->add('creation_date', HiddenType::class, array( 'mapped' => false )) - ->add('form_status', 'hidden', array( + ->add('form_status', HiddenType::class, array( 'mapped' => false, 'data' => $options['form_status'] )) - ->add('center', 'hidden') + ->add('center', HiddenType::class) ; $builder->get('birthdate') ->addModelTransformer($dateToStringTransformer); @@ -83,18 +86,18 @@ class CreationPersonType extends AbstractType $builder ->add('firstName') ->add('lastName') - ->add('birthdate', 'date', array('required' => false, + ->add('birthdate', DateType::class, array('required' => false, 'widget' => 'single_text', 'format' => 'dd-MM-yyyy')) - ->add('gender', new GenderType(), array( + ->add('gender', GenderType::class, array( 'required' => true, 'empty_value' => null )) - ->add('creation_date', 'date', array( - 'required' => true, - 'widget' => 'single_text', + ->add('creation_date', DateType::class, array( + 'required' => true, + 'widget' => 'single_text', 'format' => 'dd-MM-yyyy', 'mapped' => false, 'data' => new \DateTime())) - ->add('form_status', 'hidden', array( + ->add('form_status', HiddenType::class, array( 'data' => $options['form_status'], 'mapped' => false )) @@ -102,7 +105,7 @@ class CreationPersonType extends AbstractType ; } } - + /** * @param OptionsResolver $resolver */ @@ -111,7 +114,7 @@ class CreationPersonType extends AbstractType $resolver->setDefaults(array( 'data_class' => 'Chill\PersonBundle\Entity\Person' )); - + $resolver->setRequired('form_status') ->setAllowedValues('form_status', array( self::FORM_BEING_REVIEWED, diff --git a/Form/PersonType.php b/Form/PersonType.php index 5b28575b3..1ab9cb8dd 100644 --- a/Form/PersonType.php +++ b/Form/PersonType.php @@ -23,11 +23,15 @@ namespace Chill\PersonBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; +use Symfony\Component\Form\Extension\Core\Type\TextareaType; +use Symfony\Component\Form\Extension\Core\Type\TextType; +use Symfony\Component\Form\Extension\Core\Type\DateType; use Chill\PersonBundle\Form\Type\GenderType; use Chill\MainBundle\Form\Type\Select2CountryType; use Chill\MainBundle\Form\Type\Select2LanguageType; +use Chill\CustomFieldsBundle\Form\Type\CustomFieldType; class PersonType extends AbstractType { @@ -59,23 +63,23 @@ class PersonType extends AbstractType $builder ->add('firstName') ->add('lastName') - ->add('birthdate', 'date', array('required' => false, 'widget' => 'single_text', 'format' => 'dd-MM-yyyy')) - ->add('gender', new GenderType(), array( + ->add('birthdate', DateType::class, array('required' => false, 'widget' => 'single_text', 'format' => 'dd-MM-yyyy')) + ->add('gender', GenderType::class, array( 'required' => true )) - ->add('memo', 'textarea', array('required' => false)) + ->add('memo', TextareaType::class, array('required' => false)) ; if ($this->config['place_of_birth'] === 'visible') { - $builder->add('placeOfBirth', 'text', array('required' => false)); + $builder->add('placeOfBirth', TextType::class, array('required' => false)); } if ($this->config['phonenumber'] === 'visible') { - $builder->add('phonenumber', 'textarea', array('required' => false)); + $builder->add('phonenumber', TextareaType::class, array('required' => false)); } if ($this->config['email'] === 'visible') { - $builder->add('email', 'textarea', array('required' => false)); + $builder->add('email', TextareaType::class, array('required' => false)); } if ($this->config['country_of_birth'] === 'visible') { @@ -105,7 +109,7 @@ class PersonType extends AbstractType if($options['cFGroup']) { $builder - ->add('cFData', 'custom_field', + ->add('cFData', CustomFieldType::class, array('attr' => array('class' => 'cf-fields'), 'group' => $options['cFGroup'])) ; } @@ -114,7 +118,7 @@ class PersonType extends AbstractType /** * @param OptionsResolverInterface $resolver */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'data_class' => 'Chill\PersonBundle\Entity\Person', @@ -125,15 +129,15 @@ class PersonType extends AbstractType 'cFGroup' )); - $resolver->setAllowedTypes(array( - 'cFGroup' => array('null', 'Chill\CustomFieldsBundle\Entity\CustomFieldsGroup') - )); + $resolver->setAllowedTypes( + 'cFGroup', array('null', 'Chill\CustomFieldsBundle\Entity\CustomFieldsGroup') + ); } /** * @return string */ - public function getName() + public function getBlockPrefix() { return 'chill_personbundle_person'; } diff --git a/Form/Type/ClosingMotiveType.php b/Form/Type/ClosingMotiveType.php index a041818f2..faaf0c6f5 100644 --- a/Form/Type/ClosingMotiveType.php +++ b/Form/Type/ClosingMotiveType.php @@ -5,6 +5,7 @@ namespace Chill\PersonBundle\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\OptionsResolver\OptionsResolver; /** * A type to add a closing motive @@ -13,34 +14,34 @@ use Symfony\Component\HttpFoundation\Request; */ class ClosingMotiveType extends AbstractType { - + private $locale; - + public function __construct(Request $request = NULL) { if ($request !== NULL) { $this->locale = $request->getLocale(); } } - + public function getName() { return 'closing_motive'; } - + public function getParent() { return 'entity'; } - - public function setDefaultOptions(\Symfony\Component\OptionsResolver\OptionsResolverInterface $resolver) + + public function configureOptions(OptionsResolver $resolver) { if ($this->locale === NULL) { throw new \LogicException('the locale should be defined and is extracted ' . 'from the \'request\' service. Maybe was this service ' . 'unaccessible ?'); } - + $resolver->setDefaults(array( 'class' => 'ChillPersonBundle:AccompanyingPeriod\ClosingMotive', 'empty_data' => null, @@ -49,5 +50,5 @@ class ClosingMotiveType extends AbstractType ) ); } - + } diff --git a/Form/Type/GenderType.php b/Form/Type/GenderType.php index a3caf2e7a..3f996f0cb 100644 --- a/Form/Type/GenderType.php +++ b/Form/Type/GenderType.php @@ -3,7 +3,9 @@ namespace Chill\PersonBundle\Form\Type; use Symfony\Component\Form\AbstractType; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; + use Chill\PersonBundle\Entity\Person; /** @@ -12,24 +14,19 @@ use Chill\PersonBundle\Entity\Person; * @author julien */ class GenderType extends AbstractType { - - - public function getName() { - return 'gender'; - } - + public function getParent() { - return 'choice'; + return ChoiceType::class; } - - public function setDefaultOptions(OptionsResolverInterface $resolver) { - + + public function configureOptions(OptionsResolver $resolver) { + $a = array( Person::MALE_GENDER => Person::MALE_GENDER, Person::FEMALE_GENDER => Person::FEMALE_GENDER ); - - $resolver->setDefaults(array( + + $resolver->setDefaults(array( 'choices' => $a, 'expanded' => true, 'multiple' => false, diff --git a/Form/Type/Select2MaritalStatusType.php b/Form/Type/Select2MaritalStatusType.php index 277286a24..65e2473d4 100644 --- a/Form/Type/Select2MaritalStatusType.php +++ b/Form/Type/Select2MaritalStatusType.php @@ -21,7 +21,7 @@ namespace Chill\PersonBundle\Form\Type; use Symfony\Component\Form\AbstractType; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; use Chill\MainBundle\Form\Type\DataTransformer\ObjectToIdTransformer; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\HttpFoundation\RequestStack; @@ -61,7 +61,7 @@ class Select2MaritalStatusType extends AbstractType $builder->addModelTransformer($transformer); } - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $locale = $this->requestStack->getCurrentRequest()->getLocale(); $maritalStatuses = $this->em->getRepository('Chill\PersonBundle\Entity\MaritalStatus')->findAll(); diff --git a/Resources/config/validation.yml b/Resources/config/validation.yml index c80bae183..80011e783 100644 --- a/Resources/config/validation.yml +++ b/Resources/config/validation.yml @@ -1,9 +1,9 @@ Chill\PersonBundle\Entity\Person: properties: firstName: - - NotBlank: + - NotBlank: groups: [general, creation] - - Length: + - Length: min: 2 max: 255 minMessage: 'This name is too short. It must containt {{ limit }} chars' @@ -12,17 +12,17 @@ Chill\PersonBundle\Entity\Person: lastName: - NotBlank: groups: [general, creation] - - Length: + - Length: min: 2 max: 255 minMessage: 'This name is too short. It must containt {{ limit }} chars' maxMessage: 'This name is too long. It must containt {{ limit }} chars' groups: [general, creation] birthdate: - - Date: + - Date: message: 'Birthdate not valid' groups: [general, creation] - - Chill\PersonBundle\Validator\Constraints\Birthdate: + - Chill\PersonBundle\Validator\Constraints\Birthdate: groups: [general, creation] gender: - NotNull: @@ -32,21 +32,21 @@ Chill\PersonBundle\Entity\Person: traverse: true constraints: - Callback: - methods: [isAccompanyingPeriodValid] - groups: [accompanying_period_consistent] + callback: isAccompanyingPeriodValid + groups: [accompanying_period_consistent] - Callback: - methods: [isAddressesValid] - groups: [addresses_consistent] + callback: isAddressesValid + groups: [addresses_consistent] Chill\PersonBundle\Entity\AccompanyingPeriod: properties: openingDate: - - Date: + - Date: message: 'Opening date is not valid' - - NotNull: + - NotNull: message: 'Opening date can not be null' closingDate: - - Date: + - Date: message: 'Closing date is not valid' - NotNull: message: 'Closing date can not be null'