ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
All Data Structures Namespaces Files Functions Variables Modules Pages
ilStudyProgrammeAppEventListener Class Reference

Event listener for study programs. More...

+ Collaboration diagram for ilStudyProgrammeAppEventListener:

Static Public Member Functions

static handleEvent ($a_component, $a_event, $a_parameter)
 

Static Private Member Functions

static onServiceUserDeleteUser ($a_parameter)
 
static onServiceTrackingUpdateStatus ($a_par)
 
static onServiceTreeInsertNode ($a_parameter)
 
static onServiceTreeMoveTree ($a_parameter)
 
static onServiceObjectDeleteOrToTrash ($a_parameter)
 
static getStudyProgramme ($a_ref_id)
 
static adjustProgrammeLPMode ($a_ref_id)
 
static addMissingProgresses ($a_ref_id)
 
static addCrsToProgrammes (int $crs_ref_id, int $cat_ref_id)
 
static removeCrsFromProgrammes (int $crs_ref_id, int $cat_ref_id)
 
static addMemberToProgrammes (string $src_type, array $params)
 
static removeMemberFromProgrammes (string $src_type, array $params)
 
static sendReAssignedMail (array $params)
 
static sendInformToReAssignMail (array $params)
 
static sendRiskyToFailMail (array $params)
 

Detailed Description

Event listener for study programs.

Has the following tasks:

  • Remove all assignments of a user on all study programms when the user is removed.
  • Add/Remove courses to/trom study programms, if upper category is under surveillance
Author
Richard Klees richa.nosp@m.rd.k.nosp@m.lees@.nosp@m.conc.nosp@m.epts-.nosp@m.and-.nosp@m.train.nosp@m.ing..nosp@m.de

Definition at line 17 of file class.ilStudyProgrammeAppEventListener.php.

Member Function Documentation

◆ addCrsToProgrammes()

static ilStudyProgrammeAppEventListener::addCrsToProgrammes ( int  $crs_ref_id,
int  $cat_ref_id 
)
staticprivate

Definition at line 254 of file class.ilStudyProgrammeAppEventListener.php.

References ilObjStudyProgramme\addCrsToProgrammes().

255  {
256  ilObjStudyProgramme::addCrsToProgrammes($crs_ref_id, $cat_ref_id);
257  }
static addCrsToProgrammes(int $crs_ref_id, int $cat_ref_id)
Check, if a category is under surveilllance and automatically add the course.
+ Here is the call graph for this function:

◆ addMemberToProgrammes()

static ilStudyProgrammeAppEventListener::addMemberToProgrammes ( string  $src_type,
array  $params 
)
staticprivate

Definition at line 264 of file class.ilStudyProgrammeAppEventListener.php.

References ilObject\_getAllReferences(), ilObjStudyProgramme\addMemberToProgrammes(), ilStudyProgrammeAutoMembershipSource\TYPE_COURSE, ilStudyProgrammeAutoMembershipSource\TYPE_GROUP, and ilStudyProgrammeAutoMembershipSource\TYPE_ROLE.

265  {
266  $usr_id = $params['usr_id'];
267  $id = $params['obj_id'];
268  if (
271  ) {
272  $id = array_shift(ilObject::_getAllReferences($id));
273  }
275  $id = $params['role_id'];
276  }
277 
278  ilObjStudyProgramme::addMemberToProgrammes($src_type, $id, $usr_id);
279  }
static _getAllReferences($a_id)
get all reference ids of object
static addMemberToProgrammes(string $src_type, int $src_id, int $usr_id)
+ Here is the call graph for this function:

◆ addMissingProgresses()

static ilStudyProgrammeAppEventListener::addMissingProgresses (   $a_ref_id)
staticprivate

Definition at line 248 of file class.ilStudyProgrammeAppEventListener.php.

249  {
250  $obj = self::getStudyProgramme($a_ref_id);
251  $obj->addMissingProgresses();
252  }

◆ adjustProgrammeLPMode()

static ilStudyProgrammeAppEventListener::adjustProgrammeLPMode (   $a_ref_id)
staticprivate

Definition at line 242 of file class.ilStudyProgrammeAppEventListener.php.

243  {
244  $obj = self::getStudyProgramme($a_ref_id);
245  $obj->adjustLPMode();
246  }

◆ getStudyProgramme()

static ilStudyProgrammeAppEventListener::getStudyProgramme (   $a_ref_id)
staticprivate

Definition at line 236 of file class.ilStudyProgrammeAppEventListener.php.

References ilObjStudyProgramme\getInstanceByRefId().

237  {
238  require_once("Modules/StudyProgramme/classes/class.ilObjStudyProgramme.php");
239  return ilObjStudyProgramme::getInstanceByRefId($a_ref_id);
240  }
static getInstanceByRefId($a_ref_id)
+ Here is the call graph for this function:

◆ handleEvent()

static ilStudyProgrammeAppEventListener::handleEvent (   $a_component,
  $a_event,
  $a_parameter 
)
static
Exceptions
ilException

Definition at line 23 of file class.ilStudyProgrammeAppEventListener.php.

References ilStudyProgrammeAutoMembershipSource\TYPE_COURSE, ilStudyProgrammeAutoMembershipSource\TYPE_GROUP, ilStudyProgrammeAutoMembershipSource\TYPE_ORGU, and ilStudyProgrammeAutoMembershipSource\TYPE_ROLE.

24  {
25  switch ($a_component) {
26  case "Services/User":
27  switch ($a_event) {
28  case "deleteUser":
29  self::onServiceUserDeleteUser($a_parameter);
30  break;
31  }
32  break;
33  case "Services/Tracking":
34  switch ($a_event) {
35  case "updateStatus":
36  self::onServiceTrackingUpdateStatus($a_parameter);
37  break;
38  }
39  break;
40  case "Services/Tree":
41  switch ($a_event) {
42  case "insertNode":
43  self::onServiceTreeInsertNode($a_parameter);
44  break;
45  case "moveTree":
46  self::onServiceTreeMoveTree($a_parameter);
47  break;
48  }
49  break;
50  case "Services/Object":
51  switch ($a_event) {
52  case "delete":
53  case "toTrash":
54  self::onServiceObjectDeleteOrToTrash($a_parameter);
55  break;
56  }
57  break;
58  case "Services/ContainerReference":
59  switch ($a_event) {
60  case "deleteReference":
61  self::onServiceObjectDeleteOrToTrash($a_parameter);
62  break;
63  }
64  break;
65 
66  case "Modules/Course":
67  switch ($a_event) {
68  case "addParticipant":
69  self::addMemberToProgrammes(
71  $a_parameter
72  );
73  break;
74  case "deleteParticipant":
75  self::removeMemberFromProgrammes(
77  $a_parameter
78  );
79  break;
80  }
81  break;
82  case "Modules/Group":
83  switch ($a_event) {
84  case "addParticipant":
85  self::addMemberToProgrammes(
87  $a_parameter
88  );
89  break;
90  case "deleteParticipant":
91  self::removeMemberFromProgrammes(
93  $a_parameter
94  );
95  break;
96  }
97  break;
98  case "Services/AccessControl":
99  switch ($a_event) {
100  case "assignUser":
101  self::addMemberToProgrammes(
103  $a_parameter
104  );
105  break;
106  case "deassignUser":
107  self::removeMemberFromProgrammes(
109  $a_parameter
110  );
111  break;
112  }
113  break;
114  case "Modules/OrgUnit":
115  switch ($a_event) {
116  case "assignUserToPosition":
117  self::addMemberToProgrammes(
119  $a_parameter
120  );
121  break;
122  case "deassignUserFromPosition":
123  //case "delete":
124  self::removeMemberFromProgrammes(
126  $a_parameter
127  );
128  break;
129  }
130  break;
131  case "Modules/StudyProgramme":
132  switch ($a_event) {
133  case "userReAssigned":
134  self::sendReAssignedMail($a_parameter);
135  break;
136  case 'informUserToRestart':
137  self::sendInformToReAssignMail($a_parameter);
138  break;
139  case 'userRiskyToFail':
140  self::sendRiskyToFailMail($a_parameter);
141  }
142  break;#
143  default:
144  throw new ilException("ilStudyProgrammeAppEventListener::handleEvent: "
145  . "Won't handle events of '$a_component'.");
146  }
147  }

◆ onServiceObjectDeleteOrToTrash()

static ilStudyProgrammeAppEventListener::onServiceObjectDeleteOrToTrash (   $a_parameter)
staticprivate

Definition at line 221 of file class.ilStudyProgrammeAppEventListener.php.

References ilObject\_lookupType().

222  {
223  $node_ref_id = $a_parameter["ref_id"];
224  $old_parent_ref_id = $a_parameter["old_parent_ref_id"];
225 
226  $node_type = $a_parameter["type"];
227  $old_parent_type = ilObject::_lookupType($old_parent_ref_id, true);
228 
229  if ($old_parent_type !== "prg") {
230  return;
231  }
232 
233  self::adjustProgrammeLPMode($old_parent_ref_id);
234  }
static _lookupType($a_id, $a_reference=false)
lookup object type
+ Here is the call graph for this function:

◆ onServiceTrackingUpdateStatus()

static ilStudyProgrammeAppEventListener::onServiceTrackingUpdateStatus (   $a_par)
staticprivate

Definition at line 157 of file class.ilStudyProgrammeAppEventListener.php.

References ilLPStatus\LP_STATUS_COMPLETED_NUM, and ilObjStudyProgramme\setProgressesCompletedFor().

158  {
159  require_once("./Services/Tracking/classes/class.ilLPStatus.php");
160  if ($a_par["status"] != ilLPStatus::LP_STATUS_COMPLETED_NUM) {
161  return;
162  }
163 
164  require_once("./Modules/StudyProgramme/classes/class.ilObjStudyProgramme.php");
165  ilObjStudyProgramme::setProgressesCompletedFor((int) $a_par["obj_id"], (int) $a_par["usr_id"]);
166  }
const LP_STATUS_COMPLETED_NUM
static setProgressesCompletedFor(int $a_obj_id, int $a_user_id)
Set all progresses to completed where the object with given id is a leaf and that belong to the user...
+ Here is the call graph for this function:

◆ onServiceTreeInsertNode()

static ilStudyProgrammeAppEventListener::onServiceTreeInsertNode (   $a_parameter)
staticprivate

Definition at line 168 of file class.ilStudyProgrammeAppEventListener.php.

References ilObject\_lookupType().

169  {
170  $node_ref_id = $a_parameter["node_id"];
171  $parent_ref_id = $a_parameter["parent_id"];
172 
173  $node_type = ilObject::_lookupType($node_ref_id, true);
174  $parent_type = ilObject::_lookupType($parent_ref_id, true);
175 
176  if ($node_type == "crsr" && $parent_type == "prg") {
177  self::adjustProgrammeLPMode($parent_ref_id);
178  }
179  if (in_array($node_type, ["prg", "prgr"]) && $parent_type == "prg") {
180  self::addMissingProgresses($parent_ref_id);
181  }
182  if ($node_type == "crs" && $parent_type == "cat") {
183  self::addCrsToProgrammes($node_ref_id, $parent_ref_id);
184  }
185  }
static _lookupType($a_id, $a_reference=false)
lookup object type
+ Here is the call graph for this function:

◆ onServiceTreeMoveTree()

static ilStudyProgrammeAppEventListener::onServiceTreeMoveTree (   $a_parameter)
staticprivate

Definition at line 187 of file class.ilStudyProgrammeAppEventListener.php.

References ilObject\_lookupType().

188  {
189  $node_ref_id = $a_parameter["source_id"];
190  $new_parent_ref_id = $a_parameter["target_id"];
191  $old_parent_ref_id = $a_parameter["old_parent_id"];
192 
193  $node_type = ilObject::_lookupType($node_ref_id, true);
194  $new_parent_type = ilObject::_lookupType($new_parent_ref_id, true);
195  $old_parent_type = ilObject::_lookupType($old_parent_ref_id, true);
196 
197  if (!in_array($node_type, ["crsr","crs"])
198  || (
199  ($new_parent_type != "prg" && $old_parent_type != "prg")
200  &&
201  $old_parent_type != "cat"
202  )
203  ) {
204  return;
205  }
206 
207  if ($node_type === 'crs') {
208  self::removeCrsFromProgrammes($node_ref_id, $old_parent_ref_id);
209  if ($new_parent_type === 'cat') {
210  self::addCrsToProgrammes($node_ref_id, $new_parent_ref_id);
211  }
212  }
213 
214  if ($new_parent_type == "prg") {
215  self::adjustProgrammeLPMode($new_parent_ref_id);
216  } elseif ($old_parent_type == "prg") {
217  self::adjustProgrammeLPMode($old_parent_ref_id);
218  }
219  }
static _lookupType($a_id, $a_reference=false)
lookup object type
+ Here is the call graph for this function:

◆ onServiceUserDeleteUser()

static ilStudyProgrammeAppEventListener::onServiceUserDeleteUser (   $a_parameter)
staticprivate

Definition at line 149 of file class.ilStudyProgrammeAppEventListener.php.

References ilStudyProgrammeDIC\dic().

150  {
151  $assignments = ilStudyProgrammeDIC::dic()['ilStudyProgrammeUserAssignmentDB']->getInstancesOfUser((int) $a_parameter["usr_id"]);
152  foreach ($assignments as $ass) {
153  $ass->deassign();
154  }
155  }
+ Here is the call graph for this function:

◆ removeCrsFromProgrammes()

static ilStudyProgrammeAppEventListener::removeCrsFromProgrammes ( int  $crs_ref_id,
int  $cat_ref_id 
)
staticprivate

Definition at line 259 of file class.ilStudyProgrammeAppEventListener.php.

References ilObjStudyProgramme\removeCrsFromProgrammes().

260  {
261  ilObjStudyProgramme::removeCrsFromProgrammes($crs_ref_id, $cat_ref_id);
262  }
static removeCrsFromProgrammes(int $crs_ref_id, int $cat_ref_id)
Check, if a category is under surveilllance and automatically remove the deleted course.
+ Here is the call graph for this function:

◆ removeMemberFromProgrammes()

static ilStudyProgrammeAppEventListener::removeMemberFromProgrammes ( string  $src_type,
array  $params 
)
staticprivate

Definition at line 281 of file class.ilStudyProgrammeAppEventListener.php.

References ilObject\_getAllReferences(), ilObjStudyProgramme\removeMemberFromProgrammes(), ilStudyProgrammeAutoMembershipSource\TYPE_COURSE, ilStudyProgrammeAutoMembershipSource\TYPE_GROUP, and ilStudyProgrammeAutoMembershipSource\TYPE_ROLE.

282  {
283  $usr_id = $params['usr_id'];
284  $id = $params['obj_id'];
285  if (
288  ) {
289  $id = array_shift(ilObject::_getAllReferences($id));
290  }
292  $id = $params['role_id'];
293  }
294 
295  ilObjStudyProgramme::removeMemberFromProgrammes($src_type, $id, $usr_id);
296  }
static _getAllReferences($a_id)
get all reference ids of object
static removeMemberFromProgrammes(string $src_type, int $src_id, int $usr_id)
+ Here is the call graph for this function:

◆ sendInformToReAssignMail()

static ilStudyProgrammeAppEventListener::sendInformToReAssignMail ( array  $params)
staticprivate
Exceptions
ilException

Definition at line 309 of file class.ilStudyProgrammeAppEventListener.php.

309  : void
310  {
311  $usr_id = $params['usr_id'];
312  $assignment_id = $params['ass_id'];
313 
314  ilStudyProgrammeUserAssignment::sendInformToReAssignMail($assignment_id, $usr_id);
315  }

◆ sendReAssignedMail()

static ilStudyProgrammeAppEventListener::sendReAssignedMail ( array  $params)
staticprivate

Definition at line 298 of file class.ilStudyProgrammeAppEventListener.php.

298  : void
299  {
300  $usr_id = $params['usr_id'];
301  $ref_id = $params['root_prg_ref_id'];
302 
303  ilObjStudyProgramme::sendReAssignedMail($ref_id, $usr_id);
304  }

◆ sendRiskyToFailMail()

static ilStudyProgrammeAppEventListener::sendRiskyToFailMail ( array  $params)
staticprivate
Exceptions
ilException

Definition at line 320 of file class.ilStudyProgrammeAppEventListener.php.

320  : void
321  {
322  $usr_id = $params['usr_id'];
323  $progress_id = $params['progress_id'];
324 
325  ilStudyProgrammeUserProgress::sendRiskyToFailMail($progress_id, $usr_id);
326  }

The documentation for this class was generated from the following file: