]> Raphaƫl G. Git Repositories - packbundle/blobdiff - Form/CaptchaType.php
Import contact form
[packbundle] / Form / CaptchaType.php
index 83f3b1be998bf14b404e1b0cc2cbc9a7df193f27..f8cf3d024deba7465841d157d49a34981c7947e4 100644 (file)
@@ -11,6 +11,7 @@
 
 namespace Rapsys\PackBundle\Form;
 
+use Rapsys\PackBundle\RapsysPackBundle;
 use Rapsys\PackBundle\Util\ImageUtil;
 use Rapsys\PackBundle\Util\SluggerUtil;
 
@@ -21,6 +22,7 @@ use Symfony\Component\Form\FormBuilderInterface;
 use Symfony\Component\Form\FormError;
 use Symfony\Component\Form\FormEvent;
 use Symfony\Component\Form\FormEvents;
+use Symfony\Component\OptionsResolver\OptionsResolver;
 use Symfony\Contracts\Translation\TranslatorInterface;
 
 /**
@@ -32,8 +34,8 @@ class CaptchaType extends AbstractType {
        /**
         * Constructor
         *
-        * @param ?ImageUtil $image
-        * @param ?SluggerUtil $slugger
+        * @param ?ImageUtil $image The image instance
+        * @param ?SluggerUtil $slugger The slugger instance
         * @param ?TranslatorInterface $translator The translator instance
         */
        public function __construct(protected ?ImageUtil $image = null, protected ?SluggerUtil $slugger = null, protected ?TranslatorInterface $translator = null) {
@@ -46,9 +48,9 @@ class CaptchaType extends AbstractType {
         */
        public function buildForm(FormBuilderInterface $builder, array $options): void {
                //With image, slugger and translator
-               if ($this->image !== null && $this->slugger !== null && $this->translator !== null) {
+               if (!empty($options['captcha']) && $this->image !== null && $this->slugger !== null && $this->translator !== null) {
                        //Set captcha
-                       $captcha = $this->image->getCaptcha((new \DateTime('-1 year'))->getTimestamp());
+                       $captcha = $this->image->getCaptcha();
 
                        //Add captcha token
                        $builder->add('_captcha_token', HiddenType::class, ['data' => $captcha['token'], 'empty_data' => $captcha['token'], 'mapped' => false]);
@@ -61,6 +63,20 @@ class CaptchaType extends AbstractType {
                }
        }
 
+       /**
+        * {@inheritdoc}
+        */
+       public function configureOptions(OptionsResolver $resolver): void {
+               //Call parent configure options
+               parent::configureOptions($resolver);
+
+               //Set defaults
+               $resolver->setDefaults(['captcha' => false, 'error_bubbling' => true, 'translation_domain' => RapsysPackBundle::getAlias()]);
+
+               //Add extra captcha option
+               $resolver->setAllowedTypes('captcha', 'boolean');
+       }
+
        /**
         * Validate captcha
         *