60 lines
1.6 KiB
PHP
60 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace Drupal\materio_expo\Controller;
|
|
|
|
use Drupal\Core\Controller\ControllerBase;
|
|
use Symfony\Component\HttpFoundation\RedirectResponse;
|
|
use Drupal\Core\Url;
|
|
|
|
/**
|
|
* Class QRController.
|
|
*/
|
|
class QRController extends ControllerBase {
|
|
|
|
/**
|
|
* Hello.
|
|
*
|
|
* @return string
|
|
* Return Hello string.
|
|
*/
|
|
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');
|
|
if($alreadysetemail){
|
|
|
|
//* get node from ref
|
|
$entity_storage = \Drupal::entityTypeManager()->getStorage('node');
|
|
$query = $entity_storage->getQuery()
|
|
->condition('type', 'materiau')
|
|
->condition('status', '1')
|
|
->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());
|
|
}
|
|
}
|
|
|
|
}
|