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"];
179 $this->orderingElementList->setQuestionId($this->
getId());
180 $this->orderingElementList->loadFromDb();
182 parent::loadFromDb($question_id);
192 if ($this->
id <= 0) {
197 $this_id = $this->
getId();
201 include_once(
"./Modules/TestQuestionPool/classes/class.assQuestion.php");
205 if ((
int) $testObjId > 0) {
206 $clone->setObjId($testObjId);
224 $clone->duplicateOrderlingElementList();
227 $clone->copyPageOfQuestion($this_id);
229 $clone->copyXHTMLMediaObjectsOfQuestion($this_id);
231 $clone->duplicateImages($this_id, $thisObjId, $clone->getId(), $testObjId);
233 $clone->onDuplicate($thisObjId, $this_id, $clone->getObjId(), $clone->getId());
252 if ($this->
id <= 0) {
258 include_once(
"./Modules/TestQuestionPool/classes/class.assQuestion.php");
261 $source_questionpool_id = $this->
getObjId();
262 $clone->setObjId($target_questionpool_id);
274 $clone->duplicateImages(
$original_id, $source_questionpool_id, $clone->getId(), $target_questionpool_id);
276 $clone->onCopy($source_questionpool_id,
$original_id, $clone->getObjId(), $clone->getId());
283 if ($this->
id <= 0) {
288 include_once(
"./Modules/TestQuestionPool/classes/class.assQuestion.php");
291 $sourceParentId = $this->
getObjId();
297 $clone->setObjId($targetParentId);
299 if ($targetQuestionTitle) {
300 $clone->setTitle($targetQuestionTitle);
305 $clone->copyPageOfQuestion($sourceQuestionId);
307 $clone->copyXHTMLMediaObjectsOfQuestion($sourceQuestionId);
309 $clone->duplicateImages($sourceQuestionId, $sourceParentId, $clone->getId(), $clone->getObjId());
311 $clone->onCopy($sourceParentId, $sourceQuestionId, $clone->getObjId(), $clone->getId());
316 public function duplicateImages($src_question_id, $src_object_id, $dest_question_id, $dest_object_id)
321 $imagepath_original = $this->
getImagePath($src_question_id, $src_object_id);
322 $imagepath = $this->
getImagePath($dest_question_id, $dest_object_id);
324 if (!file_exists($imagepath)) {
329 if (!@copy($imagepath_original .
$filename, $imagepath . $filename)) {
330 $ilLog->write(
"image could not be duplicated!!!!");
332 if (@file_exists($imagepath_original . $this->
getThumbPrefix() . $filename)) {
334 $ilLog->write(
"image thumbnail could not be duplicated!!!!");
346 public function copyImages($question_id, $source_questionpool)
352 $imagepath_original = str_replace(
"/$this->id/images",
"/$question_id/images", $imagepath);
353 $imagepath_original = str_replace(
"/$this->obj_id/",
"/$source_questionpool/", $imagepath_original);
354 if (!file_exists($imagepath)) {
359 if (!@copy($imagepath_original .
$filename, $imagepath . $filename)) {
360 $ilLog->write(
"Ordering Question image could not be copied: ${imagepath_original}${filename}");
362 if (@file_exists($imagepath_original . $this->
getThumbPrefix() . $filename)) {
364 $ilLog->write(
"Ordering Question image thumbnail could not be copied: $imagepath_original" . $this->
getThumbPrefix() . $filename);
418 if ($forceCorrectSolution || !$activeId || $passIndex === null) {
422 $solutionValues = $this->
getSolutionValues($activeId, $passIndex, !$getUseIntermediateSolution);
424 if (!count($solutionValues)) {
447 #if( $pass === null && !ilObjTest::_getUsePreviousAnswers($activeId, true) ) 448 #// condition looks strange? yes - keep it null when previous solutions not enabled (!) 450 # $pass = ilObjTest::_getPass($activeId); 460 if (count($indexedSolutionValues)) {
474 $value2 = explode(
':', $value2);
476 $randomIdentifier = $value2[0];
477 $selectedPosition = $value1;
478 $selectedIndentation = $value2[1];
482 $element->setPosition($selectedPosition);
483 $element->setIndentation($selectedIndentation);
495 $solutionIdentifier = $value1;
496 $selectedPosition = ($value2 - 1);
497 $selectedIndentation = 0;
499 $element = $this->
getOrderingElementList()->getElementBySolutionIdentifier($solutionIdentifier)->getClone();
501 $element->setPosition($selectedPosition);
502 $element->setIndentation($selectedIndentation);
515 $solutionOrderingList->setQuestionId($this->
getId());
517 foreach ($indexedSolutionValues as $value1 => $value2) {
524 $solutionOrderingList->addElement($element);
531 return $solutionOrderingList;
541 $shuffledRandomIdentifierIndex = $this->
getShuffler()->shuffle(
546 $shuffledElementList->reorderByRandomIdentifiers($shuffledRandomIdentifierIndex);
547 $shuffledElementList->resetElementsIndentations();
549 return $shuffledElementList;
661 if ($returndetails) {
662 throw new ilTestException(
'return details not implemented for ' . __METHOD__);
665 if (is_null(
$pass)) {
671 if (!count($solutionValuePairs)) {
687 $solutionOrderingElementList = unserialize(
719 if (preg_match(
"/.*\\.(\\w+)$/",
$filename, $matches)) {
720 $extension = $matches[1];
722 return md5(
$filename) .
"." . $extension;
730 foreach ($contents as
$f) {
731 if (strcmp($f[
'type'],
'file') == 0) {
734 if (strcmp($f[
'entry'], $orderElement->getContent()) == 0) {
737 if (strcmp($f[
'entry'], $this->
getThumbPrefix() . $orderElement->getContent()) == 0) {
742 if (@file_exists($this->
getImagePath() . $f[
'entry'])) {
764 if (!strlen($imageFilename)) {
776 if (!strlen($imageFilename)) {
780 if (!file_exists($this->
getImagePath() . $imageFilename)) {
810 if (!strlen($uploadFile)) {
818 if (!ilUtil::moveUploadedFile($uploadFile, $targetFile, $this->
getImagePath() . $targetFile)) {
827 foreach ($elementList as $element) {
853 if (!$submittedSolutionList->hasElements()) {
872 if (is_null(
$pass)) {
873 include_once
"./Modules/Test/classes/class.ilObjTest.php";
878 function () use (&$entered_values, $active_id,
$pass, $authorized) {
882 $value1 = $orderingElement->getStorageValue1($this->
getOrderingType());
883 $value2 = $orderingElement->getStorageValue2($this->
getOrderingType());
892 if ($entered_values) {
893 $this->
log($active_id,
'log_user_entered_values');
895 $this->
log($active_id,
'log_user_not_entered_values');
912 $ilDB = $DIC[
'ilDB'];
918 array( $this->
getId() )
922 "INSERT INTO " . $this->
getAdditionalTableName() .
" (question_fi, ordering_type, thumb_geometry, element_height) 923 VALUES (%s, %s, %s, %s)",
924 array(
"integer",
"text",
"integer",
"integer" ),
927 $this->ordering_type,
953 return "assOrderingQuestion";
964 return "qpl_qst_ordering";
975 return "qpl_a_ordering";
984 $text = parent::getRTETextWithMediaObjects();
987 $text .= $orderingElement->getContent();
1023 parent::setExportDetailsXLS($worksheet, $startrow, $active_id,
$pass);
1027 foreach ($solutions as $solution) {
1028 $sol[$solution[
"value1"]] = $solution[
"value2"];
1031 $sol = array_keys($sol);
1034 foreach ($sol as $idx) {
1035 foreach ($solutions as $solution) {
1036 if ($solution[
"value1"] == $idx) {
1037 $worksheet->setCell($startrow +
$i, 0, $solution[
"value2"]);
1041 $worksheet->setCell($startrow +
$i, 1, $element->getContent());
1045 return $startrow +
$i + 1;
1070 $this->thumb_geometry = ($a_geometry < 1) ? 100 : $a_geometry;
1090 $this->element_height = ($a_height < 20) ?
"" : $a_height;
1117 switch (strtoupper($path_info[
'extension'])) {
1137 include_once(
"./Services/RTE/classes/class.ilRTE.php");
1144 $result[
'shuffle'] = (bool)
true;
1147 'onenotcorrect' => $this->
formatSAQuestion($this->feedbackOBJ->getGenericFeedbackTestPresentation($this->getId(),
false)),
1148 'allcorrect' => $this->
formatSAQuestion($this->feedbackOBJ->getGenericFeedbackTestPresentation($this->getId(),
true))
1157 $answers[$counter] = $orderingElement->getContent();
1160 $answers = $this->
getShuffler()->shuffle($answers);
1162 foreach ($answers as $order => $answer) {
1163 array_push($arr, array(
1164 "answertext" => (
string) $answer,
1165 "order" => (
int) $order
1209 $formField->setInteractionEnabled(
true);
1217 $formField->setEditElementOccuranceEnabled(
true);
1218 $formField->setEditElementOrderEnabled(
true);
1229 $formField->
setInfo($this->lng->txt(
'ordering_answer_sequence_info'));
1230 $formField->
setTitle($this->lng->txt(
'answers'));
1240 require_once
'Modules/TestQuestionPool/classes/forms/class.ilAssOrderingTextsInputGUI.php';
1244 self::ORDERING_ELEMENT_FORM_FIELD_POSTVAR
1249 return $orderingElementInput;
1259 require_once
'Modules/TestQuestionPool/classes/forms/class.ilAssOrderingImagesInputGUI.php';
1263 self::ORDERING_ELEMENT_FORM_FIELD_POSTVAR
1266 $orderingElementInput->setImageRemovalCommand(self::ORDERING_ELEMENT_FORM_CMD_REMOVE_IMG);
1267 $orderingElementInput->setImageUploadCommand(self::ORDERING_ELEMENT_FORM_CMD_UPLOAD_IMG);
1271 return $orderingElementInput;
1281 require_once
'Modules/TestQuestionPool/classes/forms/class.ilAssNestedOrderingElementsInputGUI.php';
1285 self::ORDERING_ELEMENT_FORM_FIELD_POSTVAR
1288 $orderingElementInput->setUniquePrefix($this->
getId());
1295 return $orderingElementInput;
1304 return $form->
getItemByPostVar(self::ORDERING_ELEMENT_FORM_FIELD_POSTVAR)->getElementList($this->
getId());
1316 $orderingGUI->setValueByArray($userSolutionPost);
1318 if (!$orderingGUI->checkInput()) {
1319 require_once
'Modules/Test/exceptions/class.ilTestException.php';
1323 require_once
'Modules/TestQuestionPool/classes/questions/class.ilAssOrderingElementList.php';
1328 foreach ($orderingGUI->getElementList($this->getId()) as $submittedElement) {
1329 $solutionElement = $storedElementList->getElementByRandomIdentifier(
1330 $submittedElement->getRandomIdentifier()
1333 $solutionElement->setPosition($submittedElement->getPosition());
1336 $solutionElement->setIndentation($submittedElement->getIndentation());
1339 $solutionOrderingElementList->addElement($solutionElement);
1342 return $solutionOrderingElementList;
1355 if ($this->postSolutionOrderingElementList === null) {
1357 $this->postSolutionOrderingElementList =
$list;
1381 $userElement = $solutionOrderingElementList->
getElementByPosition($correctElement->getPosition());
1383 if (!$correctElement->isSameElement($userElement)) {
1389 return $reachedPoints;
1405 $ilDB = $DIC[
'ilDB'];
1408 'SELECT depth FROM qpl_a_ordering WHERE question_fi = %s ORDER BY position ASC',
1410 array($this->
getId())
1413 $this->old_ordering_depth[] =
$row[
'depth'];
1425 $ilDB = $DIC[
'ilDB'];
1428 'SELECT solution_key FROM qpl_a_ordering WHERE random_id = %s',
1434 return $row[
'solution_key'];
1440 $ilDB = $DIC[
'ilDB'];
1444 array(
'solution_key' => array(
'integer', $a_index),
1445 'depth' => array(
'integer', $a_depth)),
1446 array(
'answertext' => array(
'text', $a_answer_text))
1463 require_once
"./Modules/TestQuestionPool/classes/class.ilOperatorsExpressionMapping.php";
1493 $ilDB = $DIC[
'ilDB'];
1496 $maxStep = $this->lookupMaxStep($active_id,
$pass);
1498 if ($maxStep !== null) {
1500 "SELECT value1, value2 FROM tst_solutions WHERE active_fi = %s AND pass = %s AND question_fi = %s AND step = %s ORDER BY value1 ASC ",
1501 array(
"integer",
"integer",
"integer",
"integer"),
1502 array($active_id,
$pass, $this->
getId(), $maxStep)
1506 "SELECT value1, value2 FROM tst_solutions WHERE active_fi = %s AND pass = %s AND question_fi = %s ORDER BY value1 ASC ",
1507 array(
"integer",
"integer",
"integer"),
1512 $elements = array();
1514 $newKey = explode(
":",
$row[
"value2"]);
1519 if ($answer->getSolutionIdentifier() ==
$row[
"value1"]) {
1520 $elements[
$row[
"value2"]] = $answer->getSolutionIdentifier() + 1;
1524 if ($answer->getRandomIdentifier() == $newKey[0]) {
1525 $elements[
$row[
"value1"]] = $answer->getSolutionIdentifier() + 1;
1534 foreach (array_values($elements) as $element) {
1535 $result->addKeyValue($element, $element);
1568 parent::afterSyncWithOriginal($origQuestionId, $dupQuestionId, $origParentObjId, $dupParentObjId);
1569 $this->
duplicateImages($dupQuestionId, $dupParentObjId, $origQuestionId, $origParentObjId);
1582 return parent::buildTestPresentationConfig()
1584 ->setIsUnchangedAnswerPossible(
true)
1585 ->setUseUnchangedAnswerLabel($this->lng->txt(
'tst_unchanged_order_is_correct'));
1601 $solutionSubmit = array();
1603 if (isset($formSubmissionDataStructure[
'orderresult'])) {
1604 $orderresult = $formSubmissionDataStructure[
'orderresult'];
1606 if (strlen($orderresult)) {
1607 $orderarray = explode(
":", $orderresult);
1609 foreach ($orderarray as
$index) {
1611 if (preg_match(
"/id_(\\d+)/", $index, $idmatch)) {
1612 $randomid = $idmatch[1];
1614 if ($answer->getRandomIdentifier() == $randomid) {
1615 $solutionSubmit[$answeridx] = $ordervalue;
1624 foreach ($formSubmissionDataStructure[
'content'] as $randomId => $content) {
1625 $indentation = $formSubmissionDataStructure[
'indentation'];
1628 $value2 = implode(
':', array($randomId, $indentation));
1630 $solutionSubmit[$value1] = $value2;
1633 foreach ($formSubmissionDataStructure as
$key => $value) {
1635 if (preg_match(
"/^order_(\d+)/",
$key, $matches)) {
1636 if (!(preg_match(
"/initial_value_\d+/", $value))) {
1637 if (strlen($value)) {
1639 if ($answer->getRandomIdentifier() == $matches[1]) {
1640 $solutionSubmit[$answeridx] = $value;
1649 return $solutionSubmit;
1657 require_once
'Modules/TestQuestionPool/classes/forms/class.ilAssOrderingFormValuesObjectsConverter.php';
1659 $converter->setPostVar(self::ORDERING_ELEMENT_FORM_FIELD_POSTVAR);
1672 $formDataConverter->setImageRemovalCommand(self::ORDERING_ELEMENT_FORM_CMD_REMOVE_IMG);
1674 $formDataConverter->setImageFsPath($this->
getImagePath());
1679 return $formDataConverter;
1689 return $formDataConverter;
1701 $formDataConverter->setImageRemovalCommand(self::ORDERING_ELEMENT_FORM_CMD_REMOVE_IMG);
1709 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 _getOriginalId($question_id)
Returns the original id of a question.
formatSAQuestion($a_q)
Format self assessment question.
if(isset($_REQUEST['delete'])) $list
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.
if(isset($_POST['submit'])) $form
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.
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)
setOriginalId($original_id)
setThumbGeometry($a_geometry)
Class for ordering questions.
buildOrderingTextsInputGui()
updateLeveledOrdering($a_index, $a_answer_text, $a_depth)
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)
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.