19 declare(strict_types=1);
64 $this->component_repository = $DIC[
"component.repository"];
65 $this->component_factory = $DIC[
"component.factory"];
73 $listener_events = $this->event_handling_data->getEventsByType(
"listen");
74 foreach ($listener_events as $event_key => $event_value) {
75 $this->listener[$event_value[
"type_specification"]][] = $event_value[
"component"];
86 public function raise(
89 array $a_parameter = []
91 $this->
logger->debug(sprintf(
92 "Received event '%s' from component '%s'.",
97 $parameter_formatter =
static function ($value) use (&$parameter_formatter) {
98 if (is_object($value)) {
99 return get_class($value);
102 if (is_array($value)) {
104 $parameter_formatter,
112 $this->
logger->debug(
'Event data: ' . var_export(array_map(
113 $parameter_formatter,
117 $this->
logger->debug(
"Started event propagation for event listeners ...");
119 if (is_array($this->listener[$a_component] ?? null)) {
120 foreach ($this->listener[$a_component] as $listener) {
122 $last_slash = strripos($listener,
'/');
123 $comp = substr($listener, 0, $last_slash);
126 if ($comp ==
'Plugins') {
127 $name = substr($listener, $last_slash + 1);
130 foreach ($this->component_repository->getPlugins() as $pl) {
131 if ($pl->getName() !== $name || !$pl->isActive()) {
134 $plugin = $this->component_factory->getPlugin($pl->getId());
135 $plugin->handleEvent($a_component, $a_event, $a_parameter);
138 $class =
'il' . substr($listener, $last_slash + 1) .
'AppEventListener';
139 $file =
"./" . $listener .
"/classes/class." . $class .
".php";
141 if (is_file($file)) {
143 call_user_func(array($class,
'handleEvent'), $a_component, $a_event, $a_parameter);
149 $this->
logger->debug(
"Finished event listener handling, started event propagation for event hook plugins ...");
152 foreach ($this->component_factory->getActivePluginsInSlot(
"evhk") as
$plugin) {
153 $plugin->handleEvent($a_component, $a_event, $a_parameter);
__construct(?ilLogger $logger=null)
Readable part of repository interface to ilComponentDataDB.
ilArtifactEventHandlingData $event_handling_data
static getLogger(string $a_component_id)
Get component logger.
ilComponentRepository $component_repository
ilComponentFactory $component_factory
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...