ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
ILIAS\Container\Skills\ContainerSkillManager Class Reference
+ Collaboration diagram for ILIAS\Container\Skills\ContainerSkillManager:

Public Member Functions

 __construct (int $cont_obj_id, int $cont_ref_id, ContainerSkillDBRepository $cont_skill_repo=null, ContainerMemberSkillDBRepository $cont_member_skill_repo=null, SkillService\SkillTreeService $tree_service=null, SkillService\SkillProfileService $profile_service=null, SkillService\SkillPersonalService $personal_service=null, SkillInternalFactoryService $factory_service=null, \ilSkillManagementSettings $skmg_settings=null)
 
 addSkillForContainer (int $skill_id, int $tref_id)
 
 removeSkillFromContainer (int $skill_id, int $tref_id)
 
 getSkillsForContainerOrdered ()
 
 getSkillsForContainer ()
 
 addMemberSkillForContainer (int $user_id, int $skill_id, int $tref_id, int $level_id)
 
 removeMemberSkillFromContainer (int $user_id, int $skill_id, int $tref_id)
 
 removeAllMemberSkillsFromContainer (int $user_id)
 
 publishMemberSkills (int $user_id)
 
 getPublished (int $user_id)
 
 getMemberSkillLevelsForContainerOrdered (int $user_id)
 
 getMemberSkillsForContainer (int $user_id)
 
 getMemberSkillLevel (int $user_id, int $skill_id, int $tref_id)
 
 getSkillsForTableGUI ()
 
 getSkillsForPresentationGUI ()
 

Protected Member Functions

 getSingleSkills ()
 
 getProfileSkills ()
 

Protected Attributes

int $cont_obj_id
 
int $cont_ref_id
 
ContainerSkillDBRepository $cont_skill_repo
 
ContainerMemberSkillDBRepository $cont_member_skill_repo
 
SkillService SkillTreeService $tree_service
 
SkillService SkillProfileService $profile_service
 
SkillService SkillPersonalService $personal_service
 
SkillInternalFactoryService $factory_service
 
ilSkillManagementSettings $skmg_settings
 

Detailed Description

Author
Thomas Famula famul.nosp@m.a@le.nosp@m.ifos..nosp@m.de

Definition at line 29 of file class.ContainerSkillManager.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\Container\Skills\ContainerSkillManager::__construct ( int  $cont_obj_id,
int  $cont_ref_id,
ContainerSkillDBRepository  $cont_skill_repo = null,
ContainerMemberSkillDBRepository  $cont_member_skill_repo = null,
SkillService\SkillTreeService  $tree_service = null,
SkillService\SkillProfileService  $profile_service = null,
SkillService\SkillPersonalService  $personal_service = null,
SkillInternalFactoryService  $factory_service = null,
\ilSkillManagementSettings  $skmg_settings = null 
)

Definition at line 41 of file class.ContainerSkillManager.php.

References ILIAS\Container\Skills\ContainerSkillManager\$cont_member_skill_repo, ILIAS\Container\Skills\ContainerSkillManager\$cont_obj_id, ILIAS\Container\Skills\ContainerSkillManager\$cont_ref_id, ILIAS\Container\Skills\ContainerSkillManager\$cont_skill_repo, $DIC, ILIAS\Container\Skills\ContainerSkillManager\$factory_service, ILIAS\Container\Skills\ContainerSkillManager\$personal_service, ILIAS\Container\Skills\ContainerSkillManager\$profile_service, ILIAS\Container\Skills\ContainerSkillManager\$skmg_settings, and ILIAS\Container\Skills\ContainerSkillManager\$tree_service.

51  {
52  global $DIC;
53 
54  $this->cont_obj_id = $cont_obj_id;
55  $this->cont_ref_id = $cont_ref_id;
56  $this->cont_skill_repo = ($cont_skill_repo)
57  ?: $DIC->skills()->internalContainer()->repo()->getContainerSkillRepo();
58  $this->cont_member_skill_repo = ($cont_member_skill_repo)
59  ?: $DIC->skills()->internalContainer()->repo()->getContainerMemberSkillRepo();
60  $this->tree_service = ($tree_service) ?: $DIC->skills()->tree();
61  $this->profile_service = ($profile_service) ?: $DIC->skills()->profile();
62  $this->personal_service = ($personal_service) ?: $DIC->skills()->personal();
63  $this->factory_service = ($factory_service) ?: $DIC->skills()->internalContainer()->factory();
64  $this->skmg_settings = ($skmg_settings) ?: new \ilSkillManagementSettings();
65  }
ContainerMemberSkillDBRepository $cont_member_skill_repo
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
global $DIC
Definition: feed.php:28

Member Function Documentation

◆ addMemberSkillForContainer()

ILIAS\Container\Skills\ContainerSkillManager::addMemberSkillForContainer ( int  $user_id,
int  $skill_id,
int  $tref_id,
int  $level_id 
)

Definition at line 122 of file class.ContainerSkillManager.php.

122  : void
123  {
124  $this->cont_member_skill_repo->add($this->cont_obj_id, $user_id, $skill_id, $tref_id, $level_id);
125  }

◆ addSkillForContainer()

ILIAS\Container\Skills\ContainerSkillManager::addSkillForContainer ( int  $skill_id,
int  $tref_id 
)

Definition at line 71 of file class.ContainerSkillManager.php.

71  : void
72  {
73  $this->cont_skill_repo->add($this->cont_obj_id, $skill_id, $tref_id);
74  }

◆ getMemberSkillLevel()

ILIAS\Container\Skills\ContainerSkillManager::getMemberSkillLevel ( int  $user_id,
int  $skill_id,
int  $tref_id 
)

Definition at line 222 of file class.ContainerSkillManager.php.

222  : ?int
223  {
224  return $this->cont_member_skill_repo->getLevel($this->cont_obj_id, $user_id, $skill_id, $tref_id);
225  }

◆ getMemberSkillLevelsForContainerOrdered()

ILIAS\Container\Skills\ContainerSkillManager::getMemberSkillLevelsForContainerOrdered ( int  $user_id)
Returns
ContainerMemberSkill[]

Definition at line 189 of file class.ContainerSkillManager.php.

References Vendor\Package\$a, ILIAS\Container\Skills\ContainerMemberSkill\getBaseSkillId(), ILIAS\Container\Skills\ContainerMemberSkill\getLevelId(), ILIAS\Container\Skills\ContainerSkillManager\getMemberSkillsForContainer(), ILIAS\Container\Skills\ContainerMemberSkill\getPublished(), and ILIAS\Container\Skills\ContainerMemberSkill\getTrefId().

189  : array
190  {
191  $skill_levels = array_map(static function (ContainerMemberSkill $a): array {
192  return ["level_id" => $a->getLevelId(), "skill_id" => $a->getBaseSkillId(), "tref_id" => $a->getTrefId(),
193  "published" => $a->getPublished()];
194  }, $this->getMemberSkillsForContainer($user_id));
195 
196  $vtree = $this->tree_service->getGlobalVirtualSkillTree();
197  $skill_levels_ordered = $vtree->getOrderedNodeset($skill_levels, "skill_id", "tref_id");
198 
199  $skill_levels_obj_ordered = [];
200  foreach ($skill_levels_ordered as $s) {
201  $skill_levels_obj_ordered[] = $this->factory_service->containerSkill()->memberSkill(
202  $this->cont_obj_id,
203  $user_id,
204  $s["skill_id"],
205  $s["tref_id"],
206  $s["level_id"],
207  $s["published"]
208  );
209  }
210 
211  return $skill_levels_obj_ordered;
212  }
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples
+ Here is the call graph for this function:

◆ getMemberSkillsForContainer()

ILIAS\Container\Skills\ContainerSkillManager::getMemberSkillsForContainer ( int  $user_id)
Returns
ContainerMemberSkill[]

Definition at line 217 of file class.ContainerSkillManager.php.

Referenced by ILIAS\Container\Skills\ContainerSkillManager\getMemberSkillLevelsForContainerOrdered(), and ILIAS\Container\Skills\ContainerSkillManager\publishMemberSkills().

217  : array
218  {
219  return $this->cont_member_skill_repo->getAll($this->cont_obj_id, $user_id);
220  }
+ Here is the caller graph for this function:

◆ getProfileSkills()

ILIAS\Container\Skills\ContainerSkillManager::getProfileSkills ( )
protected
Returns
ContainerSkill[]

Definition at line 300 of file class.ContainerSkillManager.php.

References ILIAS\Container\Skills\ContainerSkillManager\$cont_obj_id, ilSkillTreeNode\_lookupTitle(), and ilParticipants\getDefaultMemberRole().

Referenced by ILIAS\Container\Skills\ContainerSkillManager\getSkillsForPresentationGUI(), and ILIAS\Container\Skills\ContainerSkillManager\getSkillsForTableGUI().

300  : array
301  {
302  $cont_member_role_id = \ilParticipants::getDefaultMemberRole($this->cont_ref_id);
303  $p_skills = [];
304  // Global skills
305  if ($this->skmg_settings->getLocalAssignmentOfProfiles()) {
306  foreach ($this->profile_service->getGlobalProfilesOfRole($cont_member_role_id) as $gp) {
307  $sklvs = $this->profile_service->getSkillLevels($gp->getId());
308  foreach ($sklvs as $s) {
309  $p_skills[] = $this->factory_service->containerSkill()->skill(
310  $s->getBaseSkillId(),
311  $s->getTrefId(),
313  \ilBasicSkill::_lookupTitle($s->getBaseSkillId(), $s->getTrefId()),
314  $gp
315  );
316  }
317  }
318  }
319 
320  // Local skills
321  if ($this->skmg_settings->getAllowLocalProfiles()) {
322  foreach ($this->profile_service->getLocalProfilesOfRole($cont_member_role_id) as $lp) {
323  $sklvs = $this->profile_service->getSkillLevels($lp->getId());
324  foreach ($sklvs as $s) {
325  $p_skills[] = $this->factory_service->containerSkill()->skill(
326  $s->getBaseSkillId(),
327  $s->getTrefId(),
329  \ilBasicSkill::_lookupTitle($s->getBaseSkillId(), $s->getTrefId()),
330  $lp
331  );
332  }
333  }
334  }
335 
336  return $p_skills;
337  }
static _lookupTitle(int $a_obj_id, int $a_tref_id=0)
static getDefaultMemberRole(int $a_ref_id)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPublished()

ILIAS\Container\Skills\ContainerSkillManager::getPublished ( int  $user_id)

Definition at line 181 of file class.ContainerSkillManager.php.

181  : bool
182  {
183  return $this->cont_member_skill_repo->getPublished($this->cont_obj_id, $user_id);
184  }

◆ getSingleSkills()

ILIAS\Container\Skills\ContainerSkillManager::getSingleSkills ( )
protected
Returns
ContainerSkill[]

Definition at line 283 of file class.ContainerSkillManager.php.

References ILIAS\Container\Skills\ContainerSkillManager\$cont_obj_id, ilSkillTreeNode\_lookupTitle(), ILIAS\Container\Skills\ContainerSkill\getBaseSkillId(), ILIAS\Container\Skills\ContainerSkillManager\getSkillsForContainer(), and ILIAS\Container\Skills\ContainerSkill\getTrefId().

Referenced by ILIAS\Container\Skills\ContainerSkillManager\getSkillsForPresentationGUI(), and ILIAS\Container\Skills\ContainerSkillManager\getSkillsForTableGUI().

283  : array
284  {
285  $s_skills = array_map(function (ContainerSkill $v): ContainerSkill {
286  return $this->factory_service->containerSkill()->skill(
287  $v->getBaseSkillId(),
288  $v->getTrefId(),
290  \ilBasicSkill::_lookupTitle($v->getBaseSkillId(), $v->getTrefId())
291  );
292  }, $this->getSkillsForContainer());
293 
294  return $s_skills;
295  }
static _lookupTitle(int $a_obj_id, int $a_tref_id=0)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSkillsForContainer()

ILIAS\Container\Skills\ContainerSkillManager::getSkillsForContainer ( )
Returns
ContainerSkill[]

Definition at line 112 of file class.ContainerSkillManager.php.

Referenced by ILIAS\Container\Skills\ContainerSkillManager\getSingleSkills(), and ILIAS\Container\Skills\ContainerSkillManager\getSkillsForContainerOrdered().

112  : array
113  {
114  return $this->cont_skill_repo->getAll($this->cont_obj_id);
115  }
+ Here is the caller graph for this function:

◆ getSkillsForContainerOrdered()

ILIAS\Container\Skills\ContainerSkillManager::getSkillsForContainerOrdered ( )
Returns
ContainerSkill[]

Definition at line 84 of file class.ContainerSkillManager.php.

References ILIAS\Container\Skills\ContainerSkillManager\getSkillsForContainer().

84  : array
85  {
86  $skills_as_array = [];
87  foreach ($this->getSkillsForContainer() as $skill) {
88  $skills_as_array[$skill->getBaseSkillId() . "-" . $skill->getTrefId()] = [
89  "skill_id" => $skill->getBaseSkillId(),
90  "tref_id" => $skill->getTrefId()
91  ];
92  }
93 
94  $vtree = $this->tree_service->getGlobalVirtualSkillTree();
95  $skills_ordered = $vtree->getOrderedNodeset($skills_as_array, "skill_id", "tref_id");
96 
97  $skills_obj_ordered = [];
98  foreach ($skills_ordered as $s) {
99  $skills_obj_ordered[] = $this->factory_service->containerSkill()->skill(
100  $s["skill_id"],
101  $s["tref_id"],
102  $this->cont_obj_id
103  );
104  }
105 
106  return $skills_obj_ordered;
107  }
+ Here is the call graph for this function:

◆ getSkillsForPresentationGUI()

ILIAS\Container\Skills\ContainerSkillManager::getSkillsForPresentationGUI ( )
Returns
ContainerSkill[]

Definition at line 261 of file class.ContainerSkillManager.php.

References ILIAS\Container\Skills\ContainerSkillManager\getProfileSkills(), and ILIAS\Container\Skills\ContainerSkillManager\getSingleSkills().

261  : array
262  {
263  // Get single and profile skills and DO remove multiple occurrences when merging
264 
265  $s_skills = [];
266  foreach ($this->getSingleSkills() as $s) {
267  $s_skills[$s->getBaseSkillId() . "-" . $s->getTrefId()] = $s;
268  }
269 
270  $p_skills = [];
271  foreach ($this->getProfileSkills() as $ps) {
272  $p_skills[$ps->getBaseSkillId() . "-" . $ps->getTrefId()] = $ps;
273  }
274 
275  $skills = array_merge($s_skills, $p_skills);
276 
277  return $skills;
278  }
+ Here is the call graph for this function:

◆ getSkillsForTableGUI()

ILIAS\Container\Skills\ContainerSkillManager::getSkillsForTableGUI ( )
Returns
ContainerSkill[]

Definition at line 235 of file class.ContainerSkillManager.php.

References ILIAS\Container\Skills\ContainerSkillManager\getProfileSkills(), and ILIAS\Container\Skills\ContainerSkillManager\getSingleSkills().

235  : array
236  {
237  // Get single and profile skills and DO NOT remove multiple occurrences when merging
238 
239  $skills = array_merge($this->getSingleSkills(), $this->getProfileSkills());
240 
241  $skills_as_array = [];
242  foreach ($skills as $s) {
243  $skills_as_array[] = [
244  "base_skill_id" => $s->getBaseSkillId(),
245  "tref_id" => $s->getTrefId(),
246  "title" => $s->getTitle(),
247  "profile_title" => ($s->getProfile()) ? $s->getProfile()->getTitle() : null
248  ];
249  }
250 
251  // order skills per virtual skill tree
252  $vtree = $this->tree_service->getGlobalVirtualSkillTree();
253  $skills = $vtree->getOrderedNodeset($skills_as_array, "base_skill_id", "tref_id");
254 
255  return $skills;
256  }
+ Here is the call graph for this function:

◆ publishMemberSkills()

ILIAS\Container\Skills\ContainerSkillManager::publishMemberSkills ( int  $user_id)

Definition at line 144 of file class.ContainerSkillManager.php.

References ILIAS\Container\Skills\ContainerSkillManager\$cont_ref_id, ilBasicSkill\ACHIEVED, ILIAS\Container\Skills\ContainerSkillManager\getMemberSkillsForContainer(), ilBasicSkill\removeAllUserSkillLevelStatusOfObject(), and ilBasicSkill\writeUserSkillLevelStatus().

144  : bool
145  {
147  $user_id,
148  $this->cont_obj_id,
149  false,
150  (string) $this->cont_obj_id
151  );
152 
153  foreach ($this->getMemberSkillsForContainer($user_id) as $l) {
154  $changed = true;
156  $l->getLevelId(),
157  $user_id,
159  $l->getTrefId(),
161  false,
162  false,
163  (string) $this->cont_obj_id
164  );
165 
166  if ($l->getTrefId() > 0) {
167  $this->personal_service->addPersonalSkill($user_id, $l->getTrefId());
168  } else {
169  $this->personal_service->addPersonalSkill($user_id, $l->getBaseSkillId());
170  }
171  }
172 
173  //write profile completion entries if fulfilment status has changed
174  $this->profile_service->writeCompletionEntryForAllProfiles($user_id);
175 
176  $this->cont_member_skill_repo->publish($this->cont_obj_id, $user_id);
177 
178  return $changed;
179  }
static removeAllUserSkillLevelStatusOfObject(int $a_user_id, int $a_trigger_obj_id, bool $a_self_eval=false, string $a_unique_identifier="")
static writeUserSkillLevelStatus(int $a_level_id, int $a_user_id, int $a_trigger_ref_id, int $a_tref_id=0, int $a_status=ilBasicSkill::ACHIEVED, bool $a_force=false, bool $a_self_eval=false, string $a_unique_identifier="", float $a_next_level_fulfilment=0.0, string $trigger_user_id="")
+ Here is the call graph for this function:

◆ removeAllMemberSkillsFromContainer()

ILIAS\Container\Skills\ContainerSkillManager::removeAllMemberSkillsFromContainer ( int  $user_id)

Definition at line 132 of file class.ContainerSkillManager.php.

References ilBasicSkill\removeAllUserSkillLevelStatusOfObject().

132  : void
133  {
135  $user_id,
136  $this->cont_obj_id,
137  false,
138  (string) $this->cont_obj_id
139  );
140 
141  $this->cont_member_skill_repo->removeAll($this->cont_obj_id, $user_id);
142  }
static removeAllUserSkillLevelStatusOfObject(int $a_user_id, int $a_trigger_obj_id, bool $a_self_eval=false, string $a_unique_identifier="")
+ Here is the call graph for this function:

◆ removeMemberSkillFromContainer()

ILIAS\Container\Skills\ContainerSkillManager::removeMemberSkillFromContainer ( int  $user_id,
int  $skill_id,
int  $tref_id 
)

Definition at line 127 of file class.ContainerSkillManager.php.

127  : void
128  {
129  $this->cont_member_skill_repo->remove($this->cont_obj_id, $user_id, $skill_id, $tref_id);
130  }

◆ removeSkillFromContainer()

ILIAS\Container\Skills\ContainerSkillManager::removeSkillFromContainer ( int  $skill_id,
int  $tref_id 
)

Definition at line 76 of file class.ContainerSkillManager.php.

76  : void
77  {
78  $this->cont_skill_repo->remove($this->cont_obj_id, $skill_id, $tref_id);
79  }

Field Documentation

◆ $cont_member_skill_repo

ContainerMemberSkillDBRepository ILIAS\Container\Skills\ContainerSkillManager::$cont_member_skill_repo
protected

◆ $cont_obj_id

◆ $cont_ref_id

int ILIAS\Container\Skills\ContainerSkillManager::$cont_ref_id
protected

◆ $cont_skill_repo

ContainerSkillDBRepository ILIAS\Container\Skills\ContainerSkillManager::$cont_skill_repo
protected

◆ $factory_service

SkillInternalFactoryService ILIAS\Container\Skills\ContainerSkillManager::$factory_service
protected

◆ $personal_service

SkillService SkillPersonalService ILIAS\Container\Skills\ContainerSkillManager::$personal_service
protected

◆ $profile_service

SkillService SkillProfileService ILIAS\Container\Skills\ContainerSkillManager::$profile_service
protected

◆ $skmg_settings

ilSkillManagementSettings ILIAS\Container\Skills\ContainerSkillManager::$skmg_settings
protected

◆ $tree_service

SkillService SkillTreeService ILIAS\Container\Skills\ContainerSkillManager::$tree_service
protected

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