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';
11 require_once
'Modules/TestQuestionPool/classes/questions/class.ilAssOrderingElementList.php';
130 $ilDB = $DIC[
'ilDB'];
148 $ilDB = $DIC[
'ilDB'];
157 $this->
setId($question_id);
166 include_once(
"./Services/RTE/classes/class.ilRTE.php");
168 $this->ordering_type = strlen(
$data[
"ordering_type"]) ?
$data[
"ordering_type"] :
OQ_TERMS;
169 $this->thumb_geometry =
$data[
"thumb_geometry"];
170 $this->element_height =
$data[
"element_height"];
185 $this->orderingElementList->setQuestionId($this->
getId());
186 $this->orderingElementList->loadFromDb();
188 parent::loadFromDb($question_id);
198 if ($this->
id <= 0) {
203 $this_id = $this->
getId();
207 include_once(
"./Modules/TestQuestionPool/classes/class.assQuestion.php");
211 if ((
int) $testObjId > 0) {
212 $clone->setObjId($testObjId);
230 $clone->duplicateOrderlingElementList();
233 $clone->copyPageOfQuestion($this_id);
235 $clone->copyXHTMLMediaObjectsOfQuestion($this_id);
237 $clone->duplicateImages($this_id, $thisObjId, $clone->getId(), $testObjId);
239 $clone->onDuplicate($thisObjId, $this_id, $clone->getObjId(), $clone->getId());
258 if ($this->
id <= 0) {
264 include_once(
"./Modules/TestQuestionPool/classes/class.assQuestion.php");
267 $source_questionpool_id = $this->
getObjId();
268 $clone->setObjId($target_questionpool_id);
280 $clone->duplicateImages(
$original_id, $source_questionpool_id, $clone->getId(), $target_questionpool_id);
282 $clone->onCopy($source_questionpool_id,
$original_id, $clone->getObjId(), $clone->getId());
289 if ($this->
id <= 0) {
294 include_once(
"./Modules/TestQuestionPool/classes/class.assQuestion.php");
297 $sourceParentId = $this->
getObjId();
303 $clone->setObjId($targetParentId);
305 if ($targetQuestionTitle) {
306 $clone->setTitle($targetQuestionTitle);
311 $clone->copyPageOfQuestion($sourceQuestionId);
313 $clone->copyXHTMLMediaObjectsOfQuestion($sourceQuestionId);
315 $clone->duplicateImages($sourceQuestionId, $sourceParentId, $clone->getId(), $clone->getObjId());
317 $clone->onCopy($sourceParentId, $sourceQuestionId, $clone->getObjId(), $clone->getId());
322 public function duplicateImages($src_question_id, $src_object_id, $dest_question_id, $dest_object_id)
327 $imagepath_original = $this->
getImagePath($src_question_id, $src_object_id);
328 $imagepath = $this->
getImagePath($dest_question_id, $dest_object_id);
330 if (!file_exists($imagepath)) {
335 if (!@copy($imagepath_original .
$filename, $imagepath . $filename)) {
336 $ilLog->write(
"image could not be duplicated!!!!");
338 if (@file_exists($imagepath_original . $this->
getThumbPrefix() . $filename)) {
340 $ilLog->write(
"image thumbnail could not be duplicated!!!!");
352 public function copyImages($question_id, $source_questionpool)
358 $imagepath_original = str_replace(
"/$this->id/images",
"/$question_id/images", $imagepath);
359 $imagepath_original = str_replace(
"/$this->obj_id/",
"/$source_questionpool/", $imagepath_original);
360 if (!file_exists($imagepath)) {
365 if (!@copy($imagepath_original .
$filename, $imagepath . $filename)) {
366 $ilLog->write(
"Ordering Question image could not be copied: ${imagepath_original}${filename}");
368 if (@file_exists($imagepath_original . $this->
getThumbPrefix() . $filename)) {
370 $ilLog->write(
"Ordering Question image thumbnail could not be copied: $imagepath_original" . $this->
getThumbPrefix() . $filename);
424 if ($forceCorrectSolution || !$activeId || $passIndex === null) {
428 $solutionValues = $this->
getSolutionValues($activeId, $passIndex, !$getUseIntermediateSolution);
430 if (!count($solutionValues)) {
453 #if( $pass === null && !ilObjTest::_getUsePreviousAnswers($activeId, true) ) 454 #// condition looks strange? yes - keep it null when previous solutions not enabled (!) 456 # $pass = ilObjTest::_getPass($activeId); 466 if (count($indexedSolutionValues)) {
480 $value2 = explode(
':', $value2);
482 $randomIdentifier = $value2[0];
483 $selectedPosition = $value1;
484 $selectedIndentation = $value2[1];
488 $element->setPosition($selectedPosition);
489 $element->setIndentation($selectedIndentation);
501 $solutionIdentifier = $value1;
502 $selectedPosition = ($value2 - 1);
503 $selectedIndentation = 0;
505 $element = $this->
getOrderingElementList()->getElementBySolutionIdentifier($solutionIdentifier)->getClone();
507 $element->setPosition($selectedPosition);
508 $element->setIndentation($selectedIndentation);
521 $solutionOrderingList->setQuestionId($this->
getId());
523 foreach ($indexedSolutionValues as $value1 => $value2) {
530 $solutionOrderingList->addElement($element);
537 return $solutionOrderingList;
547 $shuffledRandomIdentifierIndex = $this->
getShuffler()->shuffle(
552 $shuffledElementList->reorderByRandomIdentifiers($shuffledRandomIdentifierIndex);
553 $shuffledElementList->resetElementsIndentations();
555 return $shuffledElementList;
667 if ($returndetails) {
668 throw new ilTestException(
'return details not implemented for ' . __METHOD__);
671 if (is_null(
$pass)) {
677 if (!count($solutionValuePairs)) {
693 $solutionOrderingElementList = unserialize(
725 if (preg_match(
"/.*\\.(\\w+)$/",
$filename, $matches)) {
726 $extension = $matches[1];
728 return md5(
$filename) .
"." . $extension;
736 foreach ($contents as
$f) {
737 if (strcmp($f[
'type'],
'file') == 0) {
740 if (strcmp($f[
'entry'], $orderElement->getContent()) == 0) {
743 if (strcmp($f[
'entry'], $this->
getThumbPrefix() . $orderElement->getContent()) == 0) {
748 if (@file_exists($this->
getImagePath() . $f[
'entry'])) {
770 if (!strlen($imageFilename)) {
782 if (!strlen($imageFilename)) {
786 if (!file_exists($this->
getImagePath() . $imageFilename)) {
816 if (!strlen($uploadFile)) {
833 foreach ($elementList as $element) {
859 if (!$submittedSolutionList->hasElements()) {
878 if (is_null(
$pass)) {
879 include_once
"./Modules/Test/classes/class.ilObjTest.php";
884 function () use (&$entered_values, $active_id,
$pass, $authorized) {
888 $value1 = $orderingElement->getStorageValue1($this->
getOrderingType());
889 $value2 = $orderingElement->getStorageValue2($this->
getOrderingType());
898 if ($entered_values) {
899 $this->
log($active_id,
'log_user_entered_values');
901 $this->
log($active_id,
'log_user_not_entered_values');
918 $ilDB = $DIC[
'ilDB'];
924 array( $this->
getId() )
928 "INSERT INTO " . $this->
getAdditionalTableName() .
" (question_fi, ordering_type, thumb_geometry, element_height) 929 VALUES (%s, %s, %s, %s)",
930 array(
"integer",
"text",
"integer",
"integer" ),
933 $this->ordering_type,
959 return "assOrderingQuestion";
970 return "qpl_qst_ordering";
981 return "qpl_a_ordering";
990 $text = parent::getRTETextWithMediaObjects();
993 $text .= $orderingElement->getContent();
1029 parent::setExportDetailsXLS($worksheet, $startrow, $active_id,
$pass);
1033 foreach ($solutions as $solution) {
1034 $sol[$solution[
"value1"]] = $solution[
"value2"];
1037 $sol = array_keys($sol);
1040 foreach ($sol as $idx) {
1041 foreach ($solutions as $solution) {
1042 if ($solution[
"value1"] == $idx) {
1043 $worksheet->setCell($startrow +
$i, 0, $solution[
"value2"]);
1047 $worksheet->setCell($startrow +
$i, 1, $element->getContent());
1051 return $startrow +
$i + 1;
1076 $this->thumb_geometry = ($a_geometry < 1) ? 100 : $a_geometry;
1096 $this->element_height = ($a_height < 20) ?
"" : $a_height;
1123 switch (strtoupper($path_info[
'extension'])) {
1143 include_once(
"./Services/RTE/classes/class.ilRTE.php");
1150 $result[
'shuffle'] = (bool)
true;
1153 'onenotcorrect' => $this->
formatSAQuestion($this->feedbackOBJ->getGenericFeedbackTestPresentation($this->getId(),
false)),
1154 'allcorrect' => $this->
formatSAQuestion($this->feedbackOBJ->getGenericFeedbackTestPresentation($this->getId(),
true))
1163 $answers[$counter] = $orderingElement->getContent();
1166 $answers = $this->
getShuffler()->shuffle($answers);
1168 foreach ($answers as $order => $answer) {
1169 array_push($arr, array(
1170 "answertext" => (
string) $answer,
1171 "order" => (
int) $order
1215 $formField->setInteractionEnabled(
true);
1223 $formField->setEditElementOccuranceEnabled(
true);
1224 $formField->setEditElementOrderEnabled(
true);
1235 $formField->
setInfo($this->lng->txt(
'ordering_answer_sequence_info'));
1236 $formField->
setTitle($this->lng->txt(
'answers'));
1246 require_once
'Modules/TestQuestionPool/classes/forms/class.ilAssOrderingTextsInputGUI.php';
1250 self::ORDERING_ELEMENT_FORM_FIELD_POSTVAR
1255 return $orderingElementInput;
1265 require_once
'Modules/TestQuestionPool/classes/forms/class.ilAssOrderingImagesInputGUI.php';
1269 self::ORDERING_ELEMENT_FORM_FIELD_POSTVAR
1272 $orderingElementInput->setImageRemovalCommand(self::ORDERING_ELEMENT_FORM_CMD_REMOVE_IMG);
1273 $orderingElementInput->setImageUploadCommand(self::ORDERING_ELEMENT_FORM_CMD_UPLOAD_IMG);
1277 return $orderingElementInput;
1287 require_once
'Modules/TestQuestionPool/classes/forms/class.ilAssNestedOrderingElementsInputGUI.php';
1291 self::ORDERING_ELEMENT_FORM_FIELD_POSTVAR
1294 $orderingElementInput->setUniquePrefix($this->
getId());
1301 return $orderingElementInput;
1310 return $form->
getItemByPostVar(self::ORDERING_ELEMENT_FORM_FIELD_POSTVAR)->getElementList($this->
getId());
1322 $orderingGUI->setValueByArray($userSolutionPost);
1324 if (!$orderingGUI->checkInput()) {
1325 require_once
'Modules/Test/exceptions/class.ilTestException.php';
1329 require_once
'Modules/TestQuestionPool/classes/questions/class.ilAssOrderingElementList.php';
1334 foreach ($orderingGUI->getElementList($this->getId()) as $submittedElement) {
1335 $solutionElement = $storedElementList->getElementByRandomIdentifier(
1336 $submittedElement->getRandomIdentifier()
1339 $solutionElement->setPosition($submittedElement->getPosition());
1342 $solutionElement->setIndentation($submittedElement->getIndentation());
1345 $solutionOrderingElementList->addElement($solutionElement);
1348 return $solutionOrderingElementList;
1361 if ($this->postSolutionOrderingElementList === null) {
1363 $this->postSolutionOrderingElementList = $list;
1387 $userElement = $solutionOrderingElementList->
getElementByPosition($correctElement->getPosition());
1389 if (!$correctElement->isSameElement($userElement)) {
1395 return $reachedPoints;
1411 $ilDB = $DIC[
'ilDB'];
1414 'SELECT depth FROM qpl_a_ordering WHERE question_fi = %s ORDER BY position ASC',
1416 array($this->
getId())
1418 while ($row =
$ilDB->fetchAssoc(
$res)) {
1419 $this->old_ordering_depth[] = $row[
'depth'];
1431 $ilDB = $DIC[
'ilDB'];
1434 'SELECT solution_key FROM qpl_a_ordering WHERE random_id = %s',
1440 return $row[
'solution_key'];
1446 $ilDB = $DIC[
'ilDB'];
1450 array(
'solution_key' => array(
'integer', $a_index),
1451 'depth' => array(
'integer', $a_depth)),
1452 array(
'answertext' => array(
'text', $a_answer_text))
1469 require_once
"./Modules/TestQuestionPool/classes/class.ilOperatorsExpressionMapping.php";
1499 $ilDB = $DIC[
'ilDB'];
1502 $maxStep = $this->lookupMaxStep($active_id,
$pass);
1504 if ($maxStep !== null) {
1506 "SELECT value1, value2 FROM tst_solutions WHERE active_fi = %s AND pass = %s AND question_fi = %s AND step = %s ORDER BY value1 ASC ",
1507 array(
"integer",
"integer",
"integer",
"integer"),
1508 array($active_id,
$pass, $this->
getId(), $maxStep)
1512 "SELECT value1, value2 FROM tst_solutions WHERE active_fi = %s AND pass = %s AND question_fi = %s ORDER BY value1 ASC ",
1513 array(
"integer",
"integer",
"integer"),
1518 $elements = array();
1520 $newKey = explode(
":", $row[
"value2"]);
1525 if ($answer->getSolutionIdentifier() == $row[
"value1"]) {
1526 $elements[$row[
"value2"]] = $answer->getSolutionIdentifier() + 1;
1530 if ($answer->getRandomIdentifier() == $newKey[0]) {
1531 $elements[$row[
"value1"]] = $answer->getSolutionIdentifier() + 1;
1540 foreach (array_values($elements) as $element) {
1541 $result->addKeyValue($element, $element);
1574 parent::afterSyncWithOriginal($origQuestionId, $dupQuestionId, $origParentObjId, $dupParentObjId);
1575 $this->
duplicateImages($dupQuestionId, $dupParentObjId, $origQuestionId, $origParentObjId);
1588 return parent::buildTestPresentationConfig()
1590 ->setIsUnchangedAnswerPossible(
true)
1591 ->setUseUnchangedAnswerLabel($this->lng->txt(
'tst_unchanged_order_is_correct'));
1607 $solutionSubmit = array();
1609 if (isset($formSubmissionDataStructure[
'orderresult'])) {
1610 $orderresult = $formSubmissionDataStructure[
'orderresult'];
1612 if (strlen($orderresult)) {
1613 $orderarray = explode(
":", $orderresult);
1615 foreach ($orderarray as
$index) {
1617 if (preg_match(
"/id_(\\d+)/", $index, $idmatch)) {
1618 $randomid = $idmatch[1];
1620 if ($answer->getRandomIdentifier() == $randomid) {
1621 $solutionSubmit[$answeridx] = $ordervalue;
1630 foreach ($formSubmissionDataStructure[
'content'] as $randomId => $content) {
1631 $indentation = $formSubmissionDataStructure[
'indentation'];
1634 $value2 = implode(
':', array($randomId, $indentation));
1636 $solutionSubmit[$value1] = $value2;
1639 foreach ($formSubmissionDataStructure as $key => $value) {
1641 if (preg_match(
"/^order_(\d+)/", $key, $matches)) {
1642 if (!(preg_match(
"/initial_value_\d+/", $value))) {
1643 if (strlen($value)) {
1645 if ($answer->getRandomIdentifier() == $matches[1]) {
1646 $solutionSubmit[$answeridx] = $value;
1655 return $solutionSubmit;
1663 require_once
'Modules/TestQuestionPool/classes/forms/class.ilAssOrderingFormValuesObjectsConverter.php';
1665 $converter->setPostVar(self::ORDERING_ELEMENT_FORM_FIELD_POSTVAR);
1678 $formDataConverter->setImageRemovalCommand(self::ORDERING_ELEMENT_FORM_CMD_REMOVE_IMG);
1680 $formDataConverter->setImageFsPath($this->
getImagePath());
1685 return $formDataConverter;
1695 return $formDataConverter;
1707 $formDataConverter->setImageRemovalCommand(self::ORDERING_ELEMENT_FORM_CMD_REMOVE_IMG);
1715 return $formDataConverter;
duplicateImages($src_question_id, $src_object_id, $dest_question_id, $dest_object_id)
setElementHeight($a_height)
static makeDirParents($a_dir)
Create a new directory and all parent directories.
initOrderingElementAuthoringProperties(ilFormPropertyGUI $formField)
fetchSolutionListFromFormSubmissionData($userSolutionPost)
getId()
Gets the id of the assQuestion object.
static getInstance($identifier)
static _getOriginalId($question_id)
Returns the original id of a question.
formatSAQuestion($a_q)
Format self assessment question.
const PercentageResultExpression
getSolutionOrderingElementListForTestOutput(ilAssNestedOrderingElementsInputGUI $inputGUI, $lastPost, $activeId, $pass)
Class iQuestionCondition.
buildOrderingImagesFormDataConverter()
static _getPass($active_id)
Retrieves the actual pass of a given user for a given test.
calculateReachedPointsForSolution(ilAssOrderingElementList $solutionOrderingElementList)
getSolutionOrderingElementList($indexedSolutionValues)
saveAdditionalQuestionDataToDb()
Saves a record to the question types additional data table.
getPoints()
Returns the maximum available points for the question.
moveAnswerDown($position)
buildOrderingImagesInputGui()
getRTETextWithMediaObjects()
Collects all text in the question which could contain media objects which were created with the Rich ...
fetchSolutionSubmit($formSubmissionDataStructure)
buildOrderingTextsFormDataConverter()
Abstract basic class which is to be extended by the concrete assessment question type classes...
isComplete()
Returns true, if a ordering question is complete for use.
getOrderingType()
Returns the ordering question type.
getSolutionListFromPostSubmit()
initOrderingElementFormFieldLabels(ilFormPropertyGUI $formField)
ensureNonNegativePoints($points)
getQuestionType()
Returns the question type of the question.
getOrderElements()
Returns the answers array.
getSolutionValues($active_id, $pass=null, $authorized=true)
Loads solutions of a given user from the database an returns it.
setId($id=-1)
Sets the id of the assQuestion object.
copyObject($target_questionpool_id, $title="")
Copies an assOrderingQuestion object.
static buildInstance($questionId, $orderingElements=array())
static getDir($a_dir, $a_rec=false, $a_sub_dir="")
get directory
afterSyncWithOriginal($origQuestionId, $dupQuestionId, $origParentObjId, $dupParentObjId)
{}
getImagePathWeb()
Returns the web image path for web accessable images of a question.
getSolutionMaxPass($active_id)
Returns the maximum pass a users question solution.
setEstimatedWorkingTime($hour=0, $min=0, $sec=0)
Sets the estimated working time of a question from given hour, minute and second. ...
savePreviewData(ilAssQuestionPreviewSession $previewSession)
getAvailableAnswerOptions($index=null)
If index is null, the function returns an array with all anwser options Else it returns the specific ...
getParticipantsSolution()
getAnswer($index=0)
Returns the ordering element from the given position.
getOperators($expression)
Get all available operations for a specific question.
getUserQuestionResult($active_id, $pass)
Get the user solution for a question by active_id and the test pass.
setNrOfTries($a_nr_of_tries)
setAdditionalContentEditingMode($additinalContentEditingMode)
setter for additional content editing mode for this question
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...
getObjId()
Get the object id of the container object.
isImageReplaced(ilAssOrderingElement $newElement, ilAssOrderingElement $oldElement)
getSolutionValuePairBrandedOrderingElementBySolutionIdentifier($value1, $value2)
createNewOriginalFromThisDuplicate($targetParentId, $targetQuestionTitle="")
Base Exception for all Exceptions relating to Modules/Test.
$postSolutionOrderingElementList
fetchIndexedValuesFromValuePairs(array $valuePairs)
dropImageFile($imageFilename)
buildOrderingElementInputGui()
setExportDetailsXLS($worksheet, $startrow, $active_id, $pass)
{}
setParticipantsSolution($participantSolution)
duplicate($for_test=true, $title="", $author="", $owner="", $testObjId=null)
Duplicates an assOrderingQuestion.
validateSolutionSubmit()
Checks the data to be saved for consistency.
buildOrderingElementFormDataConverter()
setAuthor($author="")
Sets the authors name of the assQuestion object.
getAuthor()
Gets the authors name of the assQuestion object.
getImagePath($question_id=null, $object_id=null)
Returns the image path for web accessable images of a question.
getExpressionTypes()
Get all available expression types for a specific question.
const ORDERING_ELEMENT_FORM_FIELD_POSTVAR
foreach($_POST as $key=> $value) $res
const OQ_PICTURES
Ordering question constants.
Class ilUserQuestionResult.
getAnswerTableName()
Returns the name of the answer table in the database.
log($active_id, $langVar)
saveCurrentSolution($active_id, $pass, $value1, $value2, $authorized=true, $tstamp=null)
const NumericResultExpression
saveWorkingData($active_id, $pass=null, $authorized=true)
Saves the learners input of the question to the database.
static moveUploadedFile($a_file, $a_name, $a_target, $a_raise_errors=true, $a_mode="move_uploaded")
move uploaded file
deleteAnswer($randomIdentifier)
Deletes an answer with a given index.
Interface ilObjAnswerScoringAdjustable.
toJSON()
Returns a JSON representation of the question.
fetchSolutionListFromSubmittedForm(ilPropertyFormGUI $form)
saveToDb($original_id="")
Saves a assOrderingQuestion object to a database.
buildNestedOrderingFormDataConverter()
__construct( $title="", $comment="", $author="", $owner=-1, $question="", $ordering_type=OQ_TERMS)
assOrderingQuestion constructor
const ORDERING_ELEMENT_FORM_CMD_REMOVE_IMG
getQuestion()
Gets the question string of the question object.
static convertImage( $a_from, $a_to, $a_target_format="", $a_geometry="", $a_background_color="")
convert image
getOrderingElementListForSolutionOutput($forceCorrectSolution, $activeId, $passIndex, $getUseIntermediateSolution=false)
createImageThumbnail(ilAssOrderingElement $element)
const OrderingResultExpression
storeImageFile($uploadFile, $targetFile)
Sets the image file and uploads the image to the object's image directory.
calculateReachedPoints($active_id, $pass=null, $authorizedSolution=true, $returndetails=false)
Returns the points, a learner has reached answering the question.
getEncryptedFilename($filename)
calculateReachedPointsFromPreviewSession(ilAssQuestionPreviewSession $previewSession)
setOrderingElementList($orderingElementList)
static getOperatorsByExpression($expression)
getTestOutputSolutions($activeId, $pass)
deductHintPointsFromReachedPoints(ilAssQuestionPreviewSession $previewSession, $reachedPoints)
setPoints($a_points)
Sets the maximum available points for the question.
saveQuestionDataToDb($original_id="")
getSolutionValuePairBrandedOrderingElementByRandomIdentifier($value1, $value2)
supportsJavascriptOutput()
Returns true if the question type supports JavaScript output.
setQuestion($question="")
Sets the question string of the question object.
Interface ilObjQuestionScoringAdjustable.
removeCurrentSolution($active_id, $pass, $authorized=true)
__construct(Container $dic, ilPlugin $plugin)
setOriginalId($original_id)
setThumbGeometry($a_geometry)
Class for ordering questions.
buildOrderingTextsInputGui()
updateLeveledOrdering($a_index, $a_answer_text, $a_depth)
setLifecycle(ilAssQuestionLifecycle $lifecycle)
getElementByPosition($position)
getShuffledOrderingElementList()
getTitle()
Gets the title string of the assQuestion object.
buildTestPresentationConfig()
Get the test question configuration.
handleThumbnailCreation(ilAssOrderingElementList $elementList)
hasOrderingTypeUploadSupport()
getMaximumPoints()
Returns the maximum points, a learner can reach answering the question.
copyImages($question_id, $source_questionpool)
isImageFileStored($imageFilename)
duplicateOrderlingElementList()
setTitle($title="")
Sets the title string of the assQuestion object.
setObjId($obj_id=0)
Set the object id of the container object.
buildNestedOrderingElementInputGui()
static delDir($a_dir, $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
lookupSolutionOrderByRandomid($a_random_id)
setComment($comment="")
Sets the comment string of the assQuestion object.
loadFromDb($question_id)
Loads a assOrderingQuestion object from a database.
generateThumbForFile($path, $file)
static getDraftInstance()
setOrderingType($ordering_type=OQ_TERMS)
Sets the ordering question type.
saveAnswerSpecificDataToDb()
Saves the answer specific records into a question types answer table.
getAdditionalTableName()
Returns the name of the additional question data table in the database.
setOwner($owner="")
Sets the creator/owner ID of the assQuestion object.
const ORDERING_ELEMENT_FORM_CMD_UPLOAD_IMG
const EmptyAnswerExpression
getAnswerCount()
Returns the number of answers.