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