1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <?php
- namespace Drupal\materio_expo\Controller;
- use Drupal\Core\Controller\ControllerBase;
- use Symfony\Component\HttpFoundation\RedirectResponse;
- use Drupal\Core\Url;
- use Symfony\Component\HttpFoundation\Cookie;
- /**
- * Class QRController.
- */
- class QRController extends ControllerBase {
- public function setcookie($ref) {
- //? https://drupal.stackexchange.com/questions/278203/how-do-i-set-a-cookie-using-response-headers-setcookie-in-a-form-submission
- // $form_state->setRedirect('materio_expo.qr_controller_getfile', ['ref'=>$ref]);
- // $response = new RedirectResponse(!empty($destination) ? $destination : '/');
- $url = Url::fromRoute('materio_expo.qr_controller_getfile', ['ref'=>$ref]);
- $response = new RedirectResponse($url->toString());
- $response->headers->setCookie(new Cookie('materio_expo_email', true, strtotime( '+3 days' ), '/'));
- $response->send();
- return $response;
- }
- /**
- */
- public function getfile($ref) {
- //? https://drupal.stackexchange.com/questions/255216/how-to-do-a-redirectresponse-with-a-destination-query-parameter
- //* check if email cookie is present (form submitted)
- // $session = \Drupal::request()->getSession();
- // $alreadysetemail = $session->get('materio_expo_email');
- $alreadysetemail = \Drupal::request()->cookies->get('materio_expo_email', false);
- if($alreadysetemail){
- //* get node from ref
- $entity_storage = \Drupal::entityTypeManager()->getStorage('node');
- $query = $entity_storage->getQuery()
- ->condition('type', 'materiau')
- ->condition('status', '1')
- ->accessCheck()
- ->condition('field_reference', $ref);
- $results = $query->execute();
- $nid = array_pop($results);
- $node = $entity_storage->load($nid);
- //* get file from node
- $file = $node->get('field_fiche_expo')->referencedEntities()[0];
- //* redirect to file
- return new RedirectResponse($file->createFileUrl());
- // return [
- // '#type' => 'markup',
- // '#markup' => $this->t("Error, email not provided"),
- // ];
- } else {
- // return [
- // '#type' => 'markup',
- // '#markup' => $this->t("Error, email not provided"),
- // ];
- $url = Url::fromRoute('materio_expo.get_email', ['ref'=>$ref]);
- return new RedirectResponse($url->toString());
- }
- }
- }
|