ILIAS  trunk Revision v11.0_alpha-1715-g7fc467680fb
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
ilAssQuestionSkillAssignmentList Class Reference
+ Collaboration diagram for ilAssQuestionSkillAssignmentList:

Public Member Functions

 __construct (ilDBInterface $db)
 
 setParentObjId ($parentObjId)
 
 getParentObjId ()
 
 getQuestionIdFilter ()
 
 setQuestionIdFilter ($questionIdFilter)
 
 reset ()
 
 addAssignment (ilAssQuestionSkillAssignment $assignment)
 
 loadFromDb ()
 
 loadAdditionalSkillData ()
 
 getAssignmentsByQuestionId ($questionId)
 
 isAssignedToQuestionId ($skillBaseId, $skillTrefId, $questionId)
 
 getUniqueAssignedSkills ()
 
 isAssignedSkill ($skillBaseId, $skillTrefId)
 
 getNumAssignsBySkill ($skillBaseId, $skillTrefId)
 
 getMaxPointsBySkill ($skillBaseId, $skillTrefId)
 
 hasSkillsAssignedLowerThanBarrier ()
 

Private Member Functions

 incrementNumAssignsBySkill (ilAssQuestionSkillAssignment $assignment)
 
 incrementMaxPointsBySkill (ilAssQuestionSkillAssignment $assignment)
 
 getWhereConditions ()
 
 buildSkillQuestionAssignmentByArray ($data)
 
 buildSkillKey ($skillBaseId, $skillTrefId)
 

Private Attributes

 $db
 
 $parentObjId
 
 $assignments
 
 $numAssignsBySkill
 
 $maxPointsBySkill
 
 $questionIdFilter
 

Detailed Description

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

Constructor & Destructor Documentation

◆ __construct()

ilAssQuestionSkillAssignmentList::__construct ( ilDBInterface  $db)

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

References $db, and null.

58  {
59  $this->db = $db;
60 
61  $this->parentObjId = null;
62  $this->assignments = [];
63  $this->numAssignsBySkill = [];
64  $this->maxPointsBySkill = [];
65  $this->questionIdFilter = null;
66  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null

Member Function Documentation

◆ addAssignment()

ilAssQuestionSkillAssignmentList::addAssignment ( ilAssQuestionSkillAssignment  $assignment)

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

References ilAssQuestionSkillAssignment\getQuestionId().

Referenced by loadFromDb().

107  : void
108  {
109  if (!isset($this->assignments[$assignment->getQuestionId()])) {
110  $this->assignments[$assignment->getQuestionId()] = [];
111  }
112 
113  $this->assignments[$assignment->getQuestionId()][] = $assignment;
114  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildSkillKey()

ilAssQuestionSkillAssignmentList::buildSkillKey (   $skillBaseId,
  $skillTrefId 
)
private

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

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

192  : string
193  {
194  return $skillBaseId . ':' . $skillTrefId;
195  }
+ Here is the caller graph for this function:

◆ buildSkillQuestionAssignmentByArray()

ilAssQuestionSkillAssignmentList::buildSkillQuestionAssignmentByArray (   $data)
private
Parameters
array$data
Returns
ilAssQuestionSkillAssignment

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

References $data.

Referenced by loadFromDb().

179  {
180  $assignment = new ilAssQuestionSkillAssignment($this->db);
181 
182  $assignment->setParentObjId($data['obj_fi']);
183  $assignment->setQuestionId($data['question_fi']);
184  $assignment->setSkillBaseId($data['skill_base_fi']);
185  $assignment->setSkillTrefId($data['skill_tref_fi']);
186  $assignment->setSkillPoints($data['skill_points']);
187  $assignment->setEvalMode($data['eval_mode']);
188 
189  return $assignment;
190  }
+ Here is the caller graph for this function:

◆ getAssignmentsByQuestionId()

ilAssQuestionSkillAssignmentList::getAssignmentsByQuestionId (   $questionId)
Parameters
$questionId
Returns
array of ilAssQuestionSkillAssignment

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

210  : array
211  {
212  if (!isset($this->assignments[$questionId])) {
213  return [];
214  }
215 
216  return $this->assignments[$questionId];
217  }

◆ getMaxPointsBySkill()

ilAssQuestionSkillAssignmentList::getMaxPointsBySkill (   $skillBaseId,
  $skillTrefId 
)

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

References buildSkillKey(), and null.

Referenced by getUniqueAssignedSkills().

291  {
292  return $this->maxPointsBySkill[$this->buildSkillKey($skillBaseId, $skillTrefId)] ?? null;
293  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getNumAssignsBySkill()

ilAssQuestionSkillAssignmentList::getNumAssignsBySkill (   $skillBaseId,
  $skillTrefId 
)

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

References buildSkillKey(), and null.

Referenced by getUniqueAssignedSkills().

286  {
287  return $this->numAssignsBySkill[$this->buildSkillKey($skillBaseId, $skillTrefId)] ?? null;
288  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getParentObjId()

ilAssQuestionSkillAssignmentList::getParentObjId ( )
Returns
int

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

References $parentObjId.

Referenced by getWhereConditions().

+ Here is the caller graph for this function:

◆ getQuestionIdFilter()

ilAssQuestionSkillAssignmentList::getQuestionIdFilter ( )
Returns
int

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

References $questionIdFilter.

Referenced by getWhereConditions().

+ Here is the caller graph for this function:

◆ getUniqueAssignedSkills()

ilAssQuestionSkillAssignmentList::getUniqueAssignedSkills ( )

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

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

Referenced by hasSkillsAssignedLowerThanBarrier(), and isAssignedSkill().

240  : array
241  {
242  $skills = [];
243 
244  foreach ($this->assignments as $assignmentsByQuestion) {
245  foreach ($assignmentsByQuestion as $assignment) {
246  $key = $this->buildSkillKey($assignment->getSkillBaseId(), $assignment->getSkillTrefId());
247  if (!isset($skills[$key])) {
248  $skills[$key] = [
249  'skill' => new ilBasicSkill($assignment->getSkillBaseId()),
250  'skill_base_id' => $assignment->getSkillBaseId(),
251  'skill_tref_id' => $assignment->getSkillTrefId(),
252  'skill_title' => $assignment->getSkillTitle(),
253  'skill_path' => $assignment->getSkillPath(),
254  'num_assigns' => $this->getNumAssignsBySkill(
255  $assignment->getSkillBaseId(),
256  $assignment->getSkillTrefId()
257  ),
258  'max_points' => $this->getMaxPointsBySkill(
259  $assignment->getSkillBaseId(),
260  $assignment->getSkillTrefId()
261  )
262  ];
263  }
264  }
265  }
266 
267  return $skills;
268  }
Basic Skill.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getWhereConditions()

ilAssQuestionSkillAssignmentList::getWhereConditions ( )
private

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

References getParentObjId(), and getQuestionIdFilter().

161  : string
162  {
163  $conditions = [
164  'obj_fi = ' . $this->db->quote($this->getParentObjId(), 'integer')
165  ];
166 
167  if ($this->getQuestionIdFilter()) {
168  $conditions[] = 'question_fi = ' . $this->db->quote($this->getQuestionIdFilter(), 'integer');
169  }
170 
171  return implode(' AND ', $conditions);
172  }
+ Here is the call graph for this function:

◆ hasSkillsAssignedLowerThanBarrier()

ilAssQuestionSkillAssignmentList::hasSkillsAssignedLowerThanBarrier ( )

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

References getUniqueAssignedSkills().

295  : bool
296  {
297  $global_barrier = (new ilObjTestFolder())->getGlobalSettingsRepository()
298  ->getGlobalSettings()->getSkillTriggeringNumberOfAnswers();
299 
300  foreach ($this->getUniqueAssignedSkills() as $skill_data) {
301  if ($skill_data['num_assigns'] < $global_barrier) {
302  return true;
303  }
304  }
305 
306  return false;
307  }
Class ilObjTestFolder.
+ Here is the call graph for this function:

◆ incrementMaxPointsBySkill()

ilAssQuestionSkillAssignmentList::incrementMaxPointsBySkill ( ilAssQuestionSkillAssignment  $assignment)
private

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

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

Referenced by loadFromDb().

127  : void
128  {
129  $key = $this->buildSkillKey($assignment->getSkillBaseId(), $assignment->getSkillTrefId());
130 
131  if (!isset($this->maxPointsBySkill[$key])) {
132  $this->maxPointsBySkill[$key] = 0;
133  }
134 
135  $this->maxPointsBySkill[$key] += $assignment->getMaxSkillPoints();
136  }
+ 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 116 of file class.ilAssQuestionSkillAssignmentList.php.

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

Referenced by loadFromDb().

116  : void
117  {
118  $key = $this->buildSkillKey($assignment->getSkillBaseId(), $assignment->getSkillTrefId());
119 
120  if (!isset($this->numAssignsBySkill[$key])) {
121  $this->numAssignsBySkill[$key] = 0;
122  }
123 
124  $this->numAssignsBySkill[$key]++;
125  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isAssignedSkill()

ilAssQuestionSkillAssignmentList::isAssignedSkill (   $skillBaseId,
  $skillTrefId 
)

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

References getUniqueAssignedSkills().

270  : bool
271  {
272  foreach ($this->getUniqueAssignedSkills() as $assignedSkill) {
273  if ($assignedSkill['skill_base_id'] != $skillBaseId) {
274  continue;
275  }
276 
277  if ($assignedSkill['skill_tref_id'] == $skillTrefId) {
278  return true;
279  }
280  }
281 
282  return false;
283  }
+ Here is the call graph for this function:

◆ isAssignedToQuestionId()

ilAssQuestionSkillAssignmentList::isAssignedToQuestionId (   $skillBaseId,
  $skillTrefId,
  $questionId 
)

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

219  : bool
220  {
221  if (!isset($this->assignments[$questionId])) {
222  return false;
223  }
224 
225  foreach ($this->assignments[$questionId] as $assignment) {
226  if ($assignment->getSkillBaseId() != $skillBaseId) {
227  continue;
228  }
229 
230  if ($assignment->getSkillTrefId() != $skillTrefId) {
231  continue;
232  }
233 
234  return true;
235  }
236 
237  return false;
238  }

◆ loadAdditionalSkillData()

ilAssQuestionSkillAssignmentList::loadAdditionalSkillData ( )

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

197  : void
198  {
199  foreach ($this->assignments as $assignmentsByQuestion) {
200  foreach ($assignmentsByQuestion as $assignment) {
201  $assignment->loadAdditionalSkillData();
202  }
203  }
204  }

◆ loadFromDb()

ilAssQuestionSkillAssignmentList::loadFromDb ( )

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

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

138  : void
139  {
140  $this->reset();
141 
142  $res = $this->db->query("
143  SELECT obj_fi, question_fi, skill_base_fi, skill_tref_fi, skill_points, eval_mode
144  FROM qpl_qst_skl_assigns
145  WHERE {$this->getWhereConditions()}
146  ");
147 
148  while ($row = $this->db->fetchAssoc($res)) {
149  $assignment = $this->buildSkillQuestionAssignmentByArray($row);
150 
151  if ($assignment->hasEvalModeBySolution()) {
152  $assignment->loadComparisonExpressions(); // db query
153  }
154 
155  $this->addAssignment($assignment);
156  $this->incrementNumAssignsBySkill($assignment);
157  $this->incrementMaxPointsBySkill($assignment);
158  }
159  }
$res
Definition: ltiservices.php:66
incrementMaxPointsBySkill(ilAssQuestionSkillAssignment $assignment)
addAssignment(ilAssQuestionSkillAssignment $assignment)
incrementNumAssignsBySkill(ilAssQuestionSkillAssignment $assignment)
+ Here is the call graph for this function:

◆ reset()

ilAssQuestionSkillAssignmentList::reset ( )

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

Referenced by loadFromDb().

100  : void
101  {
102  $this->assignments = [];
103  $this->numAssignsBySkill = [];
104  $this->maxPointsBySkill = [];
105  }
+ Here is the caller graph for this function:

◆ setParentObjId()

ilAssQuestionSkillAssignmentList::setParentObjId (   $parentObjId)
Parameters
int$parentObjId

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

References $parentObjId.

71  : void
72  {
73  $this->parentObjId = $parentObjId;
74  }

◆ setQuestionIdFilter()

ilAssQuestionSkillAssignmentList::setQuestionIdFilter (   $questionIdFilter)
Parameters
int$questionIdFilter

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

References $questionIdFilter.

95  : void
96  {
97  $this->questionIdFilter = $questionIdFilter;
98  }

Field Documentation

◆ $assignments

ilAssQuestionSkillAssignmentList::$assignments
private

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

◆ $db

ilAssQuestionSkillAssignmentList::$db
private

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

Referenced by __construct().

◆ $maxPointsBySkill

ilAssQuestionSkillAssignmentList::$maxPointsBySkill
private

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

◆ $numAssignsBySkill

ilAssQuestionSkillAssignmentList::$numAssignsBySkill
private

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

◆ $parentObjId

ilAssQuestionSkillAssignmentList::$parentObjId
private

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

Referenced by getParentObjId(), and setParentObjId().

◆ $questionIdFilter

ilAssQuestionSkillAssignmentList::$questionIdFilter
private

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