4 require_once
'./Modules/TestQuestionPool/classes/class.assQuestion.php';
5 require_once
'./Modules/Test/classes/inc.AssessmentConstants.php';
6 require_once
'./Modules/TestQuestionPool/interfaces/interface.ilObjQuestionScoringAdjustable.php';
7 require_once
'./Modules/TestQuestionPool/interfaces/interface.ilObjAnswerScoringAdjustable.php';
8 require_once
'./Modules/TestQuestionPool/interfaces/interface.iQuestionCondition.php';
9 require_once
'./Modules/TestQuestionPool/classes/class.ilUserQuestionResult.php';
95 $this->matchingpairs =
array();
97 $this->terms =
array();
98 $this->definitions =
array();
108 if (strlen($this->title)
111 && count($this->matchingpairs)
142 $ilDB->manipulateF(
"DELETE FROM qpl_a_mterm WHERE question_fi = %s",
148 $ilDB->manipulateF(
"DELETE FROM qpl_a_mdef WHERE question_fi = %s",
155 foreach ($this->terms as $key => $term)
157 $next_id = $ilDB->nextId(
'qpl_a_mterm' );
158 $ilDB->insert(
'qpl_a_mterm',
array(
159 'term_id' =>
array(
'integer', $next_id),
160 'question_fi' =>
array(
'integer', $this->
getId()),
161 'picture' =>
array(
'text', $term->picture),
162 'term' =>
array(
'text', $term->text),
163 'ident' =>
array(
'integer', $term->identifier)
165 $termids[$term->identifier] = $next_id;
168 $definitionids =
array();
170 foreach ($this->definitions as $key => $definition)
172 $next_id = $ilDB->nextId(
'qpl_a_mdef' );
173 $ilDB->insert(
'qpl_a_mdef',
array(
174 'def_id' =>
array(
'integer', $next_id),
175 'question_fi' =>
array(
'integer', $this->
getId()),
176 'picture' =>
array(
'text', $definition->picture),
177 'definition' =>
array(
'text', $definition->text),
178 'ident' =>
array(
'integer', $definition->identifier)
180 $definitionids[$definition->identifier] = $next_id;
183 $ilDB->manipulateF(
"DELETE FROM qpl_a_matching WHERE question_fi = %s",
188 foreach ($matchingpairs as $key => $pair)
190 $next_id = $ilDB->nextId(
'qpl_a_matching' );
191 $ilDB->manipulateF(
"INSERT INTO qpl_a_matching (answer_id, question_fi, points, term_fi, definition_fi) VALUES (%s, %s, %s, %s, %s)",
192 array(
'integer',
'integer',
'float',
'integer',
'integer' ),
197 $termids[$pair->term->identifier],
198 $definitionids[$pair->definition->identifier]
218 'question_fi' =>
array(
'integer', $this->
getId()),
219 'shuffle' =>
array(
'text', $this->shuffle),
220 'matching_type' =>
array(
'text', $this->matching_type),
237 SELECT qpl_questions.*, 238 {$this->getAdditionalTableName()}.* 240 LEFT JOIN {$this->getAdditionalTableName()} 241 ON {$this->getAdditionalTableName()}.question_fi = qpl_questions.question_id 242 WHERE qpl_questions.question_id = %s 252 $this->
setId($question_id);
261 include_once(
"./Services/RTE/classes/class.ilRTE.php");
266 $this->
setEstimatedWorkingTime(substr($data[
"working_time"], 0, 2), substr($data[
"working_time"], 3, 2), substr($data[
"working_time"], 6, 2));
278 $result = $ilDB->queryF(
"SELECT * FROM qpl_a_mterm WHERE question_fi = %s ORDER BY term_id ASC",
282 include_once
"./Modules/TestQuestionPool/classes/class.assAnswerMatchingTerm.php";
283 $this->terms =
array();
289 array_push($this->terms, $term);
290 $termids[
$data[
'term_id']] = $term;
294 $definitionids =
array();
295 $result = $ilDB->queryF(
"SELECT * FROM qpl_a_mdef WHERE question_fi = %s ORDER BY def_id ASC",
299 include_once
"./Modules/TestQuestionPool/classes/class.assAnswerMatchingDefinition.php";
300 $this->definitions =
array();
306 array_push($this->definitions, $definition);
307 $definitionids[
$data[
'def_id']] = $definition;
311 $this->matchingpairs =
array();
312 $result = $ilDB->queryF(
"SELECT * FROM qpl_a_matching WHERE question_fi = %s ORDER BY answer_id",
316 include_once
"./Modules/TestQuestionPool/classes/class.assAnswerMatchingPair.php";
321 array_push($this->matchingpairs,
new assAnswerMatchingPair($termids[
$data[
'term_fi']], $definitionids[$data[
'definition_fi']], $data[
'points']));
324 parent::loadFromDb($question_id);
339 $this_id = $this->
getId();
343 include_once (
"./Modules/TestQuestionPool/classes/class.assQuestion.php");
347 if( (
int)$testObjId > 0 )
349 $clone->setObjId($testObjId);
374 $clone->copyPageOfQuestion($this_id);
376 $clone->copyXHTMLMediaObjectsOfQuestion($this_id);
378 $clone->duplicateImages($this_id, $thisObjId, $clone->getId(), $testObjId);
380 $clone->onDuplicate($thisObjId, $this_id, $clone->getObjId(), $clone->getId());
397 include_once (
"./Modules/TestQuestionPool/classes/class.assQuestion.php");
400 $source_questionpool_id = $this->
getObjId();
401 $clone->setObjId($target_questionpool_id);
412 $clone->copyImages(
$original_id, $source_questionpool_id);
414 $clone->onCopy($source_questionpool_id,
$original_id, $clone->getObjId(), $clone->getId());
427 include_once (
"./Modules/TestQuestionPool/classes/class.assQuestion.php");
430 $sourceParentId = $this->
getObjId();
436 $clone->setObjId($targetParentId);
438 if ($targetQuestionTitle)
440 $clone->setTitle($targetQuestionTitle);
445 $clone->copyPageOfQuestion($sourceQuestionId);
447 $clone->copyXHTMLMediaObjectsOfQuestion($sourceQuestionId);
449 $clone->copyImages($sourceQuestionId, $sourceParentId);
451 $clone->onCopy($sourceParentId, $sourceQuestionId, $clone->getObjId(), $clone->getId());
460 $imagepath_original = str_replace(
"/$this->id/images",
"/$question_id/images", $imagepath);
462 if( (
int)$objectId > 0 )
464 $imagepath_original = str_replace(
"/$this->obj_id/",
"/$objectId/", $imagepath_original);
467 foreach ($this->terms as $term)
469 if (strlen($term->picture))
472 if (!file_exists($imagepath))
476 if (!@copy($imagepath_original .
$filename, $imagepath . $filename))
478 $ilLog->write(
"matching question image could not be duplicated: $imagepath_original$filename");
480 if (@file_exists($imagepath_original . $this->
getThumbPrefix() . $filename))
484 $ilLog->write(
"matching question image thumbnail could not be duplicated: $imagepath_original" . $this->
getThumbPrefix() . $filename);
489 foreach ($this->definitions as $definition)
491 if (strlen($definition->picture))
494 if (!file_exists($imagepath))
498 if (!@copy($imagepath_original .
$filename, $imagepath . $filename))
500 $ilLog->write(
"matching question image could not be duplicated: $imagepath_original$filename");
502 if (@file_exists($imagepath_original . $this->
getThumbPrefix() . $filename))
506 $ilLog->write(
"matching question image thumbnail could not be duplicated: $imagepath_original" . $this->
getThumbPrefix() . $filename);
513 public function copyImages($question_id, $source_questionpool)
518 $imagepath_original = str_replace(
"/$this->id/images",
"/$question_id/images", $imagepath);
519 $imagepath_original = str_replace(
"/$this->obj_id/",
"/$source_questionpool/", $imagepath_original);
520 foreach ($this->terms as $term)
522 if (strlen($term->picture))
524 if (!file_exists($imagepath))
529 if (!@copy($imagepath_original .
$filename, $imagepath . $filename))
531 $ilLog->write(
"matching question image could not be copied: $imagepath_original$filename");
535 $ilLog->write(
"matching question image thumbnail could not be copied: $imagepath_original" . $this->
getThumbPrefix() . $filename);
539 foreach ($this->definitions as $definition)
541 if (strlen($definition->picture))
544 if (!file_exists($imagepath))
551 copy($imagepath_original . $filename, $imagepath . $filename);
555 $ilLog->write(
"matching question image could not be copied: $imagepath_original$filename");
564 $ilLog->write(
"matching question image thumbnail could not be copied: $imagepath_original" . $this->
getThumbPrefix() . $filename);
582 include_once
"./Modules/TestQuestionPool/classes/class.assAnswerMatchingPair.php";
583 include_once
"./Modules/TestQuestionPool/classes/class.assAnswerMatchingTerm.php";
584 include_once
"./Modules/TestQuestionPool/classes/class.assAnswerMatchingDefinition.php";
588 if ($position < count($this->matchingpairs))
590 $part1 = array_slice($this->matchingpairs, 0, $position);
591 $part2 = array_slice($this->matchingpairs, $position);
592 $this->matchingpairs = array_merge($part1,
array($pair), $part2);
596 array_push($this->matchingpairs, $pair);
613 require_once
'./Modules/TestQuestionPool/classes/class.assAnswerMatchingPair.php';
614 require_once
'./Modules/TestQuestionPool/classes/class.assAnswerMatchingTerm.php';
615 require_once
'./Modules/TestQuestionPool/classes/class.assAnswerMatchingDefinition.php';
620 if (is_null($definition))
625 array_push($this->matchingpairs, $pair);
633 foreach ($this->terms as $term)
635 if ($term->identifier == $a_identifier)
return $term;
645 foreach ($this->definitions as $definition)
647 if ($definition->identifier == $a_identifier)
return $definition;
666 if (count($this->matchingpairs) < 1)
670 if ($index >= count($this->matchingpairs))
674 return $this->matchingpairs[$index];
690 if (count($this->matchingpairs) < 1)
694 if ($index >= count($this->matchingpairs))
698 unset($this->matchingpairs[$index]);
699 $this->matchingpairs = array_values($this->matchingpairs);
708 $this->matchingpairs =
array();
719 return count($this->matchingpairs);
752 return count($this->terms);
763 return count($this->definitions);
774 array_push($this->terms, $term);
785 array_push($this->definitions, $definition);
798 include_once
"./Modules/TestQuestionPool/classes/class.assAnswerMatchingTerm.php";
801 if ($position < count($this->terms))
803 $part1 = array_slice($this->terms, 0, $position);
804 $part2 = array_slice($this->terms, $position);
805 $this->terms = array_merge($part1,
array($term), $part2);
809 array_push($this->terms, $term);
821 if (is_null($definition))
823 include_once
"./Modules/TestQuestionPool/classes/class.assAnswerMatchingDefinition.php";
826 if ($position < count($this->definitions))
828 $part1 = array_slice($this->definitions, 0, $position);
829 $part2 = array_slice($this->definitions, $position);
830 $this->definitions = array_merge($part1,
array($definition), $part2);
834 array_push($this->definitions, $definition);
844 $this->terms =
array();
853 $this->definitions =
array();
864 unset($this->terms[$position]);
865 $this->terms = array_values($this->terms);
876 unset($this->definitions[$position]);
877 $this->definitions = array_values($this->definitions);
889 $this->terms[$index] = $term;
906 throw new ilTestException(
'return details not implemented for '.__METHOD__);
911 $found_values =
array();
919 if (strcmp(
$data[
"value1"],
"") != 0)
921 if( !isset($found_values[
$data[
'value2']]) )
923 $found_values[$data[
'value2']] =
array();
926 $found_values[$data[
'value2']][] = $data[
'value1'];
966 $matchingPairs =
array();
968 foreach( $this->matchingpairs as $pair )
970 if( $pair->points <= 0 )
975 $matchingPairs[] = $pair;
978 return $matchingPairs;
983 $matchingPairsByDefinition =
array();
985 foreach( $this->matchingpairs as $pair )
987 if( $pair->points <= 0 )
992 $defId = $pair->definition->identifier;
994 if( !isset($matchingPairsByDefinition[$defId]) )
996 $matchingPairsByDefinition[$defId] = $pair;
998 elseif( $pair->points > $matchingPairsByDefinition[$defId]->points )
1000 $matchingPairsByDefinition[$defId] = $pair;
1004 return $matchingPairsByDefinition;
1013 $indexedValues =
array();
1015 foreach($valuePairs as $valuePair)
1017 if( !isset($indexedValues[$valuePair[
'value2']]) )
1019 $indexedValues[$valuePair[
'value2']] =
array();
1022 $indexedValues[$valuePair[
'value2']][] = $valuePair[
'value1'];
1025 return $indexedValues;
1039 if (preg_match(
"/.*\\.(\\w+)$/",
$filename, $matches))
1041 $extension = $matches[1];
1043 return md5(
$filename) .
"." . $extension;
1048 $term = $this->terms[$index];
1049 if (is_object($term))
1052 $term->picture = null;
1058 $definition = $this->definitions[$index];
1059 if (is_object($definition))
1062 $definition->picture = null;
1089 function setImageFile($image_tempfilename, $image_filename, $previous_filename =
'')
1092 if (strlen($image_tempfilename))
1094 $image_filename = str_replace(
" ",
"_", $image_filename);
1096 if (!file_exists($imagepath))
1100 $savename = $image_filename;
1111 if (
$result && (strcmp($image_filename, $previous_filename) != 0) && (strlen($previous_filename)))
1123 $matchings =
array();
1127 if( isset($postData[$definition->identifier]) )
1129 foreach( $this->
getTerms() as $term )
1131 if( isset($postData[$definition->identifier][$term->identifier]) )
1133 if( !is_array($postData[$definition->identifier]) )
1135 $postData[$definition->identifier] =
array();
1138 $matchings[$definition->identifier][] = $term->identifier;
1154 $handledTerms =
array();
1156 foreach( $submittedMatchings as $definition =>
$terms )
1164 foreach(
$terms as $i => $term )
1166 if( isset($handledTerms[$term]) )
1172 $handledTerms[$term] = $term;
1194 $matchingsExist =
false;
1196 if ($submittedMatchingsValid)
1200 include_once
"./Modules/Test/classes/class.ilObjTest.php";
1204 $this->
getProcessLocker()->executeUserSolutionUpdateLockOperation(
function() use (&$matchingsExist, $submittedMatchings, $active_id,
$pass, $authorized) {
1208 foreach($submittedMatchings as $definition =>
$terms)
1210 foreach(
$terms as $i => $term)
1213 $matchingsExist =
true;
1219 $saveWorkingDataResult =
true;
1223 $saveWorkingDataResult =
false;
1226 include_once (
"./Modules/Test/classes/class.ilObjAssessmentFolder.php");
1229 if( $matchingsExist )
1239 return $saveWorkingDataResult;
1262 mt_srand((
double)microtime()*1000000);
1263 $random_number = mt_rand(1, 100000);
1268 foreach ($this->matchingpairs as $key => $pair)
1270 if (($pair->term->identifier == $random_number) || ($pair->definition->identifier == $random_number))
1277 return $random_number;
1309 return "assMatchingQuestion";
1319 return "qpl_qst_matching";
1329 return array(
"qpl_a_matching",
"qpl_a_mterm");
1338 return parent::getRTETextWithMediaObjects();
1354 parent::setExportDetailsXLS(
$worksheet, $startrow, $active_id,
$pass);
1360 foreach ($solutions as $solution)
1362 $matches_written = FALSE;
1365 if (!$matches_written)
$worksheet->setCell($startrow + $i, 1, $this->lng->txt(
"matches"));
1366 $matches_written = TRUE;
1367 if ($pair->definition->identifier == $solution[
"value2"])
1369 if (strlen($pair->definition->text))
1371 $worksheet->setCell($startrow + $i, 0, $pair->definition->text);
1375 $worksheet->setCell($startrow + $i, 0, $pair->definition->picture);
1378 if ($pair->term->identifier == $solution[
"value1"])
1380 if (strlen($pair->term->text))
1382 $worksheet->setCell($startrow + $i, 2, $pair->term->text);
1386 $worksheet->setCell($startrow + $i, 2, $pair->term->picture);
1393 return $startrow + $i + 1;
1423 $this->thumb_geometry = ($a_geometry < 1) ? 100 : $a_geometry;
1431 foreach ($this->terms as $term)
1435 foreach ($this->definitions as $definition)
1454 switch (strtoupper($path_info[
'extension']))
1486 'onenotcorrect' => $this->
formatSAQuestion($this->feedbackOBJ->getGenericFeedbackTestPresentation($this->getId(),
false)),
1487 'allcorrect' => $this->
formatSAQuestion($this->feedbackOBJ->getGenericFeedbackTestPresentation($this->getId(),
true))
1490 require_once
'Services/Randomization/classes/class.ilArrayElementShuffler.php';
1500 "id" =>(
int)$this->getId().$term->identifier
1518 "id" => (
int) $this->getId().$def->identifier
1524 $matchings =
array();
1528 if ($pair->points <= 0)
1534 $pid = $pair->definition->identifier;
1537 $pid .=
'::'.$pair->term->identifier;
1540 if( !isset($matchings[$pid]) || $matchings[$pid][
"points"] < $pair->points )
1542 $matchings[$pid] =
array(
1543 "term_id" => (
int) $this->
getId().$pair->term->identifier,
1544 "def_id" => (
int) $this->getId().$pair->definition->identifier,
1545 "points" => (int) $pair->points
1550 $result[
'matchingPairs'] = array_values($matchings);
1553 $result[
'mobs'] =
$mobs;
1556 $lng->loadLanguageModule(
'assessment');
1557 $result[
'reset_button_label'] = $lng->txt(
"reset_terms");
1559 return json_encode($result);
1589 foreach($found_values as $definition =>
$terms)
1593 foreach($this->matchingpairs as $pair)
1595 if($pair->definition->identifier == $definition && $pair->term->identifier == $term)
1615 require_once
"./Modules/TestQuestionPool/classes/class.ilOperatorsExpressionMapping.php";
1646 $data = $ilDB->queryF(
1647 "SELECT ident FROM qpl_a_mdef WHERE question_fi = %s ORDER BY def_id",
1653 for($index=1; $index <= $ilDB->numRows(
$data); ++$index)
1659 $data = $ilDB->queryF(
1660 "SELECT ident FROM qpl_a_mterm WHERE question_fi = %s ORDER BY term_id",
1666 for($index=1; $index <= $ilDB->numRows(
$data); ++$index)
1672 $maxStep = $this->lookupMaxStep($active_id,
$pass);
1674 if( $maxStep !== null )
1676 $data = $ilDB->queryF(
1677 "SELECT value1, value2 FROM tst_solutions WHERE active_fi = %s AND pass = %s AND question_fi = %s AND step = %s",
1678 array(
"integer",
"integer",
"integer",
"integer"),
1684 $data = $ilDB->queryF(
1685 "SELECT value1, value2 FROM tst_solutions WHERE active_fi = %s AND pass = %s AND question_fi = %s",
1686 array(
"integer",
"integer",
"integer"),
1693 if(
$row[
"value1"] > 0)
1732 parent::afterSyncWithOriginal($origQuestionId, $dupQuestionId, $origParentObjId, $dupParentObjId);
1734 $origImagePath = $this->
buildImagePath($origQuestionId, $origParentObjId);
1735 $dupImagePath = $this->
buildImagePath($dupQuestionId, $dupParentObjId);
1738 if(is_dir($dupImagePath))
getThumbGeometry()
Get the thumbnail geometry.
Class for matching question terms.
supportsJavascriptOutput()
static makeDirParents($a_dir)
Create a new directory and all parent directories.
static logAction($logtext="", $active_id="", $question_id="")
Logs an action into the Test&Assessment log.
getId()
Gets the id of the assQuestion object.
duplicate($for_test=true, $title="", $author="", $owner="", $testObjId=null)
Duplicates an assMatchingQuestion.
static isFileAvailable($file)
getMaximumPoints()
Calculates and Returns the maximum points, a learner can reach answering the question.
static _getOriginalId($question_id)
Returns the original id of a question.
formatSAQuestion($a_q)
Format self assessment question.
const PercentageResultExpression
Class for matching question pairs.
Class iQuestionCondition.
static _getPass($active_id)
Retrieves the actual pass of a given user for a given test.
saveAdditionalQuestionDataToDb()
Saves a record to the question types additional data table.
getPositiveScoredMatchingPairs()
getTermCount()
Returns the number of terms.
const MATCHING_MODE_N_ON_N
copyObject($target_questionpool_id, $title="")
Copies an assMatchingQuestion.
generateThumbForFile($path, $file)
static rCopy($a_sdir, $a_tdir, $preserveTimeAttributes=false)
Copies content of a directory $a_sdir recursively to a directory $a_tdir.
deleteMatchingPair($index=0)
Deletes a matching pair with a given index.
Abstract basic class which is to be extended by the concrete assessment question type classes...
afterSyncWithOriginal($origQuestionId, $dupQuestionId, $origParentObjId, $dupParentObjId)
{}
getDefinitionCount()
Returns the number of definitions.
const MATCHING_MODE_1_ON_1
getQuestionType()
Returns the question type of the question.
setExportDetailsXLS($worksheet, $startrow, $active_id, $pass)
{}
addTerm($term)
Adds a term.
setId($id=-1)
Sets the id of the assQuestion object.
flushMatchingPairs()
Deletes all matching pairs.
setImageFile($image_tempfilename, $image_filename, $previous_filename='')
Sets the image file and uploads the image to the object's image directory.
getEncryptedFilename($filename)
Returns the encrypted save filename of a matching picture Images are saved with an encrypted filename...
flushTerms()
Deletes all terms.
deleteImagefile($filename)
Deletes an imagefile from the system if the file is deleted manually.
getSolutionMaxPass($active_id)
Returns the maximum pass a users question solution.
const MT_TERMS_DEFINITIONS
fetchIndexedValuesFromValuePairs(array $valuePairs)
createNewOriginalFromThisDuplicate($targetParentId, $targetQuestionTitle="")
setEstimatedWorkingTime($hour=0, $min=0, $sec=0)
Sets the estimated working time of a question from given hour, minute and second. ...
getRTETextWithMediaObjects()
Collects all text in the question which could contain media objects which were created with the Rich ...
Add rich text string
The name of the decorator.
getAdditionalTableName()
Returns the name of the additional question data table in the database.
getUserQuestionResult($active_id, $pass)
Get the user solution for a question by active_id and the test pass.
setNrOfTries($a_nr_of_tries)
deleteTerm($position)
Deletes a term.
setAdditionalContentEditingMode($additinalContentEditingMode)
setter for additional content editing mode for this question
reworkWorkingData($active_id, $pass, $obligationsAnswered, $authorized)
{}
static _replaceMediaObjectImageSrc($a_text, $a_direction=0, $nic=IL_INST_ID)
Replaces image source from mob image urls with the mob id or replaces mob id with the correct image s...
rebuildThumbnails()
Rebuild the thumbnail images with a new thumbnail size.
getObjId()
Get the object id of the container object.
calculateReachedPointsForSolution($found_values)
getDefinitions()
Returns the definitions of the matching question.
loadFromDb($question_id)
Loads a assMatchingQuestion object from a database.
getMatchingPair($index=0)
Returns a matching pair with a given index.
Base Exception for all Exceptions relating to Modules/Test.
setMatchingMode($matchingMode)
Class for matching questions.
setParticipantsSolution($participantSolution)
duplicateImages($question_id, $objectId=null)
static _getLogLanguage()
retrieve the log language for assessment logging
fetchSubmittedMatchingsFromPost()
getTermWithIdentifier($a_identifier)
Returns a term with a given identifier.
getAvailableAnswerOptions($index=null)
If index is null, the function returns an array with all anwser options Else it returns the specific ...
insertMatchingPair($position, $term=null, $definition=null, $points=0.0)
Inserts a matching pair for an matching choice question.
setAuthor($author="")
Sets the authors name of the assQuestion object.
removeDefinitionImage($index)
static _enabledAssessmentLogging()
check wether assessment logging is enabled or not
getImagePath($question_id=null, $object_id=null)
Returns the image path for web accessable images of a question.
Class ilUserQuestionResult.
insertDefinition($position, $definition=null)
Inserts a definition.
calculateReachedPoints($active_id, $pass=NULL, $authorizedSolution=true, $returndetails=FALSE)
Returns the points, a learner has reached answering the question.
saveCurrentSolution($active_id, $pass, $value1, $value2, $authorized=true, $tstamp=null)
setTerm($term, $index)
Sets a specific term.
getMatchingPairCount()
Returns the number of matching pairs.
const NumericResultExpression
static moveUploadedFile($a_file, $a_name, $a_target, $a_raise_errors=true, $a_mode="move_uploaded")
move uploaded file
getExpressionTypes()
Get all available expression types for a specific question.
getMostPositiveScoredUniqueTermMatchingPairs()
setShuffle($shuffle=true)
Sets the shuffle flag.
getOperators($expression)
Get all available operations for a specific question.
Interface ilObjAnswerScoringAdjustable.
checkSubmittedMatchings($submittedMatchings)
const MatchingResultExpression
getQuestion()
Gets the question string of the question object.
addDefinition($definition)
Adds a definition.
getMaximumScoringMatchingPairs()
flushDefinitions()
Deletes all definitions.
insertTerm($position, $term=null)
Inserts a term.
Create styles array
The data for the language used.
saveAnswerSpecificDataToDb()
Saves the answer specific records into a question types answer table.
static getOperatorsByExpression($expression)
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
__construct( $title="", $comment="", $author="", $owner=-1, $question="", $matching_type=MT_TERMS_DEFINITIONS)
assMatchingQuestion constructor
toJSON()
Returns a JSON representation of the question TODO.
setPoints($a_points)
Sets the maximum available points for the question.
saveQuestionDataToDb($original_id="")
deleteDefinition($position)
Deletes a definition.
getTerms()
Returns the terms of the matching question.
getDefinitionWithIdentifier($a_identifier)
Returns a definition with a given identifier.
setQuestion($question="")
Sets the question string of the question object.
static convertImage($a_from, $a_to, $a_target_format="", $a_geometry="", $a_background_color="")
convert image
Interface ilObjQuestionScoringAdjustable.
removeCurrentSolution($active_id, $pass, $authorized=true)
setThumbGeometry($a_geometry)
Set the thumbnail geometry.
buildImagePath($questionId, $parentObjectId)
setOriginalId($original_id)
getCurrentSolutionResultSet($active_id, $pass, $authorized=true)
Get a restulset for the current user solution for a this question by active_id and pass...
Class for matching question definitions.
addMatchingPair($term=null, $definition=null, $points=0.0)
Adds an matching pair for an matching choice question.
getAnswerTableName()
Returns the name of the answer table in the database.
getSolutionValues($active_id, $pass=NULL, $authorized=true)
Loads solutions of a given user from the database an returns it.
getTitle()
Gets the title string of the assQuestion object.
saveToDb($original_id="")
Saves a assMatchingQuestion object to a database.
if(!file_exists("$old.txt")) if($old===$new) if(file_exists("$new.txt")) $file
saveWorkingData($active_id, $pass=NULL, $authorized=true)
Saves the learners input of the question to the database.
& getMatchingPairs()
Returns the matchingpairs array.
copyImages($question_id, $source_questionpool)
setTitle($title="")
Sets the title string of the assQuestion object.
setObjId($obj_id=0)
Set the object id of the container object.
savePreviewData(ilAssQuestionPreviewSession $previewSession)
static delDir($a_dir, $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
setComment($comment="")
Sets the comment string of the assQuestion object.
setShuffler(ilArrayElementShuffler $shuffler)
isComplete()
Returns true, if a matching question is complete for use.
getThumbSize()
Get the thumbnail geometry.
setOwner($owner="")
Sets the creator/owner ID of the assQuestion object.
const EmptyAnswerExpression