ILIAS  release_7 Revision v7.30-3-g800a261c036
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 12 of file class.ilAssQuestionSkillAssignmentList.php.

Constructor & Destructor Documentation

◆ __construct()

ilAssQuestionSkillAssignmentList::__construct ( ilDBInterface  $db)

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

45 {
46 $this->db = $db;
47
48 $this->parentObjId = null;
49 $this->assignments = array();
50 $this->numAssignsBySkill = array();
51 $this->maxPointsBySkill = array();
52 $this->questionIdFilter = null;
53 }

References $db.

Member Function Documentation

◆ addAssignment()

ilAssQuestionSkillAssignmentList::addAssignment ( ilAssQuestionSkillAssignment  $assignment)

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

95 {
96 if (!isset($this->assignments[$assignment->getQuestionId()])) {
97 $this->assignments[$assignment->getQuestionId()] = array();
98 }
99
100 $this->assignments[$assignment->getQuestionId()][] = $assignment;
101 }

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 (   $skillBaseId,
  $skillTrefId 
)
private

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

180 {
181 return $skillBaseId . ':' . $skillTrefId;
182 }

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

+ Here is the caller graph for this function:

◆ buildSkillQuestionAssignmentByArray()

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

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

166 {
167 $assignment = new ilAssQuestionSkillAssignment($this->db);
168
169 $assignment->setParentObjId($data['obj_fi']);
170 $assignment->setQuestionId($data['question_fi']);
171 $assignment->setSkillBaseId($data['skill_base_fi']);
172 $assignment->setSkillTrefId($data['skill_tref_fi']);
173 $assignment->setSkillPoints($data['skill_points']);
174 $assignment->setEvalMode($data['eval_mode']);
175
176 return $assignment;
177 }
$data
Definition: storeScorm.php:23

References $data.

Referenced by loadFromDb().

+ Here is the caller graph for this function:

◆ getAssignmentsByQuestionId()

ilAssQuestionSkillAssignmentList::getAssignmentsByQuestionId (   $questionId)

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

194 {
195 if (!isset($this->assignments[$questionId])) {
196 return array();
197 }
198
199 return $this->assignments[$questionId];
200 }

◆ getMaxPointsBySkill()

ilAssQuestionSkillAssignmentList::getMaxPointsBySkill (   $skillBaseId,
  $skillTrefId 
)

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

277 {
278 return $this->maxPointsBySkill[$this->buildSkillKey($skillBaseId, $skillTrefId)];
279 }

References buildSkillKey().

+ Here is the call graph for this function:

◆ getNumAssignsBySkill()

ilAssQuestionSkillAssignmentList::getNumAssignsBySkill (   $skillBaseId,
  $skillTrefId 
)

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

272 {
273 return $this->numAssignsBySkill[$this->buildSkillKey($skillBaseId, $skillTrefId)];
274 }

References buildSkillKey().

+ Here is the call graph for this function:

◆ getParentObjId()

ilAssQuestionSkillAssignmentList::getParentObjId ( )

◆ getQuestionIdFilter()

ilAssQuestionSkillAssignmentList::getQuestionIdFilter ( )
Returns
int

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

References $questionIdFilter.

Referenced by getWhereConditions().

+ Here is the caller graph for this function:

◆ getUniqueAssignedSkills()

ilAssQuestionSkillAssignmentList::getUniqueAssignedSkills ( )

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

224 {
225 $skills = array();
226
227 foreach ($this->assignments as $assignmentsByQuestion) {
228 foreach ($assignmentsByQuestion as $assignment) {
229 /* @var ilAssQuestionSkillAssignment $assignment */
230
231 $key = $this->buildSkillKey($assignment->getSkillBaseId(), $assignment->getSkillTrefId());
232
233 if (!isset($skills[$key])) {
234 $skills[$key] = array(
235 'skill' => new ilBasicSkill($assignment->getSkillBaseId()),
236 'skill_base_id' => $assignment->getSkillBaseId(),
237 'skill_tref_id' => $assignment->getSkillTrefId(),
238 'skill_title' => $assignment->getSkillTitle(),
239 'skill_path' => $assignment->getSkillPath(),
240 'num_assigns' => $this->getNumAssignsBySkill(
241 $assignment->getSkillBaseId(),
242 $assignment->getSkillTrefId()
243 ),
244 'max_points' => $this->getMaxPointsBySkill(
245 $assignment->getSkillBaseId(),
246 $assignment->getSkillTrefId()
247 )
248 );
249 }
250 }
251 }
252
253 return $skills;
254 }

References buildSkillKey().

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 148 of file class.ilAssQuestionSkillAssignmentList.php.

149 {
150 $conditions = array(
151 'obj_fi = ' . $this->db->quote($this->getParentObjId(), 'integer')
152 );
153
154 if ($this->getQuestionIdFilter()) {
155 $conditions[] = 'question_fi = ' . $this->db->quote($this->getQuestionIdFilter(), 'integer');
156 }
157
158 return implode(' AND ', $conditions);
159 }

References getQuestionIdFilter().

+ Here is the call graph for this function:

◆ hasSkillsAssignedLowerThanBarrier()

ilAssQuestionSkillAssignmentList::hasSkillsAssignedLowerThanBarrier ( )

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

282 {
283 require_once 'Modules/Test/classes/class.ilObjAssessmentFolder.php';
285
286 foreach ($this->getUniqueAssignedSkills() as $skillData) {
287 if ($skillData['num_assigns'] < $globalBarrier) {
288 return true;
289 }
290 }
291
292 return false;
293 }

References ilObjAssessmentFolder\getSkillTriggerAnswerNumberBarrier(), and getUniqueAssignedSkills().

+ Here is the call graph for this function:

◆ incrementMaxPointsBySkill()

ilAssQuestionSkillAssignmentList::incrementMaxPointsBySkill ( ilAssQuestionSkillAssignment  $assignment)
private

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

115 {
116 $key = $this->buildSkillKey($assignment->getSkillBaseId(), $assignment->getSkillTrefId());
117
118 if (!isset($this->maxPointsBySkill[$key])) {
119 $this->maxPointsBySkill[$key] = 0;
120 }
121
122 $this->maxPointsBySkill[$key] += $assignment->getMaxSkillPoints();
123 }

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 103 of file class.ilAssQuestionSkillAssignmentList.php.

104 {
105 $key = $this->buildSkillKey($assignment->getSkillBaseId(), $assignment->getSkillTrefId());
106
107 if (!isset($this->numAssignsBySkill[$key])) {
108 $this->numAssignsBySkill[$key] = 0;
109 }
110
111 $this->numAssignsBySkill[$key]++;
112 }

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 (   $skillBaseId,
  $skillTrefId 
)

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

257 {
258 foreach ($this->getUniqueAssignedSkills() as $assignedSkill) {
259 if ($assignedSkill['skill_base_id'] != $skillBaseId) {
260 continue;
261 }
262
263 if ($assignedSkill['skill_tref_id'] == $skillTrefId) {
264 return true;
265 }
266 }
267
268 return false;
269 }

References getUniqueAssignedSkills().

+ Here is the call graph for this function:

◆ isAssignedToQuestionId()

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

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

203 {
204 if (!isset($this->assignments[$questionId])) {
205 return false;
206 }
207
208 foreach ($this->assignments[$questionId] as $assignment) {
209 if ($assignment->getSkillBaseId() != $skillBaseId) {
210 continue;
211 }
212
213 if ($assignment->getSkillTrefId() != $skillTrefId) {
214 continue;
215 }
216
217 return true;
218 }
219
220 return false;
221 }

◆ loadAdditionalSkillData()

ilAssQuestionSkillAssignmentList::loadAdditionalSkillData ( )

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

185 {
186 foreach ($this->assignments as $assignmentsByQuestion) {
187 foreach ($assignmentsByQuestion as $assignment) {
188 $assignment->loadAdditionalSkillData();
189 }
190 }
191 }

◆ loadFromDb()

ilAssQuestionSkillAssignmentList::loadFromDb ( )

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

126 {
127 $this->reset();
128
129 $res = $this->db->query("
130 SELECT obj_fi, question_fi, skill_base_fi, skill_tref_fi, skill_points, eval_mode
131 FROM qpl_qst_skl_assigns
132 WHERE {$this->getWhereConditions()}
133 ");
134
135 while ($row = $this->db->fetchAssoc($res)) {
136 $assignment = $this->buildSkillQuestionAssignmentByArray($row);
137
138 if ($assignment->hasEvalModeBySolution()) {
139 $assignment->loadComparisonExpressions(); // db query
140 }
141
142 $this->addAssignment($assignment);
143 $this->incrementNumAssignsBySkill($assignment);
144 $this->incrementMaxPointsBySkill($assignment);
145 }
146 }
addAssignment(ilAssQuestionSkillAssignment $assignment)
incrementNumAssignsBySkill(ilAssQuestionSkillAssignment $assignment)
incrementMaxPointsBySkill(ilAssQuestionSkillAssignment $assignment)
foreach($_POST as $key=> $value) $res

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

+ Here is the call graph for this function:

◆ reset()

ilAssQuestionSkillAssignmentList::reset ( )

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

88 {
89 $this->assignments = array();
90 $this->numAssignsBySkill = array();
91 $this->maxPointsBySkill = array();
92 }

Referenced by loadFromDb().

+ Here is the caller graph for this function:

◆ setParentObjId()

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

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

59 {
60 $this->parentObjId = $parentObjId;
61 }

References $parentObjId.

◆ setQuestionIdFilter()

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

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

83 {
84 $this->questionIdFilter = $questionIdFilter;
85 }

References $questionIdFilter.

Field Documentation

◆ $assignments

ilAssQuestionSkillAssignmentList::$assignments
private

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

◆ $db

ilAssQuestionSkillAssignmentList::$db
private

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

Referenced by __construct().

◆ $maxPointsBySkill

ilAssQuestionSkillAssignmentList::$maxPointsBySkill
private

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

◆ $numAssignsBySkill

ilAssQuestionSkillAssignmentList::$numAssignsBySkill
private

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

◆ $parentObjId

ilAssQuestionSkillAssignmentList::$parentObjId
private

Definition at line 22 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: