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');
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc