ILIAS  release_7 Revision v7.30-3-g800a261c036
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 255 of file class.ilStudyProgrammeAppEventListener.php.

References ilObjStudyProgramme\addCrsToProgrammes().

256  {
257  ilObjStudyProgramme::addCrsToProgrammes($crs_ref_id, $cat_ref_id);
258  }
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 265 of file class.ilStudyProgrammeAppEventListener.php.

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

266  {
267  $usr_id = $params['usr_id'];
268  $id = $params['obj_id'];
269  if (
272  ) {
273  $id = array_shift(ilObject::_getAllReferences($id));
274  }
276  $id = $params['role_id'];
277  }
278 
279  ilObjStudyProgramme::addMemberToProgrammes($src_type, $id, $usr_id);
280  }
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 249 of file class.ilStudyProgrammeAppEventListener.php.

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

◆ adjustProgrammeLPMode()

static ilStudyProgrammeAppEventListener::adjustProgrammeLPMode (   $a_ref_id)
staticprivate

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

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

◆ getStudyProgramme()

static ilStudyProgrammeAppEventListener::getStudyProgramme (   $a_ref_id)
staticprivate

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

References ilObjStudyProgramme\getInstanceByRefId().

238  {
239  require_once("Modules/StudyProgramme/classes/class.ilObjStudyProgramme.php");
240  return ilObjStudyProgramme::getInstanceByRefId($a_ref_id);
241  }
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 222 of file class.ilStudyProgrammeAppEventListener.php.

References ilObject\_lookupType().

223  {
224  $node_ref_id = $a_parameter["ref_id"];
225  $old_parent_ref_id = $a_parameter["old_parent_ref_id"];
226 
227  $node_type = $a_parameter["type"];
228  $old_parent_type = ilObject::_lookupType($old_parent_ref_id, true);
229 
230  if ($old_parent_type !== "prg") {
231  return;
232  }
233 
234  self::adjustProgrammeLPMode($old_parent_ref_id);
235  }
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 158 of file class.ilStudyProgrammeAppEventListener.php.

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

159  {
160  require_once("./Services/Tracking/classes/class.ilLPStatus.php");
161  if ($a_par["status"] != ilLPStatus::LP_STATUS_COMPLETED_NUM) {
162  return;
163  }
164 
165  require_once("./Modules/StudyProgramme/classes/class.ilObjStudyProgramme.php");
166  ilObjStudyProgramme::setProgressesCompletedFor((int) $a_par["obj_id"], (int) $a_par["usr_id"]);
167  }
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 169 of file class.ilStudyProgrammeAppEventListener.php.

References ilObject\_lookupType().

170  {
171  $node_ref_id = $a_parameter["node_id"];
172  $parent_ref_id = $a_parameter["parent_id"];
173 
174  $node_type = ilObject::_lookupType($node_ref_id, true);
175  $parent_type = ilObject::_lookupType($parent_ref_id, true);
176 
177  if ($node_type == "crsr" && $parent_type == "prg") {
178  self::adjustProgrammeLPMode($parent_ref_id);
179  }
180  if (in_array($node_type, ["prg", "prgr"]) && $parent_type == "prg") {
181  self::addMissingProgresses($parent_ref_id);
182  }
183  if ($node_type == "crs" && $parent_type == "cat") {
184  self::addCrsToProgrammes($node_ref_id, $parent_ref_id);
185  }
186  }
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 188 of file class.ilStudyProgrammeAppEventListener.php.

References ilObject\_lookupType().

189  {
190  $node_ref_id = $a_parameter["source_id"];
191  $new_parent_ref_id = $a_parameter["target_id"];
192  $old_parent_ref_id = $a_parameter["old_parent_id"];
193 
194  $node_type = ilObject::_lookupType($node_ref_id, true);
195  $new_parent_type = ilObject::_lookupType($new_parent_ref_id, true);
196  $old_parent_type = ilObject::_lookupType($old_parent_ref_id, true);
197 
198  if (!in_array($node_type, ["crsr","crs"])
199  || (
200  ($new_parent_type != "prg" && $old_parent_type != "prg")
201  &&
202  $old_parent_type != "cat"
203  )
204  ) {
205  return;
206  }
207 
208  if ($node_type === 'crs') {
209  self::removeCrsFromProgrammes($node_ref_id, $old_parent_ref_id);
210  if ($new_parent_type === 'cat') {
211  self::addCrsToProgrammes($node_ref_id, $new_parent_ref_id);
212  }
213  }
214 
215  if ($new_parent_type == "prg") {
216  self::adjustProgrammeLPMode($new_parent_ref_id);
217  } elseif ($old_parent_type == "prg") {
218  self::adjustProgrammeLPMode($old_parent_ref_id);
219  }
220  }
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(), and ilObjStudyProgramme\getInstanceByObjId().

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

◆ removeCrsFromProgrammes()

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

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

References ilObjStudyProgramme\removeCrsFromProgrammes().

261  {
262  ilObjStudyProgramme::removeCrsFromProgrammes($crs_ref_id, $cat_ref_id);
263  }
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 282 of file class.ilStudyProgrammeAppEventListener.php.

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

283  {
284  $usr_id = $params['usr_id'];
285  $id = $params['obj_id'];
286  if (
289  ) {
290  $id = array_shift(ilObject::_getAllReferences($id));
291  }
293  $id = $params['role_id'];
294  }
295 
296  ilObjStudyProgramme::removeMemberFromProgrammes($src_type, $id, $usr_id);
297  }
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

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

References ilObjStudyProgramme\sendInformToReAssignMail().

306  : void
307  {
308  $usr_id = $params['usr_id'];
309  $progress_id = $params['progress_id'];
310  ilObjStudyProgramme::sendInformToReAssignMail($progress_id, $usr_id);
311  }
static sendInformToReAssignMail(int $progress_id, int $usr_id)
+ Here is the call graph for this function:

◆ sendReAssignedMail()

static ilStudyProgrammeAppEventListener::sendReAssignedMail ( array  $params)
staticprivate

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

References ilObjStudyProgramme\sendReAssignedMail().

299  : void
300  {
301  $usr_id = $params['usr_id'];
302  $ref_id = $params['root_prg_ref_id'];
304  }
static sendReAssignedMail(int $ref_id, int $usr_id)
+ Here is the call graph for this function:

◆ sendRiskyToFailMail()

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

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

References ilObjStudyProgramme\sendRiskyToFailMail().

316  : void
317  {
318  $usr_id = $params['usr_id'];
319  $progress_id = $params['progress_id'];
320  ilObjStudyProgramme::sendRiskyToFailMail($progress_id, $usr_id);
321  }
static sendRiskyToFailMail(int $progress_id, int $usr_id)
+ Here is the call graph for this function:

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