|
- <?php
-
- namespace Lc\SovBundle\Form\Common;
-
- use ConnectHolland\CookieConsentBundle\Cookie\CookieChecker;
- use Symfony\Component\Form\AbstractTypeExtension;
- use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
- use Symfony\Component\Form\FormBuilderInterface;
- use ConnectHolland\CookieConsentBundle\Form\CookieConsentType as BaseCookieConsentType;
-
- class CookieConsentTypeExtension extends AbstractTypeExtension
- {
- /**
- * @var CookieChecker
- */
- protected $cookieChecker;
-
- /**
- * @var array
- */
- protected $cookieCategories;
-
- /**
- * @var bool
- */
- protected $cookieConsentSimplified;
-
- public function __construct(
- CookieChecker $cookieChecker,
- array $cookieCategories = [],
- bool $cookieConsentSimplified = null
- ) {
- $this->cookieChecker = $cookieChecker;
- $this->cookieCategories = $cookieCategories;
- $this->cookieConsentSimplified = $cookieConsentSimplified;
- }
-
- public function buildForm(FormBuilderInterface $builder, array $options)
- {
- foreach ($this->cookieCategories as $category) {
- $builder->remove($category);
-
- $data = 'true';
- if ($this->cookieChecker->isCookieConsentSavedByUser() && !$this->cookieChecker->isCategoryAllowedByUser(
- $category
- )) {
- $data = 'false';
- }
-
- $builder->add(
- $category,
- ChoiceType::class,
- [
- 'expanded' => true,
- 'multiple' => false,
- 'data' => $data,
- 'choices' => [
- ['ch_cookie_consent.yes' => 'true'],
- ['ch_cookie_consent.no' => 'false'],
- ],
- ]
- );
- }
- }
-
- public static function getExtendedTypes(): iterable
- {
- return [BaseCookieConsentType::class];
- }
- }
|