culturefeed-1.0.2/modules/culturefeed_agenda/src/ParamConverter/CulturefeedEventParamConverter.php
modules/culturefeed_agenda/src/ParamConverter/CulturefeedEventParamConverter.php
<?php
namespace Drupal\culturefeed_agenda\ParamConverter;
use Drupal\Core\ParamConverter\ParamConverterInterface;
use Drupal\culturefeed_search_api\DrupalCulturefeedSearchClientInterface;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Routing\Route;
/**
* Parameter converter for upcasting catalog items.
*/
class CulturefeedEventParamConverter implements ParamConverterInterface {
/**
* The Culturefeed search client.
*
* @var \Drupal\culturefeed_search_api\DrupalCulturefeedSearchClientInterface
*/
protected $searchClient;
/**
* The current request.
*
* @var null|\Symfony\Component\HttpFoundation\Request
*/
protected $request;
/**
* CulturefeedEventParamConverter constructor.
*
* @param \Drupal\culturefeed_search_api\DrupalCulturefeedSearchClientInterface $searchClient
* The Culturefeed search client.
* @param \Symfony\Component\HttpFoundation\RequestStack $requestStack
* The request stack.
*/
public function __construct(DrupalCulturefeedSearchClientInterface $searchClient, RequestStack $requestStack) {
$this->searchClient = $searchClient;
$this->request = $requestStack->getCurrentRequest();
}
/**
* {@inheritdoc}
*/
public function convert($value, $definition, $name, array $defaults) {
// Don't trigger if the value equals the route param placeholder.
if (strpos($value, '{') !== FALSE) {
return NULL;
}
try {
// Optionally reset the search cache.
return $this->searchClient->searchEvent($value, $this->request->query->has('reset'));
}
catch (\Throwable $t) {
return NULL;
}
}
/**
* {@inheritdoc}
*/
public function applies($definition, $name, Route $route) {
return (!empty($definition['type']) && $definition['type'] === 'culturefeed_event');
}
}
