{% extends "base/class.php.twig" %}

{% block file_path %}
\Drupal\{{module}}\{{ class }}.
{% endblock %}

{% block namespace_class %}
namespace Drupal\{{module}}\EventSubscriber;
{% endblock %}

{% block use_class %}
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\EventDispatcher\Event;
{% endblock %}

{% block class_declaration %}
/**
 * Class {{ class }}.
 *
 * @package Drupal\{{module}}
 */
class {{ class }} implements EventSubscriberInterface {% endblock %}

{% block class_construct %}

  /**
   * Constructor.
   */
  public function __construct({{ servicesAsParameters(services)|join(', ') }}) {
{{ serviceClassInitialization(services) }}
  }

{% endblock %}

{% block class_methods %}
  /**
   * {@inheritdoc}
   */
  static function getSubscribedEvents() {
{% for event_name, callback in events %}
    $events['{{ event_name }}'] = ['{{ callback }}'];
{% endfor %}

    return $events;
  }

{% for event_name, callback in events %}
  /**
   * This method is called whenever the {{ event_name }} event is
   * dispatched.
   *
   * @param GetResponseEvent $event
   */
  public function {{ callback }}(Event $event) {
    drupal_set_message('Event {{ event_name }} thrown by Subscriber in module {{ module }}.', 'status', TRUE);
  }
{% endfor %}
{% endblock %}
