ILIAS  trunk Revision v11.0_alpha-2638-g80c1d007f79
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 28 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 40 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.

50  {
51  global $DIC;
52 
53  $this->cont_obj_id = $cont_obj_id;
54  $this->cont_ref_id = $cont_ref_id;
55  $this->cont_skill_repo = ($cont_skill_repo)
56  ?: $DIC->skills()->internalContainer()->repo()->getContainerSkillRepo();
57  $this->cont_member_skill_repo = ($cont_member_skill_repo)
58  ?: $DIC->skills()->internalContainer()->repo()->getContainerMemberSkillRepo();
59  $this->tree_service = ($tree_service) ?: $DIC->skills()->tree();
60  $this->profile_service = ($profile_service) ?: $DIC->skills()->profile();
61  $this->personal_service = ($personal_service) ?: $DIC->skills()->personal();
62  $this->factory_service = ($factory_service) ?: $DIC->skills()->internalContainer()->factory();
63  $this->skmg_settings = ($skmg_settings) ?: new \ilSkillManagementSettings();
64  }
ContainerMemberSkillDBRepository $cont_member_skill_repo
global $DIC
Definition: shib_login.php:26

Member Function Documentation

◆ addMemberSkillForContainer()

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

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

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

◆ addSkillForContainer()

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

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

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

◆ getMemberSkillLevel()

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

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

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

◆ getMemberSkillLevelsForContainerOrdered()

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

Definition at line 188 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().

188  : array
189  {
190  $skill_levels = array_map(static function (ContainerMemberSkill $a): array {
191  return ["level_id" => $a->getLevelId(), "skill_id" => $a->getBaseSkillId(), "tref_id" => $a->getTrefId(),
192  "published" => $a->getPublished()];
194 
195  $vtree = $this->tree_service->getGlobalVirtualSkillTree();
196  $skill_levels_ordered = $vtree->getOrderedNodeset($skill_levels, "skill_id", "tref_id");
197 
198  $skill_levels_obj_ordered = [];
199  foreach ($skill_levels_ordered as $s) {
200  $skill_levels_obj_ordered[] = $this->factory_service->containerSkill()->memberSkill(
201  $this->cont_obj_id,
202  $user_id,
203  $s["skill_id"],
204  $s["tref_id"],
205  $s["level_id"],
206  $s["published"]
207  );
208  }
209 
210  return $skill_levels_obj_ordered;
211  }
$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 216 of file class.ContainerSkillManager.php.

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

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

◆ getProfileSkills()

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

Definition at line 299 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().

299  : array
300  {
301  $cont_member_role_id = \ilParticipants::getDefaultMemberRole($this->cont_ref_id);
302  $p_skills = [];
303  // Global skills
304  if ($this->skmg_settings->getLocalAssignmentOfProfiles()) {
305  foreach ($this->profile_service->getGlobalProfilesOfRole($cont_member_role_id) as $gp) {
306  $sklvs = $this->profile_service->getSkillLevels($gp->getId());
307  foreach ($sklvs as $s) {
308  $p_skills[] = $this->factory_service->containerSkill()->skill(
309  $s->getBaseSkillId(),
310  $s->getTrefId(),
312  \ilBasicSkill::_lookupTitle($s->getBaseSkillId(), $s->getTrefId()),
313  $gp
314  );
315  }
316  }
317  }
318 
319  // Local skills
320  if ($this->skmg_settings->getAllowLocalProfiles()) {
321  foreach ($this->profile_service->getLocalProfilesOfRole($cont_member_role_id) as $lp) {
322  $sklvs = $this->profile_service->getSkillLevels($lp->getId());
323  foreach ($sklvs as $s) {
324  $p_skills[] = $this->factory_service->containerSkill()->skill(
325  $s->getBaseSkillId(),
326  $s->getTrefId(),
328  \ilBasicSkill::_lookupTitle($s->getBaseSkillId(), $s->getTrefId()),
329  $lp
330  );
331  }
332  }
333  }
334 
335  return $p_skills;
336  }
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 180 of file class.ContainerSkillManager.php.

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

◆ getSingleSkills()

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

Definition at line 282 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().

282  : array
283  {
284  $s_skills = array_map(function (ContainerSkill $v): ContainerSkill {
285  return $this->factory_service->containerSkill()->skill(
286  $v->getBaseSkillId(),
287  $v->getTrefId(),
289  \ilBasicSkill::_lookupTitle($v->getBaseSkillId(), $v->getTrefId())
290  );
291  }, $this->getSkillsForContainer());
292 
293  return $s_skills;
294  }
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 111 of file class.ContainerSkillManager.php.

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

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

◆ getSkillsForContainerOrdered()

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

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

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

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

◆ getSkillsForPresentationGUI()

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

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

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

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

◆ getSkillsForTableGUI()

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

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

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

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

◆ publishMemberSkills()

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

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

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

143  : bool
144  {
146  $user_id,
147  $this->cont_obj_id,
148  false,
149  (string) $this->cont_obj_id
150  );
151 
152  foreach ($this->getMemberSkillsForContainer($user_id) as $l) {
153  $changed = true;
155  $l->getLevelId(),
156  $user_id,
158  $l->getTrefId(),
160  false,
161  false,
162  (string) $this->cont_obj_id
163  );
164 
165  if ($l->getTrefId() > 0) {
166  $this->personal_service->addPersonalSkill($user_id, $l->getTrefId());
167  } else {
168  $this->personal_service->addPersonalSkill($user_id, $l->getBaseSkillId());
169  }
170  }
171 
172  //write profile completion entries if fulfilment status has changed
173  $this->profile_service->writeCompletionEntryForAllProfiles($user_id);
174 
175  $this->cont_member_skill_repo->publish($this->cont_obj_id, $user_id);
176 
177  return $changed;
178  }
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 131 of file class.ContainerSkillManager.php.

References ilBasicSkill\removeAllUserSkillLevelStatusOfObject().

131  : void
132  {
134  $user_id,
135  $this->cont_obj_id,
136  false,
137  (string) $this->cont_obj_id
138  );
139 
140  $this->cont_member_skill_repo->removeAll($this->cont_obj_id, $user_id);
141  }
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 126 of file class.ContainerSkillManager.php.

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

◆ removeSkillFromContainer()

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

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

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

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: