ILIAS  release_8 Revision v8.19
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 (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 268 of file class.ilStudyProgrammeAppEventListener.php.

References ilObjStudyProgramme\addCrsToProgrammes().

268  : void
269  {
270  ilObjStudyProgramme::addCrsToProgrammes($crs_ref_id, $cat_ref_id);
271  }
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 278 of file class.ilStudyProgrammeAppEventListener.php.

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

278  : void
279  {
280  $usr_id = $params['usr_id'];
281  $id = $params['obj_id'];
282  if (
285  ) {
286  $ref_ids = ilObject::_getAllReferences($id);
287  $id = array_shift($ref_ids);
288  }
290  $id = $params['role_id'];
291  }
292 
293  ilObjStudyProgramme::addMemberToProgrammes($src_type, $id, $usr_id);
294  }
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
Definition: ltiregstart.php:33
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 262 of file class.ilStudyProgrammeAppEventListener.php.

262  : void
263  {
264  $obj = self::getStudyProgramme($ref_id);
265  $obj->addMissingProgresses();
266  }
$ref_id
Definition: ltiauth.php:67

◆ adjustProgrammeLPMode()

static ilStudyProgrammeAppEventListener::adjustProgrammeLPMode ( int  $ref_id)
staticprivate

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

256  : void
257  {
258  $obj = self::getStudyProgramme($ref_id);
259  $obj->adjustLPMode();
260  }
$ref_id
Definition: ltiauth.php:67

◆ getStudyProgramme()

static ilStudyProgrammeAppEventListener::getStudyProgramme ( int  $ref_id)
staticprivate

Definition at line 251 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 ilStudyProgrammeAutoMembershipSource\TYPE_COURSE, ilStudyProgrammeAutoMembershipSource\TYPE_GROUP, ilStudyProgrammeAutoMembershipSource\TYPE_ORGU, and ilStudyProgrammeAutoMembershipSource\TYPE_ROLE.

37  : void
38  {
39  switch ($component) {
40  case "Services/User":
41  switch ($event) {
42  case "deleteUser":
43  self::onServiceUserDeleteUser($parameter);
44  break;
45  }
46  break;
47  case "Services/Tracking":
48  switch ($event) {
49  case "updateStatus":
50  self::onServiceTrackingUpdateStatus($parameter);
51  break;
52  }
53  break;
54  case "Services/Tree":
55  switch ($event) {
56  case "insertNode":
57  self::onServiceTreeInsertNode($parameter);
58  break;
59  case "moveTree":
60  self::onServiceTreeMoveTree($parameter);
61  break;
62  }
63  break;
64  case "Services/Object":
65  switch ($event) {
66  case "delete":
67  case "toTrash":
68  self::onServiceObjectDeleteOrToTrash($parameter);
69  break;
70  }
71  break;
72  case "Services/ContainerReference":
73  switch ($event) {
74  case "deleteReference":
75  self::onServiceObjectDeleteOrToTrash($parameter);
76  break;
77  }
78  break;
79 
80  case "Modules/Course":
81  switch ($event) {
82  case "addParticipant":
83  self::addMemberToProgrammes(
85  $parameter
86  );
87  break;
88  case "deleteParticipant":
89  self::removeMemberFromProgrammes(
91  $parameter
92  );
93  break;
94  }
95  break;
96  case "Modules/Group":
97  switch ($event) {
98  case "addParticipant":
99  self::addMemberToProgrammes(
101  $parameter
102  );
103  break;
104  case "deleteParticipant":
105  self::removeMemberFromProgrammes(
107  $parameter
108  );
109  break;
110  }
111  break;
112  case "Services/AccessControl":
113  switch ($event) {
114  case "assignUser":
115  self::addMemberToProgrammes(
117  $parameter
118  );
119  break;
120  case "deassignUser":
121  self::removeMemberFromProgrammes(
123  $parameter
124  );
125  break;
126  }
127  break;
128  case "Modules/OrgUnit":
129  switch ($event) {
130  case "assignUserToPosition":
131  self::addMemberToProgrammes(
133  $parameter
134  );
135  break;
136  case "deassignUserFromPosition":
137  self::removeMemberFromProgrammes(
139  $parameter
140  );
141  break;
142  }
143  break;
144 
145  default:
146  throw new ilException(
147  "ilStudyProgrammeAppEventListener::handleEvent: Won't handle events of '$component'."
148  );
149  }
150  }

◆ onServiceObjectDeleteOrToTrash()

static ilStudyProgrammeAppEventListener::onServiceObjectDeleteOrToTrash ( array  $parameter)
staticprivate

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

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

238  : void
239  {
240  $old_parent_ref_id = (int) $parameter["old_parent_ref_id"];
241 
242  $old_parent_type = ilObject::_lookupType($old_parent_ref_id, true);
243 
244  if ($old_parent_type !== "prg") {
245  return;
246  }
247 
248  self::adjustProgrammeLPMode($old_parent_ref_id);
249  }
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 162 of file class.ilStudyProgrammeAppEventListener.php.

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

162  : void
163  {
164  if ((int) $parameter["status"] !== ilLPStatus::LP_STATUS_COMPLETED_NUM
165  || $parameter["status"] === $parameter["old_status"]
166  ) {
167  return;
168  }
169  if(ilObject::_lookupType((int) $parameter["obj_id"]) !== 'crs') {
170  return;
171  }
172 
173  $crs_reference_obj_ids = ilContainerReference::_lookupSourceIds((int) $parameter["obj_id"]);
174  foreach ($crs_reference_obj_ids as $crsr_obj_id) {
175  foreach (ilObject::_getAllReferences($crsr_obj_id) as $crsr_ref_id) {
177  $crsr_ref_id,
178  (int) $parameter["obj_id"],
179  (int) $parameter["usr_id"]
180  );
181  }
182  }
183  }
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)
Succeed all StudyProgramme(Nodes) where the object with the given id (a CRSR) is in a Programme with ...
static _lookupType(int $id, bool $reference=false)
+ Here is the call graph for this function:

◆ onServiceTreeInsertNode()

static ilStudyProgrammeAppEventListener::onServiceTreeInsertNode ( array  $parameter)
staticprivate

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

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

185  : void
186  {
187  $node_ref_id = (int) $parameter["node_id"];
188  $parent_ref_id = (int) $parameter["parent_id"];
189 
190  $node_type = ilObject::_lookupType($node_ref_id, true);
191  $parent_type = ilObject::_lookupType($parent_ref_id, true);
192 
193  if ($node_type === "crsr" && $parent_type === "prg") {
194  self::adjustProgrammeLPMode($parent_ref_id);
195  }
196  if ($parent_type === "prg" && in_array($node_type, ["prg", "prgr"])) {
197  self::addMissingProgresses($parent_ref_id);
198  }
199  if ($node_type === "crs" && $parent_type === "cat") {
200  self::addCrsToProgrammes($node_ref_id, $parent_ref_id);
201  }
202  }
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 204 of file class.ilStudyProgrammeAppEventListener.php.

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

204  : void
205  {
206  $node_ref_id = (int) $parameter["source_id"];
207  $new_parent_ref_id = (int) $parameter["target_id"];
208  $old_parent_ref_id = (int) $parameter["old_parent_id"];
209 
210  $node_type = ilObject::_lookupType($node_ref_id, true);
211  $new_parent_type = ilObject::_lookupType($new_parent_ref_id, true);
212  $old_parent_type = ilObject::_lookupType($old_parent_ref_id, true);
213 
214  if (!in_array($node_type, ["crsr","crs"])
215  || (
216  ($new_parent_type !== "prg" && $old_parent_type !== "prg")
217  &&
218  $old_parent_type !== "cat"
219  )
220  ) {
221  return;
222  }
223 
224  if ($node_type === 'crs') {
225  self::removeCrsFromProgrammes($node_ref_id, $old_parent_ref_id);
226  if ($new_parent_type === 'cat') {
227  self::addCrsToProgrammes($node_ref_id, $new_parent_ref_id);
228  }
229  }
230 
231  if ($new_parent_type === "prg") {
232  self::adjustProgrammeLPMode($new_parent_ref_id);
233  } elseif ($old_parent_type === "prg") {
234  self::adjustProgrammeLPMode($old_parent_ref_id);
235  }
236  }
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 152 of file class.ilStudyProgrammeAppEventListener.php.

References ilStudyProgrammeDIC\dic().

152  : void
153  {
154  $repo = ilStudyProgrammeDIC::dic()['repo.assignment'];
155  $assignments = $repo->getForUser((int) $parameter["usr_id"]);
156 
157  foreach ($assignments as $ass) {
158  $repo->delete($ass);
159  }
160  }
+ Here is the call graph for this function:

◆ removeCrsFromProgrammes()

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

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

References ilObjStudyProgramme\removeCrsFromProgrammes().

273  : void
274  {
275  ilObjStudyProgramme::removeCrsFromProgrammes($crs_ref_id, $cat_ref_id);
276  }
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 296 of file class.ilStudyProgrammeAppEventListener.php.

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

296  : void
297  {
298  $usr_id = $params['usr_id'];
299  $id = $params['obj_id'];
300  if (
303  ) {
304  $ref_ids = ilObject::_getAllReferences($id);
305  $id = array_shift($ref_ids);
306  }
308  $id = $params['role_id'];
309  }
310 
311  ilObjStudyProgramme::removeMemberFromProgrammes($src_type, $id, (int) $usr_id);
312  }
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
Definition: ltiregstart.php:33
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: