ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
ilAssQuestionSkillAssignmentList Class Reference
+ Collaboration diagram for ilAssQuestionSkillAssignmentList:

Public Member Functions

 __construct (private readonly ilDBInterface $db)
 
 setParentObjId (?int $parent_obj_id)
 
 getParentObjId ()
 
 getQuestionIdFilter ()
 
 setQuestionIdFilter (?int $question_id_filter)
 
 reset ()
 
 addAssignment (ilAssQuestionSkillAssignment $assignment)
 
 loadFromDb ()
 
 loadAdditionalSkillData ()
 
 getAssignmentsByQuestionId (int $question_id)
 
 isAssignedToQuestionId (int $skill_base_id, int $skill_tref_id, int $question_id)
 
 getUniqueAssignedSkills ()
 
 isAssignedSkill (int $skill_base_id, int $skill_tref_id)
 
 getNumAssignsBySkill (int $skill_base_id, int $skill_tref_id)
 
 getMaxPointsBySkill (int $skill_base_id, int $skill_tref_id)
 
 hasSkillsAssignedLowerThanBarrier ()
 

Private Member Functions

 incrementNumAssignsBySkill (ilAssQuestionSkillAssignment $assignment)
 
 incrementMaxPointsBySkill (ilAssQuestionSkillAssignment $assignment)
 
 getWhereConditions ()
 
 buildSkillQuestionAssignmentByArray (array $data)
 
 buildSkillKey (int $skill_base_id, int $skill_tref_id)
 

Private Attributes

int $parent_obj_id = null
 
array $assignments = []
 
array $num_assigns_by_skill = []
 
array $max_points_by_skill = []
 
int $question_id_filter = null
 

Detailed Description

Definition at line 21 of file class.ilAssQuestionSkillAssignmentList.php.

Constructor & Destructor Documentation

◆ __construct()

ilAssQuestionSkillAssignmentList::__construct ( private readonly ilDBInterface  $db)

Definition at line 33 of file class.ilAssQuestionSkillAssignmentList.php.

35 {
36 }

Member Function Documentation

◆ addAssignment()

ilAssQuestionSkillAssignmentList::addAssignment ( ilAssQuestionSkillAssignment  $assignment)

Definition at line 65 of file class.ilAssQuestionSkillAssignmentList.php.

65 : void
66 {
67 $this->assignments[$assignment->getQuestionId()] ??= [];
68 $this->assignments[$assignment->getQuestionId()][] = $assignment;
69 }

References ilAssQuestionSkillAssignment\getQuestionId().

Referenced by loadFromDb().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildSkillKey()

ilAssQuestionSkillAssignmentList::buildSkillKey ( int  $skill_base_id,
int  $skill_tref_id 
)
private

Definition at line 135 of file class.ilAssQuestionSkillAssignmentList.php.

135 : string
136 {
137 return "{$skill_base_id}:{$skill_tref_id}";
138 }

Referenced by getMaxPointsBySkill(), getNumAssignsBySkill(), getUniqueAssignedSkills(), incrementMaxPointsBySkill(), and incrementNumAssignsBySkill().

+ Here is the caller graph for this function:

◆ buildSkillQuestionAssignmentByArray()

ilAssQuestionSkillAssignmentList::buildSkillQuestionAssignmentByArray ( array  $data)
private

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

122 {
123 $assignment = new ilAssQuestionSkillAssignment($this->db);
124
125 $assignment->setParentObjId($data['obj_fi']);
126 $assignment->setQuestionId($data['question_fi']);
127 $assignment->setSkillBaseId($data['skill_base_fi']);
128 $assignment->setSkillTrefId($data['skill_tref_fi']);
129 $assignment->setSkillPoints($data['skill_points']);
130 $assignment->setEvalMode($data['eval_mode']);
131
132 return $assignment;
133 }

References $data.

Referenced by loadFromDb().

+ Here is the caller graph for this function:

◆ getAssignmentsByQuestionId()

ilAssQuestionSkillAssignmentList::getAssignmentsByQuestionId ( int  $question_id)
Returns
ilAssQuestionSkillAssignment[]

Definition at line 152 of file class.ilAssQuestionSkillAssignmentList.php.

152 : array
153 {
154 return $this->assignments[$question_id] ?? [];
155 }

◆ getMaxPointsBySkill()

ilAssQuestionSkillAssignmentList::getMaxPointsBySkill ( int  $skill_base_id,
int  $skill_tref_id 
)

Definition at line 226 of file class.ilAssQuestionSkillAssignmentList.php.

227 {
228 return $this->max_points_by_skill[$this->buildSkillKey($skill_base_id, $skill_tref_id)] ?? null;
229 }
buildSkillKey(int $skill_base_id, int $skill_tref_id)

References buildSkillKey().

Referenced by getUniqueAssignedSkills().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getNumAssignsBySkill()

ilAssQuestionSkillAssignmentList::getNumAssignsBySkill ( int  $skill_base_id,
int  $skill_tref_id 
)

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

222 {
223 return $this->num_assigns_by_skill[$this->buildSkillKey($skill_base_id, $skill_tref_id)] ?? null;
224 }

References buildSkillKey().

Referenced by getUniqueAssignedSkills().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getParentObjId()

ilAssQuestionSkillAssignmentList::getParentObjId ( )

◆ getQuestionIdFilter()

ilAssQuestionSkillAssignmentList::getQuestionIdFilter ( )

Definition at line 48 of file class.ilAssQuestionSkillAssignmentList.php.

References $question_id_filter.

Referenced by getWhereConditions().

+ Here is the caller graph for this function:

◆ getUniqueAssignedSkills()

ilAssQuestionSkillAssignmentList::getUniqueAssignedSkills ( )

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

178 : array
179 {
180 $skills = [];
181
182 foreach ($this->assignments as $assignments_by_question) {
183 foreach ($assignments_by_question as $assignment) {
184 $key = $this->buildSkillKey($assignment->getSkillBaseId(), $assignment->getSkillTrefId());
185 $skills[$key] ??= [
186 'skill' => new ilBasicSkill($assignment->getSkillBaseId()),
187 'skill_base_id' => $assignment->getSkillBaseId(),
188 'skill_tref_id' => $assignment->getSkillTrefId(),
189 'skill_title' => $assignment->getSkillTitle(),
190 'skill_path' => $assignment->getSkillPath(),
191 'num_assigns' => $this->getNumAssignsBySkill(
192 $assignment->getSkillBaseId(),
193 $assignment->getSkillTrefId()
194 ),
195 'max_points' => $this->getMaxPointsBySkill(
196 $assignment->getSkillBaseId(),
197 $assignment->getSkillTrefId()
198 )
199 ];
200 }
201 }
202
203 return $skills;
204 }
getNumAssignsBySkill(int $skill_base_id, int $skill_tref_id)
getMaxPointsBySkill(int $skill_base_id, int $skill_tref_id)

References buildSkillKey(), getMaxPointsBySkill(), and getNumAssignsBySkill().

Referenced by hasSkillsAssignedLowerThanBarrier(), and isAssignedSkill().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getWhereConditions()

ilAssQuestionSkillAssignmentList::getWhereConditions ( )
private

Definition at line 110 of file class.ilAssQuestionSkillAssignmentList.php.

110 : string
111 {
112 $conditions = ["obj_fi = {$this->db->quote($this->getParentObjId(), ilDBConstants::T_INTEGER)}"];
113
114 if ($this->getQuestionIdFilter()) {
115 $conditions[] = "question_fi = {$this->db->quote($this->getQuestionIdFilter(), ilDBConstants::T_INTEGER)}";
116 }
117
118 return implode(' AND ', $conditions);
119 }

References getQuestionIdFilter().

+ Here is the call graph for this function:

◆ hasSkillsAssignedLowerThanBarrier()

ilAssQuestionSkillAssignmentList::hasSkillsAssignedLowerThanBarrier ( )

Definition at line 231 of file class.ilAssQuestionSkillAssignmentList.php.

231 : bool
232 {
233 $global_barrier = (new ilObjTestFolder())
234 ->getGlobalSettingsRepository()
235 ->getGlobalSettings()
236 ->getSkillTriggeringNumberOfAnswers();
237
238 foreach ($this->getUniqueAssignedSkills() as $skill_data) {
239 if ($skill_data['num_assigns'] < $global_barrier) {
240 return true;
241 }
242 }
243
244 return false;
245 }
Class ilObjTestFolder.

References getUniqueAssignedSkills().

+ Here is the call graph for this function:

◆ incrementMaxPointsBySkill()

ilAssQuestionSkillAssignmentList::incrementMaxPointsBySkill ( ilAssQuestionSkillAssignment  $assignment)
private

Definition at line 79 of file class.ilAssQuestionSkillAssignmentList.php.

79 : void
80 {
81 $key = $this->buildSkillKey($assignment->getSkillBaseId(), $assignment->getSkillTrefId());
82
83 $this->max_points_by_skill[$key] ??= 0;
84 $this->max_points_by_skill[$key] += $assignment->getMaxSkillPoints();
85 }

References buildSkillKey(), ilAssQuestionSkillAssignment\getMaxSkillPoints(), ilAssQuestionSkillAssignment\getSkillBaseId(), and ilAssQuestionSkillAssignment\getSkillTrefId().

Referenced by loadFromDb().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ incrementNumAssignsBySkill()

ilAssQuestionSkillAssignmentList::incrementNumAssignsBySkill ( ilAssQuestionSkillAssignment  $assignment)
private

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

71 : void
72 {
73 $key = $this->buildSkillKey($assignment->getSkillBaseId(), $assignment->getSkillTrefId());
74
75 $this->num_assigns_by_skill[$key] ??= 0;
76 $this->num_assigns_by_skill[$key]++;
77 }

References buildSkillKey(), ilAssQuestionSkillAssignment\getSkillBaseId(), and ilAssQuestionSkillAssignment\getSkillTrefId().

Referenced by loadFromDb().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isAssignedSkill()

ilAssQuestionSkillAssignmentList::isAssignedSkill ( int  $skill_base_id,
int  $skill_tref_id 
)

Definition at line 206 of file class.ilAssQuestionSkillAssignmentList.php.

206 : bool
207 {
208 foreach ($this->getUniqueAssignedSkills() as $assignedSkill) {
209 if ($assignedSkill['skill_base_id'] !== $skill_base_id) {
210 continue;
211 }
212
213 if ($assignedSkill['skill_tref_id'] === $skill_tref_id) {
214 return true;
215 }
216 }
217
218 return false;
219 }

References getUniqueAssignedSkills().

+ Here is the call graph for this function:

◆ isAssignedToQuestionId()

ilAssQuestionSkillAssignmentList::isAssignedToQuestionId ( int  $skill_base_id,
int  $skill_tref_id,
int  $question_id 
)

Definition at line 157 of file class.ilAssQuestionSkillAssignmentList.php.

157 : bool
158 {
159 if (!isset($this->assignments[$question_id])) {
160 return false;
161 }
162
163 foreach ($this->assignments[$question_id] as $assignment) {
164 if ($assignment->getSkillBaseId() !== $skill_base_id) {
165 continue;
166 }
167
168 if ($assignment->getSkillTrefId() !== $skill_tref_id) {
169 continue;
170 }
171
172 return true;
173 }
174
175 return false;
176 }

◆ loadAdditionalSkillData()

ilAssQuestionSkillAssignmentList::loadAdditionalSkillData ( )

Definition at line 140 of file class.ilAssQuestionSkillAssignmentList.php.

140 : void
141 {
142 foreach ($this->assignments as $assignments_by_question) {
143 foreach ($assignments_by_question as $assignment) {
144 $assignment->loadAdditionalSkillData();
145 }
146 }
147 }

◆ loadFromDb()

ilAssQuestionSkillAssignmentList::loadFromDb ( )

Definition at line 87 of file class.ilAssQuestionSkillAssignmentList.php.

87 : void
88 {
89 $this->reset();
90
91 $res = $this->db->query("
92 SELECT obj_fi, question_fi, skill_base_fi, skill_tref_fi, skill_points, eval_mode
93 FROM qpl_qst_skl_assigns
94 WHERE {$this->getWhereConditions()}
95 ");
96
97 while ($row = $this->db->fetchAssoc($res)) {
98 $assignment = $this->buildSkillQuestionAssignmentByArray($row);
99
100 if ($assignment->hasEvalModeBySolution()) {
101 $assignment->loadComparisonExpressions();
102 }
103
104 $this->addAssignment($assignment);
105 $this->incrementNumAssignsBySkill($assignment);
106 $this->incrementMaxPointsBySkill($assignment);
107 }
108 }
addAssignment(ilAssQuestionSkillAssignment $assignment)
incrementNumAssignsBySkill(ilAssQuestionSkillAssignment $assignment)
incrementMaxPointsBySkill(ilAssQuestionSkillAssignment $assignment)
$res
Definition: ltiservices.php:69

References $res, addAssignment(), buildSkillQuestionAssignmentByArray(), incrementMaxPointsBySkill(), incrementNumAssignsBySkill(), and reset().

+ Here is the call graph for this function:

◆ reset()

ilAssQuestionSkillAssignmentList::reset ( )

Definition at line 58 of file class.ilAssQuestionSkillAssignmentList.php.

58 : void
59 {
60 $this->assignments = [];
61 $this->num_assigns_by_skill = [];
62 $this->max_points_by_skill = [];
63 }

Referenced by loadFromDb().

+ Here is the caller graph for this function:

◆ setParentObjId()

ilAssQuestionSkillAssignmentList::setParentObjId ( ?int  $parent_obj_id)

Definition at line 38 of file class.ilAssQuestionSkillAssignmentList.php.

38 : void
39 {
40 $this->parent_obj_id = $parent_obj_id;
41 }

References $parent_obj_id.

◆ setQuestionIdFilter()

ilAssQuestionSkillAssignmentList::setQuestionIdFilter ( ?int  $question_id_filter)

Definition at line 53 of file class.ilAssQuestionSkillAssignmentList.php.

53 : void
54 {
55 $this->question_id_filter = $question_id_filter;
56 }

References $question_id_filter.

Field Documentation

◆ $assignments

array ilAssQuestionSkillAssignmentList::$assignments = []
private

Definition at line 25 of file class.ilAssQuestionSkillAssignmentList.php.

◆ $max_points_by_skill

array ilAssQuestionSkillAssignmentList::$max_points_by_skill = []
private

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

◆ $num_assigns_by_skill

array ilAssQuestionSkillAssignmentList::$num_assigns_by_skill = []
private

Definition at line 27 of file class.ilAssQuestionSkillAssignmentList.php.

◆ $parent_obj_id

int ilAssQuestionSkillAssignmentList::$parent_obj_id = null
private

Definition at line 23 of file class.ilAssQuestionSkillAssignmentList.php.

Referenced by getParentObjId(), and setParentObjId().

◆ $question_id_filter

int ilAssQuestionSkillAssignmentList::$question_id_filter = null
private

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