4require_once
'./Modules/TestQuestionPool/classes/class.assQuestion.php';
5require_once
'./Modules/Test/classes/inc.AssessmentConstants.php';
6require_once
'./Modules/TestQuestionPool/interfaces/interface.ilObjQuestionScoringAdjustable.php';
7require_once
'./Modules/TestQuestionPool/interfaces/interface.ilObjAnswerScoringAdjustable.php';
8require_once
'./Modules/TestQuestionPool/interfaces/interface.iQuestionCondition.php';
9require_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",
144 array( $this->
getId() )
148 $ilDB->manipulateF(
"DELETE FROM qpl_a_mdef WHERE question_fi = %s",
150 array( $this->
getId() )
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",
185 array( $this->
getId() )
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]
214 array(
"integer" ), array( $this->
getId() )
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
246 $query, array(
'integer'), array($question_id)
252 $this->
setId($question_id);
261 include_once(
"./Services/RTE/classes/class.ilRTE.php");
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";
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))
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))
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))
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))
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);
1556 $lng->loadLanguageModule(
'assessment');
1557 $result[
'reset_button_label'] =
$lng->txt(
"reset_terms");
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";
1647 "SELECT ident FROM qpl_a_mdef WHERE question_fi = %s ORDER BY def_id",
1649 array($this->
getId())
1653 for($index=1; $index <=
$ilDB->numRows(
$data); ++$index)
1660 "SELECT ident FROM qpl_a_mterm WHERE question_fi = %s ORDER BY term_id",
1662 array($this->
getId())
1666 for($index=1; $index <=
$ilDB->numRows(
$data); ++$index)
1672 $maxStep = $this->lookupMaxStep($active_id,
$pass);
1674 if( $maxStep !==
null )
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"),
1679 array($active_id,
$pass, $this->
getId(), $maxStep)
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))
An exception for terminatinating execution or to throw for unit testing.
Class for matching question definitions.
Class for matching question pairs.
Class for matching question terms.
Class for matching questions.
supportsJavascriptOutput()
Returns true if the question type supports JavaScript output.
setThumbGeometry($a_geometry)
Set the thumbnail geometry.
deleteDefinition($position)
Deletes a definition.
getEncryptedFilename($filename)
Returns the encrypted save filename of a matching picture Images are saved with an encrypted filename...
reworkWorkingData($active_id, $pass, $obligationsAnswered, $authorized)
{Reworks the allready saved working data if neccessary.}
__construct( $title="", $comment="", $author="", $owner=-1, $question="", $matching_type=MT_TERMS_DEFINITIONS)
assMatchingQuestion constructor
removeDefinitionImage($index)
getMatchingPairCount()
Returns the number of matching pairs.
calculateReachedPointsForSolution($found_values)
addDefinition($definition)
Adds a definition.
getMaximumPoints()
Calculates and Returns the maximum points, a learner can reach answering the question.
savePreviewData(ilAssQuestionPreviewSession $previewSession)
copyObject($target_questionpool_id, $title="")
Copies an assMatchingQuestion.
getMostPositiveScoredUniqueTermMatchingPairs()
toJSON()
Returns a JSON representation of the question TODO.
getOperators($expression)
Get all available operations for a specific question.
setExportDetailsXLS($worksheet, $startrow, $active_id, $pass)
{Creates an Excel worksheet for the detailed cumulated results of this question.object}
getDefinitionCount()
Returns the number of definitions.
getDefinitions()
Returns the definitions of the matching question.
getMatchingPair($index=0)
Returns a matching pair with a given index.
createNewOriginalFromThisDuplicate($targetParentId, $targetQuestionTitle="")
duplicate($for_test=true, $title="", $author="", $owner="", $testObjId=null)
Duplicates an assMatchingQuestion.
getQuestionType()
Returns the question type of the question.
isComplete()
Returns true, if a matching question is complete for use.
insertDefinition($position, $definition=null)
Inserts a definition.
& getMatchingPairs()
Returns the matchingpairs array.
rebuildThumbnails()
Rebuild the thumbnail images with a new thumbnail size.
getPositiveScoredMatchingPairs()
duplicateImages($question_id, $objectId=null)
getTermCount()
Returns the number of terms.
getThumbGeometry()
Get the thumbnail geometry.
deleteTerm($position)
Deletes a term.
checkSubmittedMatchings($submittedMatchings)
getTerms()
Returns the terms of the matching question.
calculateReachedPoints($active_id, $pass=NULL, $authorizedSolution=true, $returndetails=FALSE)
Returns the points, a learner has reached answering the question.
addMatchingPair($term=null, $definition=null, $points=0.0)
Adds an matching pair for an matching choice question.
flushDefinitions()
Deletes all definitions.
fetchIndexedValuesFromValuePairs(array $valuePairs)
loadFromDb($question_id)
Loads a assMatchingQuestion object from a database.
getAnswerTableName()
Returns the name of the answer table in the database.
getDefinitionWithIdentifier($a_identifier)
Returns a definition with a given identifier.
getAdditionalTableName()
Returns the name of the additional question data table in the database.
flushTerms()
Deletes all terms.
copyImages($question_id, $source_questionpool)
flushMatchingPairs()
Deletes all matching pairs.
saveToDb($original_id="")
Saves a assMatchingQuestion object to a database.
setMatchingMode($matchingMode)
getAvailableAnswerOptions($index=null)
If index is null, the function returns an array with all anwser options Else it returns the specific ...
setImageFile($image_tempfilename, $image_filename, $previous_filename='')
Sets the image file and uploads the image to the object's image directory.
setShuffle($shuffle=true)
Sets the shuffle flag.
getThumbSize()
Get the thumbnail geometry.
getTermWithIdentifier($a_identifier)
Returns a term with a given identifier.
setTerm($term, $index)
Sets a specific term.
getRTETextWithMediaObjects()
Collects all text in the question which could contain media objects which were created with the Rich ...
fetchSubmittedMatchingsFromPost()
addTerm($term)
Adds a term.
saveAnswerSpecificDataToDb()
Saves the answer specific records into a question types answer table.
afterSyncWithOriginal($origQuestionId, $dupQuestionId, $origParentObjId, $dupParentObjId)
{}
getExpressionTypes()
Get all available expression types for a specific question.
const MATCHING_MODE_1_ON_1
deleteImagefile($filename)
Deletes an imagefile from the system if the file is deleted manually.
getMaximumScoringMatchingPairs()
deleteMatchingPair($index=0)
Deletes a matching pair with a given index.
const MATCHING_MODE_N_ON_N
insertMatchingPair($position, $term=null, $definition=null, $points=0.0)
Inserts a matching pair for an matching choice question.
insertTerm($position, $term=null)
Inserts a term.
saveAdditionalQuestionDataToDb()
Saves a record to the question types additional data table.
saveWorkingData($active_id, $pass=NULL, $authorized=true)
Saves the learners input of the question to the database.
generateThumbForFile($path, $file)
Abstract basic class which is to be extended by the concrete assessment question type classes.
getCurrentSolutionResultSet($active_id, $pass, $authorized=true)
Get a restulset for the current user solution for a this question by active_id and pass.
static _getOriginalId($question_id)
Returns the original id of a question.
formatSAQuestion($a_q)
Format self assessment question.
setId($id=-1)
Sets the id of the assQuestion object.
setOriginalId($original_id)
setObjId($obj_id=0)
Set the object id of the container object.
getSolutionMaxPass($active_id)
Returns the maximum pass a users question solution.
saveQuestionDataToDb($original_id="")
getId()
Gets the id of the assQuestion object.
saveCurrentSolution($active_id, $pass, $value1, $value2, $authorized=true, $tstamp=null)
getObjId()
Get the object id of the container object.
setTitle($title="")
Sets the title string of the assQuestion object.
setOwner($owner="")
Sets the creator/owner ID of the assQuestion object.
setEstimatedWorkingTime($hour=0, $min=0, $sec=0)
Sets the estimated working time of a question from given hour, minute and second.
buildImagePath($questionId, $parentObjectId)
static logAction($logtext="", $active_id="", $question_id="")
Logs an action into the Test&Assessment log.
getImagePath($question_id=null, $object_id=null)
Returns the image path for web accessable images of a question.
removeCurrentSolution($active_id, $pass, $authorized=true)
setAuthor($author="")
Sets the authors name of the assQuestion object.
static isFileAvailable($file)
setShuffler(ilArrayElementShuffler $shuffler)
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.
setPoints($a_points)
Sets the maximum available points for the question.
setComment($comment="")
Sets the comment string of the assQuestion object.
setNrOfTries($a_nr_of_tries)
getQuestion()
Gets the question string of the question object.
setAdditionalContentEditingMode($additinalContentEditingMode)
setter for additional content editing mode for this question
setQuestion($question="")
Sets the question string of the question object.
setParticipantsSolution($participantSolution)
static _getLogLanguage()
retrieve the log language for assessment logging
static _enabledAssessmentLogging()
check wether assessment logging is enabled or not
static _getPass($active_id)
Retrieves the actual pass of a given user for a given test.
static getOperatorsByExpression($expression)
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...
Base Exception for all Exceptions relating to Modules/Test.
Class ilUserQuestionResult.
static moveUploadedFile($a_file, $a_name, $a_target, $a_raise_errors=true, $a_mode="move_uploaded")
move uploaded file
static delDir($a_dir, $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
static rCopy($a_sdir, $a_tdir, $preserveTimeAttributes=false)
Copies content of a directory $a_sdir recursively to a directory $a_tdir.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static convertImage($a_from, $a_to, $a_target_format="", $a_geometry="", $a_background_color="")
convert image
static makeDirParents($a_dir)
Create a new directory and all parent directories.
const MT_TERMS_DEFINITIONS
Class iQuestionCondition.
const PercentageResultExpression
const MatchingResultExpression
getUserQuestionResult($active_id, $pass)
Get the user solution for a question by active_id and the test pass.
const NumericResultExpression
const EmptyAnswerExpression
Interface ilObjAnswerScoringAdjustable.
Interface ilObjQuestionScoringAdjustable.
if(!file_exists("$old.txt")) if( $old===$new) if(file_exists("$new.txt")) $file