92 $this->taxFilters[$taxId] = $taxNodes;
103 SELECT qpl_questions.question_id, 104 qpl_qst_type.type_tag, 109 INNER JOIN qpl_questions 110 ON qpl_questions.question_id = tst_rnd_cpy.qst_fi 112 INNER JOIN qpl_qst_type 113 ON qpl_qst_type.question_type_id = qpl_questions.question_type_fi 115 WHERE tst_rnd_cpy.tst_fi = %s 116 AND tst_rnd_cpy.qpl_fi = %s 118 {$this->getConditionalExpression()} 121 $res = $this->db->queryF(
127 while(
$row = $this->db->fetchAssoc(
$res) )
134 $this->questions[] =
$row[
'question_id'];
142 $CONDITIONS = implode(
' AND ', $CONDITIONS);
144 return strlen($CONDITIONS) ?
'AND '.$CONDITIONS :
'';
149 $expressions = array();
151 require_once
'Services/Taxonomy/classes/class.ilTaxonomyTree.php';
152 require_once
'Services/Taxonomy/classes/class.ilTaxNodeAssignment.php';
156 $questionIds = array();
160 foreach($taxNodes as $taxNode)
162 $forceBypass =
false;
168 $subNodes = $taxTree->getSubTreeIds($taxNode);
169 $subNodes[] = $taxNode;
171 $taxItems = $taxNodeAssignment->getAssignmentsOfNode($subNodes);
173 foreach($taxItems as $taxItem)
175 $questionIds[$taxItem[
'item_id']] = $taxItem[
'item_id'];
181 $expressions[] = $this->db->in(
'question_id', $questionIds,
false,
'integer');
190 if( !isset($questionData[
'plugin']) )
195 if( !$questionData[
'plugin'] )
200 return $this->pluginAdmin->isActive(
IL_COMP_MODULE,
'TestQuestionPool',
'qst', $questionData[
'type_tag']);
205 $this->questions = array();
206 $this->taxFilters = array();
208 $this->testObjId = -1;
216 return array_values($this->questions);
226 return reset($this->questions);
234 return current($this->questions);
242 return key($this->questions);
250 return next($this->questions);
258 return key($this->questions) !== null;
Taxonomy node <-> item assignment.
getConditionalExpression()
Administration class for plugins.
isActiveQuestionType($questionData)
__construct(ilDB $db, ilPluginAdmin $pluginAdmin)
getTaxonomyFilterExpressions()
addTaxonomyFilter($taxId, $taxNodes)