ILIAS  release_8 Revision v8.24
class.ilStudyProgrammeEvents.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22{
24
25 public const PUBLIC_EVENTS = [
29 ];
30 /*
31 self::EVENT_USER_SUCCESSFUL,
32 self::EVENT_USER_NOT_SUCCESSFUL,
33 self::EVENT_VALIDITY_CHANGE,
34 self::EVENT_SCORE_CHANGE
35
36 will all trigger self::EVENT_USER_SUCCESSFUL on ilAppEventHandler,
37 but only once! and for root-prg only.
38 This prevents e.g. certificate to rebuild on every (sucessive) change
39 */
40
41 public function __construct(
42 ilLogger $logger,
44 PRGEventHandler $prg_event_handler
45 ) {
46 $this->logger = $logger;
47 $this->app_event_handler = $app_event_handler;
48 $this->prg_event_handler = $prg_event_handler;
49 }
50
51 public function raise(string $event, array $parameter): void
52 {
53 $parameter_formatter = static function ($value) use (&$parameter_formatter) {
54 if (is_object($value)) {
55 return get_class($value);
56 }
57
58 if (is_array($value)) {
59 return array_map(
60 $parameter_formatter,
61 $value
62 );
63 }
64
65 return $value;
66 };
67
68 $this->logger->debug("PRG raised: " . $event . ' (' . var_export(array_map(
69 $parameter_formatter,
70 $parameter
71 ), true) . ')');
72
73 if (in_array($event, [
74 self::EVENT_USER_ASSIGNED,
75 self::EVENT_USER_DEASSIGNED,
76 self::EVENT_USER_SUCCESSFUL,
77 self::EVENT_USER_NOT_SUCCESSFUL,
78 self::EVENT_VALIDITY_CHANGE
79 ])) {
80 $this->prg_event_handler->updateLPStatus($parameter['prg_id'], $parameter['usr_id']);
81 }
82
83 if (in_array($event, [
84 self::EVENT_USER_SUCCESSFUL,
85 self::EVENT_USER_NOT_SUCCESSFUL,
86 self::EVENT_VALIDITY_CHANGE,
87 self::EVENT_SCORE_CHANGE
88 ])
89 && $parameter["root_prg_id"] === $parameter["prg_id"]
90 ) {
91 $cert = fn () => $this->app_event_handler->raise(self::COMPONENT, self::EVENT_USER_SUCCESSFUL, $parameter);
92 $this->prg_event_handler->triggerCertificateOnce($cert, $parameter["root_prg_id"], $parameter["usr_id"]);
93 }
94
95 if ($event === self::EVENT_USER_ABOUT_TO_FAIL) {
96 $this->prg_event_handler->sendRiskyToFailMail($parameter['ass_id'], $parameter['root_prg_id']);
97 }
98 if ($event === self::EVENT_USER_TO_RESTART) {
99 $this->prg_event_handler->sendInformToReAssignMail($parameter['ass_id'], $parameter['root_prg_id']);
100 }
101 if ($event === self::EVENT_USER_REASSIGNED) {
102 $this->prg_event_handler->sendReAssignedMail($parameter['ass_id'], $parameter['root_prg_id']);
103 }
104 if ($event === self::EVENT_VALIDITY_CHANGE) {
105 $this->prg_event_handler->resetMailFlagValidity($parameter['ass_id'], $parameter['root_prg_id']);
106 }
107 if ($event === self::EVENT_DEADLINE_CHANGE) {
108 $this->prg_event_handler->resetMailFlagDeadline($parameter['ass_id'], $parameter['root_prg_id']);
109 }
110
111 if (in_array($event, self::PUBLIC_EVENTS)) {
112 $this->app_event_handler->raise(self::COMPONENT, $event, $parameter);
113 }
114 }
115
116 public function userAssigned(ilPRGAssignment $assignment): void
117 {
118 $this->raise(
120 [
121 "root_prg_id" => $assignment->getRootId(),
122 "prg_id" => $assignment->getRootId(),
123 "usr_id" => $assignment->getUserId(),
124 "ass_id" => $assignment->getId()
125 ]
126 );
127 }
128
129 public function userDeassigned(ilPRGAssignment $a_assignment): void
130 {
131 $this->raise(
133 [
134 "root_prg_id" => $a_assignment->getRootId(),
135 "prg_id" => $a_assignment->getRootId(),
136 "usr_id" => $a_assignment->getUserId(),
137 "ass_id" => $a_assignment->getId()
138 ]
139 );
140 }
141
142 public function userReAssigned(ilPRGAssignment $assignment): void
143 {
144 $this->raise(
146 [
147 "ass_id" => $assignment->getId(),
148 "root_prg_id" => (int) $assignment->getRootId()
149 ]
150 );
151 }
152
153 public function userSuccessful(ilPRGAssignment $assignment, int $pgs_node_id): void
154 {
155 $this->raise(
157 [
158 "root_prg_id" => $assignment->getRootId(),
159 "prg_id" => $pgs_node_id,
160 "usr_id" => $assignment->getUserId(),
161 "ass_id" => $assignment->getId()
162 ]
163 );
164 }
165
166 public function informUserByMailToRestart(ilPRGAssignment $assignment): void
167 {
168 $this->raise(
170 [
171 "ass_id" => (int) $assignment->getId(),
172 "root_prg_id" => (int) $assignment->getRootId()
173 ]
174 );
175 }
176
177 public function userRiskyToFail(ilPRGAssignment $assignment): void
178 {
179 $this->raise(
181 [
182 "ass_id" => (int) $assignment->getId(),
183 "root_prg_id" => (int) $assignment->getRootId()
184 ]
185 );
186 }
187
188 public function validityChange(ilPRGAssignment $assignment, int $pgs_node_id): void
189 {
190 $this->raise(self::EVENT_VALIDITY_CHANGE, [
191 "ass_id" => $assignment->getId(),
192 "root_prg_id" => $assignment->getRootId(),
193 "prg_id" => $pgs_node_id,
194 "usr_id" => $assignment->getUserId()
195 ]);
196 }
197
198 public function deadlineChange(ilPRGAssignment $assignment, int $pgs_node_id): void
199 {
200 $this->raise(self::EVENT_DEADLINE_CHANGE, [
201 "ass_id" => $assignment->getId(),
202 "root_prg_id" => $assignment->getRootId(),
203 "prg_id" => $pgs_node_id,
204 "usr_id" => $assignment->getUserId()
205 ]);
206 }
207
208 public function scoreChange(ilPRGAssignment $assignment, int $pgs_node_id): void
209 {
210 $this->raise(self::EVENT_SCORE_CHANGE, [
211 "ass_id" => $assignment->getId(),
212 "root_prg_id" => $assignment->getRootId(),
213 "prg_id" => $pgs_node_id,
214 "usr_id" => $assignment->getUserId()
215 ]);
216 }
217
218 public function userRevertSuccessful(ilPRGAssignment $assignment, int $pgs_node_id): void
219 {
220 $this->raise(self::EVENT_USER_NOT_SUCCESSFUL, [
221 "ass_id" => $assignment->getId(),
222 "root_prg_id" => $assignment->getRootId(),
223 "prg_id" => $pgs_node_id,
224 "usr_id" => $assignment->getUserId()
225 ]);
226 }
227}
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Global event handler.
Component logger with individual log levels by component id.
Assignments are relations of users to a PRG; They hold progress-information for (sub-)nodes of the PR...
informUserByMailToRestart(ilPRGAssignment $assignment)
userAssigned(ilPRGAssignment $assignment)
userReAssigned(ilPRGAssignment $assignment)
scoreChange(ilPRGAssignment $assignment, int $pgs_node_id)
validityChange(ilPRGAssignment $assignment, int $pgs_node_id)
userRiskyToFail(ilPRGAssignment $assignment)
__construct(ilLogger $logger, ilAppEventHandler $app_event_handler, PRGEventHandler $prg_event_handler)
userSuccessful(ilPRGAssignment $assignment, int $pgs_node_id)
deadlineChange(ilPRGAssignment $assignment, int $pgs_node_id)
userRevertSuccessful(ilPRGAssignment $assignment, int $pgs_node_id)
userDeassigned(ilPRGAssignment $a_assignment)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...