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.iQuestionCondition.php';
 
    8require_once 
'./Modules/TestQuestionPool/classes/class.ilUserQuestionResult.php';
 
   48        $this->ordertext = 
"";
 
   58        if (strlen($this->title) and ($this->author) and ($this->question) and ($this->
getMaximumPoints() > 0)) {
 
  103            $this->
setId($question_id);
 
  112            include_once(
"./Services/RTE/classes/class.ilRTE.php");
 
  130        parent::loadFromDb($question_id);
 
  138        if ($this->
id <= 0) {
 
  143        $this_id = $this->
getId();
 
  147        include_once(
"./Modules/TestQuestionPool/classes/class.assQuestion.php");
 
  151        if ((
int) $testObjId > 0) {
 
  152            $clone->setObjId($testObjId);
 
  173        $clone->copyPageOfQuestion($this_id);
 
  175        $clone->copyXHTMLMediaObjectsOfQuestion($this_id);
 
  177        $clone->onDuplicate($thisObjId, $this_id, $clone->getObjId(), $clone->getId());
 
  187        if ($this->
id <= 0) {
 
  193        include_once(
"./Modules/TestQuestionPool/classes/class.assQuestion.php");
 
  196        $source_questionpool_id = $this->
getObjId();
 
  197        $clone->setObjId($target_questionpool_id);
 
  207        $clone->onCopy($source_questionpool_id, 
$original_id, $clone->getObjId(), $clone->getId());
 
  214        if ($this->
id <= 0) {
 
  219        include_once(
"./Modules/TestQuestionPool/classes/class.assQuestion.php");
 
  222        $sourceParentId = $this->
getObjId();
 
  228        $clone->setObjId($targetParentId);
 
  230        if ($targetQuestionTitle) {
 
  231            $clone->setTitle($targetQuestionTitle);
 
  236        $clone->copyPageOfQuestion($sourceQuestionId);
 
  238        $clone->copyXHTMLMediaObjectsOfQuestion($sourceQuestionId);
 
  240        $clone->onCopy($sourceParentId, $sourceQuestionId, $clone->getObjId(), $clone->getId());
 
  267        if ($returndetails) {
 
  268            throw new ilTestException(
'return details not implemented for ' . __METHOD__);
 
  274        $found_values = array();
 
  275        if (is_null(
$pass)) {
 
  299        include_once 
"./Services/Utilities/classes/class.ilStr.php";
 
  302            $result = preg_split(
"/\\s+/", $in_string);
 
  307        foreach (
$result as $key => $value) {
 
  316        return $_POST[
"orderresult"];
 
  333        if (is_null(
$pass)) {
 
  334            include_once 
"./Modules/Test/classes/class.ilObjTest.php";
 
  338        $entered_values = 
false;
 
  340        $this->
getProcessLocker()->executeUserSolutionUpdateLockOperation(
function () use (&$entered_values, $active_id, 
$pass, $authorized) {
 
  345            $entered_values = 
false;
 
  346            if (strlen($solutionSubmit)) {
 
  348                $entered_values = 
true;
 
  352        if ($entered_values) {
 
  353            include_once(
"./Modules/Test/classes/class.ilObjAssessmentFolder.php");
 
  358            include_once(
"./Modules/Test/classes/class.ilObjAssessmentFolder.php");
 
  375                            . 
" WHERE question_fi = %s",
 
  377            array( $this->
getId() )
 
  382                            . 
" (question_fi, ordertext, textsize) VALUES (%s, %s, %s)",
 
  383            array( 
"integer", 
"text", 
"float" ),
 
  399        return "assOrderingHorizontal";
 
  409        return "qpl_qst_horder";
 
  437        $text = parent::getRTETextWithMediaObjects();
 
  446        parent::setExportDetailsXLS($worksheet, $startrow, $active_id, 
$pass);
 
  450        $solutionvalue = str_replace(
"{::}", 
" ", $solutions[0][
"value1"]);
 
  452        $worksheet->setCell($startrow + 
$i, 0, $solutionvalue);
 
  455        return $startrow + 
$i + 1;
 
  470    public function fromXML(&$item, &$questionpool_id, &$tst_id, &$tst_object, &$question_counter, &$import_mapping)
 
  472        include_once 
"./Modules/TestQuestionPool/classes/import/qti12/class.assOrderingHorizontalImport.php";
 
  474        $import->fromXML($item, $questionpool_id, $tst_id, $tst_object, $question_counter, $import_mapping);
 
  483    public function toXML($a_include_header = 
true, $a_include_binary = 
true, $a_shuffle = 
false, $test_output = 
false, $force_image_references = 
false)
 
  485        include_once 
"./Modules/TestQuestionPool/classes/export/qti12/class.assOrderingHorizontalExport.php";
 
  487        return $export->toXML($a_include_header, $a_include_binary, $a_shuffle, $test_output, $force_image_references);
 
  497        $user_solution = array();
 
  498        return $user_solution;
 
  519        $elements = $this->
getShuffler()->shuffle($elements);
 
  540        $this->ordertext = $a_value;
 
  560        if ($a_value >= 10) {
 
  561            $this->textsize = $a_value;
 
  582        $this->separator = $a_value;
 
  601                return parent::__get($value);
 
  622                parent::__set($key, $value);
 
  642        include_once(
"./Services/RTE/classes/class.ilRTE.php");
 
  649        $result[
'shuffle'] = (bool) 
true;
 
  655            'onenotcorrect' => $this->
formatSAQuestion($this->feedbackOBJ->getGenericFeedbackTestPresentation($this->getId(), 
false)),
 
  656            'allcorrect' => $this->formatSAQuestion($this->feedbackOBJ->getGenericFeedbackTestPresentation($this->getId(), 
true))
 
  661            array_push($arr, array(
 
  662                "answertext" => (
string) $answer,
 
  663                "order" => (
int) $order + 1
 
  684        require_once 
"./Modules/TestQuestionPool/classes/class.ilOperatorsExpressionMapping.php";
 
  717        $maxStep = $this->lookupMaxStep($active_id, 
$pass);
 
  719        if ($maxStep !== 
null) {
 
  721                "SELECT value1 FROM tst_solutions WHERE active_fi = %s AND pass = %s AND question_fi = %s AND step = %s",
 
  722                array(
"integer", 
"integer", 
"integer",
"integer"),
 
  723                array($active_id, 
$pass, $this->
getId(), $maxStep)
 
  727                "SELECT value1 FROM tst_solutions WHERE active_fi = %s AND pass = %s AND question_fi = %s",
 
  728                array(
"integer", 
"integer", 
"integer"),
 
  736        $solutions = array();
 
  738        foreach ($answer_elements as $answer) {
 
  739            foreach ($elements as $key => $element) {
 
  740                if ($element == $answer) {
 
  741                    $result->addKeyValue($key + 1, $answer);
 
  747        if ($this->answer_separator = 
'{::}') {
 
  750        $result->addKeyValue(
null, join($glue, $answer_elements));
 
  772            if (array_key_exists(
$index, $elements)) {
 
  788        $value = join($this->answer_separator, $value);
 
  806        return parent::buildTestPresentationConfig()
 
  808            ->setIsUnchangedAnswerPossible(
true)
 
  809            ->setUseUnchangedAnswerLabel($this->lng->txt(
'tst_unchanged_order_is_correct'));
 
An exception for terminatinating execution or to throw for unit testing.
Class for formula question question exports.
Class for formula question imports.
Class for horizontal ordering questions.
setSeparator($a_value)
Set order text separator.
getAvailableAnswerOptions($index=null)
If index is null, the function returns an array with all anwser options Else it returns the specific ...
getRTETextWithMediaObjects()
Collects all text in the question which could contain media objects which were created with the Rich ...
copyObject($target_questionpool_id, $title="")
Copies an assOrderingHorizontal object.
isComplete()
Returns true, if a single choice question is complete for use.
saveToDb($original_id="")
Saves a assOrderingHorizontal object to a database.
__get($value)
Object getter.
getOrderText()
Get order text.
setOrderText($a_value)
Set order text.
setTextSize($a_value)
Set text size.
getOperators($expression)
Get all available operations for a specific question.
getAdditionalTableName()
Returns the name of the additional question data table in the database.
getTextSize()
Get text size.
setExportDetailsXLS($worksheet, $startrow, $active_id, $pass)
{Creates an Excel worksheet for the detailed cumulated results of this question.object}
saveAdditionalQuestionDataToDb()
Saves a record to the question types additional data table.
toJSON()
Returns a JSON representation of the question.
getAnswerTableName()
Returns the name of the answer table in the database.
calculateReachedPointsForSolution($value)
loadFromDb($question_id)
Loads a assOrderingHorizontal object from a database.
getRandomOrderingElements()
Get ordering elements from order text in random sequence.
getOrderingElements()
Get ordering elements from order text.
getQuestionType()
Returns the question type of the question.
toXML($a_include_header=true, $a_include_binary=true, $a_shuffle=false, $test_output=false, $force_image_references=false)
Returns a QTI xml representation of the question and sets the internal domxml variable with the DOM X...
getSeparator()
Get order text separator.
buildTestPresentationConfig()
Get the test question configuration.
getExpressionTypes()
Get all available expression types for a specific question.
deleteAnswers($question_id)
Deletes datasets from answers tables.
supportsJavascriptOutput()
Returns true if the question type supports JavaScript output.
getMaximumPoints()
Returns the maximum points, a learner can reach answering the question.
__construct( $title="", $comment="", $author="", $owner=-1, $question="")
assOrderingHorizontal constructor
calculateReachedPoints($active_id, $pass=null, $authorizedSolution=true, $returndetails=false)
Returns the points, a learner has reached answering the question.
__set($key, $value)
Object setter.
saveWorkingData($active_id, $pass=null, $authorized=true)
Saves the learners input of the question to the database.
splitAndTrimOrderElementText($in_string, $separator)
Splits the answer string either by space(s) or the separator (eg.
createNewOriginalFromThisDuplicate($targetParentId, $targetQuestionTitle="")
fromXML(&$item, &$questionpool_id, &$tst_id, &$tst_object, &$question_counter, &$import_mapping)
Creates a question from a QTI file.
duplicate($for_test=true, $title="", $author="", $owner="", $testObjId=null)
Duplicates an assOrderingHorizontal.
getBestSolution($active_id, $pass)
Returns the best solution for a given pass of a participant.
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.
getSolutionValues($active_id, $pass=null, $authorized=true)
Loads solutions of a given user from the database an returns it.
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.
static logAction($logtext="", $active_id="", $question_id="")
Logs an action into the Test&Assessment log.
removeCurrentSolution($active_id, $pass, $authorized=true)
setAuthor($author="")
Sets the authors name of the assQuestion object.
getPoints()
Returns the maximum available points for the question.
setLifecycle(ilAssQuestionLifecycle $lifecycle)
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.
static getDraftInstance()
static getInstance($identifier)
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...
static strPos($a_haystack, $a_needle, $a_offset=null)
Base Exception for all Exceptions relating to Modules/Test.
Class ilUserQuestionResult.
Class iQuestionCondition.
const PercentageResultExpression
const OrderingResultExpression
getUserQuestionResult($active_id, $pass)
Get the user solution for a question by active_id and the test pass.
const StringResultExpression
const NumericResultExpression
Interface ilObjQuestionScoringAdjustable.
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc