ILIAS  trunk Revision v11.0_alpha-1769-g99a433fe2dc
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
ilStudyProgrammeAppEventListener Class Reference

Event listener for study programs. More...

+ Collaboration diagram for ilStudyProgrammeAppEventListener:

Static Public Member Functions

static handleEvent (string $component, string $event, array $parameter)
 

Static Private Member Functions

static onServiceUserDeleteUser (array $parameter)
 
static onServiceTrackingUpdateStatus (array $parameter)
 
static onServiceTreeInsertNode (array $parameter)
 
static onServiceTreeMoveTree (array $parameter)
 
static onServiceObjectDeleteOrToTrash (array $parameter)
 
static getStudyProgramme (int $ref_id)
 
static adjustProgrammeLPMode (int $ref_id)
 
static addMissingProgresses (int $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)
 

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/from 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 32 of file class.ilStudyProgrammeAppEventListener.php.

Member Function Documentation

◆ addCrsToProgrammes()

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

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

References ilObjStudyProgramme\addCrsToProgrammes().

279  : void
280  {
281  ilObjStudyProgramme::addCrsToProgrammes($crs_ref_id, $cat_ref_id);
282  }
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 289 of file class.ilStudyProgrammeAppEventListener.php.

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

289  : void
290  {
291  $usr_id = $params['usr_id'];
292  $id = $params['obj_id'];
293  if (
296  ) {
297  $ref_ids = ilObject::_getAllReferences($id);
298  $id = array_shift($ref_ids);
299  }
301  $id = $params['role_id'];
302  }
303 
304  ilObjStudyProgramme::addMemberToProgrammes($src_type, $id, $usr_id);
305  }
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
Definition: ltiregstart.php:31
static _getAllReferences(int $id)
get all reference ids for object ID
static addMemberToProgrammes(string $src_type, int $src_id, int $usr_id)
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
+ Here is the call graph for this function:

◆ addMissingProgresses()

static ilStudyProgrammeAppEventListener::addMissingProgresses ( int  $ref_id)
staticprivate

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

273  : void
274  {
275  $obj = self::getStudyProgramme($ref_id);
276  $obj->addMissingProgresses();
277  }
$ref_id
Definition: ltiauth.php:65

◆ adjustProgrammeLPMode()

static ilStudyProgrammeAppEventListener::adjustProgrammeLPMode ( int  $ref_id)
staticprivate

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

267  : void
268  {
269  $obj = self::getStudyProgramme($ref_id);
270  $obj->adjustLPMode();
271  }
$ref_id
Definition: ltiauth.php:65

◆ getStudyProgramme()

static ilStudyProgrammeAppEventListener::getStudyProgramme ( int  $ref_id)
staticprivate

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

References ilObjStudyProgramme\getInstanceByRefId().

+ Here is the call graph for this function:

◆ handleEvent()

static ilStudyProgrammeAppEventListener::handleEvent ( string  $component,
string  $event,
array  $parameter 
)
static
Exceptions
ilException

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

References $DIC, Vendor\Package\$e, ilStudyProgrammeAutoMembershipSource\TYPE_COURSE, ilStudyProgrammeAutoMembershipSource\TYPE_GROUP, ilStudyProgrammeAutoMembershipSource\TYPE_ORGU, and ilStudyProgrammeAutoMembershipSource\TYPE_ROLE.

37  : void
38  {
39  global $DIC;
40 
41  switch ($component) {
42  case "components/ILIAS/User":
43  switch ($event) {
44  case "deleteUser":
45  self::onServiceUserDeleteUser($parameter);
46  break;
47  }
48  break;
49  case "components/ILIAS/Tracking":
50  switch ($event) {
51  case "updateStatus":
52  self::onServiceTrackingUpdateStatus($parameter);
53  break;
54  }
55  break;
56  case "components/ILIAS/Tree":
57  switch ($event) {
58  case "insertNode":
59  self::onServiceTreeInsertNode($parameter);
60  break;
61  case "moveTree":
62  self::onServiceTreeMoveTree($parameter);
63  break;
64  }
65  break;
66  case "components/ILIAS/ILIASObject":
67  switch ($event) {
68  case "delete":
69  case "toTrash":
70  self::onServiceObjectDeleteOrToTrash($parameter);
71  break;
72  }
73  break;
74  case "components/ILIAS/ContainerReference":
75  switch ($event) {
76  case "deleteReference":
77  self::onServiceObjectDeleteOrToTrash($parameter);
78  break;
79  }
80  break;
81 
82  case "components/ILIAS/Course":
83  switch ($event) {
84  case "addParticipant":
85  self::addMemberToProgrammes(
87  $parameter
88  );
89  break;
90  case "deleteParticipant":
91  self::removeMemberFromProgrammes(
93  $parameter
94  );
95  break;
96  }
97  break;
98  case "components/ILIAS/Group":
99  switch ($event) {
100  case "addParticipant":
101  self::addMemberToProgrammes(
103  $parameter
104  );
105  break;
106  case "deleteParticipant":
107  self::removeMemberFromProgrammes(
109  $parameter
110  );
111  break;
112  }
113  break;
114  case "components/ILIAS/AccessControl":
115  switch ($event) {
116  case "assignUser":
117  self::addMemberToProgrammes(
119  $parameter
120  );
121  break;
122  case "deassignUser":
123  self::removeMemberFromProgrammes(
125  $parameter
126  );
127  break;
128  }
129  break;
130  case "components/ILIAS/OrgUnit":
131  switch ($event) {
132  case "assignUserToPosition":
133  self::addMemberToProgrammes(
135  $parameter
136  );
137  break;
138  case "deassignUserFromPosition":
139  self::removeMemberFromProgrammes(
141  $parameter
142  );
143  break;
144  }
145  break;
146 
147  case 'components/ILIAS/StudyProgramme':
148  switch ($event) {
149  case 'userSuccessful':
150  try {
151  $DIC->certificate()->userCertificates()->certificateCriteriaMet(
152  (int) $parameter['usr_id'],
153  (int) $parameter['prg_id']
154  );
156  }
157  break;
158  }
159  break;
160 
161  default:
162  throw new ilException(
163  "ilStudyProgrammeAppEventListener::handleEvent: Won't handle events of '$component'."
164  );
165  }
166  }
global $DIC
Definition: shib_login.php:22

◆ onServiceObjectDeleteOrToTrash()

static ilStudyProgrammeAppEventListener::onServiceObjectDeleteOrToTrash ( array  $parameter)
staticprivate

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

References ilObject\_lookupType(), and ILIAS\Repository\int().

249  : void
250  {
251  $old_parent_ref_id = (int) $parameter["old_parent_ref_id"];
252 
253  $old_parent_type = ilObject::_lookupType($old_parent_ref_id, true);
254 
255  if ($old_parent_type !== "prg") {
256  return;
257  }
258 
259  self::adjustProgrammeLPMode($old_parent_ref_id);
260  }
static _lookupType(int $id, bool $reference=false)
+ Here is the call graph for this function:

◆ onServiceTrackingUpdateStatus()

static ilStudyProgrammeAppEventListener::onServiceTrackingUpdateStatus ( array  $parameter)
staticprivate

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

References ilObject\_getAllReferences(), ilContainerReference\_lookupSourceIds(), ilLPStatus\LP_STATUS_COMPLETED_NUM, and ilObjStudyProgramme\setProgressesCompletedIfParentIsProgrammeInLPCompletedMode().

178  : void
179  {
180  if ((int) $parameter["status"] !== ilLPStatus::LP_STATUS_COMPLETED_NUM) {
181  return;
182  }
183 
184  $crs_reference_obj_ids = ilContainerReference::_lookupSourceIds((int) $parameter["obj_id"]);
185  foreach ($crs_reference_obj_ids as $crsr_obj_id) {
186  foreach (ilObject::_getAllReferences($crsr_obj_id) as $crsr_ref_id) {
188  $crsr_ref_id,
189  (int) $parameter["obj_id"],
190  (int) $parameter["usr_id"]
191  );
192  }
193  }
194  }
const LP_STATUS_COMPLETED_NUM
static _getAllReferences(int $id)
get all reference ids for object ID
static _lookupSourceIds(int $a_target_id)
Get ids of all container references that target the object with the given id.
static setProgressesCompletedIfParentIsProgrammeInLPCompletedMode(int $ref_id, int $obj_id, int $user_id)
+ Here is the call graph for this function:

◆ onServiceTreeInsertNode()

static ilStudyProgrammeAppEventListener::onServiceTreeInsertNode ( array  $parameter)
staticprivate

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

References ilObject\_lookupType(), and ILIAS\Repository\int().

196  : void
197  {
198  $node_ref_id = (int) $parameter["node_id"];
199  $parent_ref_id = (int) $parameter["parent_id"];
200 
201  $node_type = ilObject::_lookupType($node_ref_id, true);
202  $parent_type = ilObject::_lookupType($parent_ref_id, true);
203 
204  if ($node_type === "crsr" && $parent_type === "prg") {
205  self::adjustProgrammeLPMode($parent_ref_id);
206  }
207  if ($parent_type === "prg" && in_array($node_type, ["prg", "prgr"])) {
208  self::addMissingProgresses($parent_ref_id);
209  }
210  if ($node_type === "crs" && $parent_type === "cat") {
211  self::addCrsToProgrammes($node_ref_id, $parent_ref_id);
212  }
213  }
static _lookupType(int $id, bool $reference=false)
+ Here is the call graph for this function:

◆ onServiceTreeMoveTree()

static ilStudyProgrammeAppEventListener::onServiceTreeMoveTree ( array  $parameter)
staticprivate

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

References ilObject\_lookupType(), and ILIAS\Repository\int().

215  : void
216  {
217  $node_ref_id = (int) $parameter["source_id"];
218  $new_parent_ref_id = (int) $parameter["target_id"];
219  $old_parent_ref_id = (int) $parameter["old_parent_id"];
220 
221  $node_type = ilObject::_lookupType($node_ref_id, true);
222  $new_parent_type = ilObject::_lookupType($new_parent_ref_id, true);
223  $old_parent_type = ilObject::_lookupType($old_parent_ref_id, true);
224 
225  if (!in_array($node_type, ["crsr","crs"])
226  || (
227  ($new_parent_type !== "prg" && $old_parent_type !== "prg")
228  &&
229  $old_parent_type !== "cat"
230  )
231  ) {
232  return;
233  }
234 
235  if ($node_type === 'crs') {
236  self::removeCrsFromProgrammes($node_ref_id, $old_parent_ref_id);
237  if ($new_parent_type === 'cat') {
238  self::addCrsToProgrammes($node_ref_id, $new_parent_ref_id);
239  }
240  }
241 
242  if ($new_parent_type === "prg") {
243  self::adjustProgrammeLPMode($new_parent_ref_id);
244  } elseif ($old_parent_type === "prg") {
245  self::adjustProgrammeLPMode($old_parent_ref_id);
246  }
247  }
static _lookupType(int $id, bool $reference=false)
+ Here is the call graph for this function:

◆ onServiceUserDeleteUser()

static ilStudyProgrammeAppEventListener::onServiceUserDeleteUser ( array  $parameter)
staticprivate

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

References ilStudyProgrammeDIC\dic().

168  : void
169  {
170  $repo = ilStudyProgrammeDIC::dic()['repo.assignment'];
171  $assignments = $repo->getForUser((int) $parameter["usr_id"]);
172 
173  foreach ($assignments as $ass) {
174  $repo->delete($ass);
175  }
176  }
+ Here is the call graph for this function:

◆ removeCrsFromProgrammes()

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

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

References ilObjStudyProgramme\removeCrsFromProgrammes().

284  : void
285  {
286  ilObjStudyProgramme::removeCrsFromProgrammes($crs_ref_id, $cat_ref_id);
287  }
static removeCrsFromProgrammes(int $crs_ref_id, int $cat_ref_id)
Check, if a category is under surveillance 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 307 of file class.ilStudyProgrammeAppEventListener.php.

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

307  : void
308  {
309  $usr_id = $params['usr_id'];
310  $id = $params['obj_id'];
311  if (
314  ) {
315  $ref_ids = ilObject::_getAllReferences($id);
316  $id = array_shift($ref_ids);
317  }
319  $id = $params['role_id'];
320  }
321 
322  ilObjStudyProgramme::removeMemberFromProgrammes($src_type, $id, (int) $usr_id);
323  }
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
Definition: ltiregstart.php:31
static _getAllReferences(int $id)
get all reference ids for object ID
static removeMemberFromProgrammes(string $src_type, int $src_id, int $usr_id)
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
+ Here is the call graph for this function:

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