| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | <?phpnamespace Drupal\materio_expo\Form;use Drupal\Core\Form\FormBase;use Drupal\Core\Form\FormStateInterface;// use Symfony\Component\HttpFoundation\Cookie;use Symfony\Component\HttpFoundation\RedirectResponse;use Drupal\Core\Url;/** * Class GetEmail. */class GetEmail extends FormBase {  /**   * {@inheritdoc}   */  public function getFormId() {    return 'get_email';  }  /**   * {@inheritdoc}   */  public function buildForm(array $form, FormStateInterface $form_state, $ref = null) {        // check if email cookie is already present    $session = \Drupal::request()->getSession();    $alreadysetemail = $session->get('materio_expo_email');    if($alreadysetemail){      // https://x-team.com/blog/drupal-goto/      $url = Url::fromRoute('materio_expo.qr_controller_getfile', ['ref'=>$ref], ['absolute' => TRUE]);      return new RedirectResponse($url->toString());    }else{      $form['email'] = [        '#type' => 'email',        // '#title' => $this->t('Email'),        '#attributes' => [          'placeholder' => $this->t('Email')        ],        '#weight' => '0',      ];            $form['ref'] = [        '#type' => 'hidden',        '#value' => $ref      ];        $form['submit'] = [        '#type' => 'submit',        '#value' => $this->t("Submit"),      ];      return $form;    }  }  /**   * {@inheritdoc}   */  public function validateForm(array &$form, FormStateInterface $form_state) {    parent::validateForm($form, $form_state);  }  /**   * {@inheritdoc}   */  public function submitForm(array &$form, FormStateInterface $form_state) {    $values = $form_state->getValues();    //* send form submission by email    $mailManager = \Drupal::service('plugin.manager.mail');    $module = 'materio_expo';    $key = 'expo_getmail_submitted';    $to = \Drupal::config('system.site')->get('mail');    $params['email'] = $values['email'];    $params['message'] = $values['email'];    $langcode = \Drupal::languageManager()->getCurrentLanguage()->getId();    $send = true;    $result = $mailManager->mail($module, $key, $to, $langcode, $params, NULL, $send);    if ($result['result'] !== true) {      $logger = \Drupal::logger('flag_lists');      $logger->error('There was a problem sending your message.' . $values['mail']);    }    //* record email as session variable    // https://drupal.stackexchange.com/questions/197576/storing-data-session-for-anonymous-user    $session = \Drupal::request()->getSession();    $session->set('materio_expo_email', true);    //* redirect to getfile controller    $ref = $values['ref'];    $form_state->setRedirect('materio_expo.qr_controller_getfile', ['ref'=>$ref]);  }}
 |