ILIAS  trunk Revision v11.0_alpha-1831-g8615d53dadb
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
assOrderingQuestion Class Reference

Class for ordering questions. More...

+ Inheritance diagram for assOrderingQuestion:
+ Collaboration diagram for assOrderingQuestion:

Public Member Functions

 __construct (string $title="", string $comment="", string $author="", int $owner=-1, string $question="", protected int $ordering_type=self::OQ_TERMS)
 
 isComplete ()
 
 saveToDb (?int $original_id=null)
 
 loadFromDb ($question_id)
 Loads a assOrderingQuestion object from a database. More...
 
 cloneImages (int $source_question_id, int $source_parent_id, int $target_question_id, int $target_parent_id)
 
 setOrderingType (int $ordering_type=self::OQ_TERMS)
 
 getOrderingType ()
 
 isOrderingTypeNested ()
 
 isImageOrderingType ()
 
 setContentType ($ct)
 
 setNestingType (bool $nesting)
 
 hasOrderingTypeUploadSupport ()
 
 getOrderingElementListForSolutionOutput (bool $force_correct_solution, int $active_id, ?int $pass_index)
 
 getSolutionOrderingElementListForTestOutput (ilAssNestedOrderingElementsInputGUI $input_gui, array $last_post, int $active_id, int $pass)
 
 getSolutionOrderingElementList (array $indexed_solution_values)
 
 getShuffledOrderingElementList ()
 
 getOrderingElementList ()
 
 setOrderingElementList (ilAssOrderingElementList $list)
 
 getAnswer (int $index=0)
 Returns the ordering element from the given position. More...
 
 deleteAnswer (int $random_identifier)
 
 getAnswerCount ()
 
 calculateReachedPoints (int $active_id, ?int $pass=null, bool $authorized_solution=true)
 
 calculateReachedPointsFromPreviewSession (ilAssQuestionPreviewSession $preview_session)
 
 getMaximumPoints ()
 
 getEncryptedFilename ($filename)
 
 dropImageFile ($imageFilename)
 
 isImageFileStored ($imageFilename)
 
 isImageReplaced (ilAssOrderingElement $newElement, ilAssOrderingElement $oldElement)
 
 storeImageFile (string $upload_file, string $upload_name)
 
 updateImageFile (string $existing_image_name)
 
 validateSolutionSubmit ()
 
 saveWorkingData (int $active_id, ?int $pass=null, bool $authorized=true)
 
 saveAdditionalQuestionDataToDb ()
 Saves a record to the question types additional data table. More...
 
 saveAnswerSpecificDataToDb ()
 Saves the answer specific records into a question types answer table. More...
 
 getQuestionType ()
 Returns the question type of the question. More...
 
 getAdditionalTableName ()
 Returns the name of the additional question data table in the database. More...
 
 getAnswerTableName ()
 Returns the name of the answer table in the database. More...
 
 getRTETextWithMediaObjects ()
 Collects all text in the question which could contain media objects which were created with the Rich Text Editor. More...
 
 getOrderElements ()
 Returns the answers array. More...
 
 getElementHeight ()
 
 setElementHeight (?int $a_height)
 
 rebuildThumbnails ()
 
 getThumbPrefix ()
 
 toJSON ()
 Returns a JSON representation of the question. More...
 
 buildOrderingElementInputGui ()
 
 initOrderingElementAuthoringProperties (ilFormPropertyGUI $formField)
 
 initOrderingElementFormFieldLabels (ilFormPropertyGUI $formField)
 
 buildOrderingTextsInputGui ()
 
 buildOrderingImagesInputGui ()
 
 buildNestedOrderingElementInputGui ()
 
 fetchSolutionListFromFormSubmissionData (array $user_solution_post)
 
 getSolutionListFromPostSubmit ()
 
 getOperators (string $expression)
 Get all available operations for a specific question. More...
 
 getExpressionTypes ()
 Get all available expression types for a specific question. More...
 
 getUserQuestionResult (int $active_id, int $pass)
 Get the user solution for a question by active_id and the test pass. More...
 
 getAvailableAnswerOptions ($index=null)
 If index is null, the function returns an array with all anwser options Else it returns the specific answer option. More...
 
 buildTestPresentationConfig ()
 Get the test question configuration. More...
 
 fetchSolutionSubmit (array $form_submission_data_structure)
 
 toLog (AdditionalInformationGenerator $additional_info)
 
 solutionValuesToText (array $solution_values)
 
 getCorrectSolutionForTextOutput (int $active_id, int $pass)
 
- Public Member Functions inherited from assQuestion
 getQuestionType ()
 
 isComplete ()
 
 saveWorkingData (int $active_id, ?int $pass=null, bool $authorized=true)
 
 calculateReachedPoints (int $active_id, ?int $pass=null, bool $authorized_solution=true)
 
 getAdditionalTableName ()
 
 getAnswerTableName ()
 
 toLog (AdditionalInformationGenerator $additional_info)
 MUST return an array of the question settings that can be stored in the log. More...
 
 getCurrentUser ()
 
 getShuffler ()
 
 setShuffler (Transformation $shuffler)
 
 setProcessLocker (ilAssQuestionProcessLocker $processLocker)
 
 getProcessLocker ()
 
 fromXML (string $importdirectory, int $user_id, ilQTIItem $item, int $questionpool_id, ?int $tst_id, ?ilObject &$tst_object, int &$question_counter, array $import_mapping, array $solutionhints=[])
 
 toXML (bool $a_include_header=true, bool $a_include_binary=true, bool $a_shuffle=false, bool $test_output=false, bool $force_image_references=false)
 Returns a QTI xml representation of the question. More...
 
 setTitle (string $title="")
 
 setId (int $id=-1)
 
 setTestId (int $id=-1)
 
 setComment (string $comment="")
 
 setShuffle (?bool $shuffle=true)
 
 setAuthor (string $author="")
 
 setOwner (int $owner=-1)
 
 getTitle ()
 
 getTitleForHTMLOutput ()
 
 getTitleFilenameCompliant ()
 
 getId ()
 
 getShuffle ()
 
 getTestId ()
 
 getComment ()
 
 getDescriptionForHTMLOutput ()
 
 getThumbSize ()
 
 setThumbSize (int $a_size)
 
 getMinimumThumbSize ()
 
 getMaximumThumbSize ()
 
 getAuthor ()
 
 getAuthorForHTMLOutput ()
 
 getOwner ()
 
 getObjId ()
 
 setObjId (int $obj_id=0)
 
 getLifecycle ()
 
 setLifecycle (ilAssQuestionLifecycle $lifecycle)
 
 setExternalId (?string $external_id)
 
 getExternalId ()
 
 getSuggestedSolutionOutput ()
 
 getSuggestedSolutions ()
 
 getReachedPoints (int $active_id, int $pass)
 
 getMaximumPoints ()
 
 getAdjustedReachedPoints (int $active_id, int $pass, bool $authorized_solution=true)
 
 calculateResultsFromSolution (int $active_id, int $pass)
 Calculates the question results from a previously saved question solution. More...
 
 persistWorkingState (int $active_id, $pass, bool $authorized=true)
 persists the working state for current testactive and testpass More...
 
 persistPreviewState (ilAssQuestionPreviewSession $preview_session)
 persists the preview state for current user and question More...
 
 validateSolutionSubmit ()
 
 getSuggestedSolutionPath ()
 
 getImagePath ($question_id=null, $object_id=null)
 Returns the image path for web accessable images of a question. More...
 
 getSuggestedSolutionPathWeb ()
 
 getImagePathWeb ()
 Returns the web image path for web accessable images of a question. More...
 
 getTestOutputSolutions (int $activeId, int $pass)
 
 getUserSolutionPreferingIntermediate (int $active_id, ?int $pass=null)
 
 getSolutionValues (int $active_id, ?int $pass=null, bool $authorized=true)
 Loads solutions of a given user from the database an returns it. More...
 
 deleteAnswers (int $question_id)
 
 deleteAdditionalTableData (int $question_id)
 
 delete (int $question_id)
 
 getTotalAnswers ()
 
 cloneXHTMLMediaObjectsOfQuestion (int $source_question_id)
 
 createPageObject ()
 
 clonePageOfQuestion (int $a_q_id)
 
 getPageOfQuestion ()
 
 setOriginalId (?int $original_id)
 
 getOriginalId ()
 
static fixSvgToPng (string $imageFilenameContainingString)
 
 fixUnavailableSkinImageSources (string $html)
 
 loadFromDb (int $question_id)
 
 createNewQuestion (bool $a_create_page=true)
 Creates a new question without an owner when a new question is created This assures that an ID is given to the question if a file upload or something else occurs. More...
 
 saveQuestionDataToDb (?int $original_id=null)
 
 duplicate (bool $for_test=true, string $title='', string $author='', int $owner=-1, $test_obj_id=null)
 
 copyObject (int $target_parent_id, string $title='')
 
 createNewOriginalFromThisDuplicate (int $target_parent_id, string $target_question_title='')
 
 saveToDb (?int $original_id=null)
 
 deleteSuggestedSolutions ()
 
 getSuggestedSolution (int $subquestion_index=0)
 
 resolveInternalLink (string $internal_link)
 
 resolveSuggestedSolutionLinks ()
 
 getInternalLinkHref (string $target)
 
 syncWithOriginal ()
 
 getPoints ()
 
 setPoints (float $points)
 
 getSolutionMaxPass (int $active_id)
 
 isWriteable ()
 
 deductHintPointsFromReachedPoints (ilAssQuestionPreviewSession $preview_session, $reached_points)
 
 calculateReachedPointsFromPreviewSession (ilAssQuestionPreviewSession $preview_session)
 
 isPreviewSolutionCorrect (ilAssQuestionPreviewSession $preview_session)
 
 adjustReachedPointsByScoringOptions (float $points, int $active_id)
 Adjust the given reached points by checks for all special scoring options in the test container. More...
 
 buildHashedImageFilename (string $plain_image_filename, bool $unique=false)
 
 getQuestion ()
 
 getQuestionForHTMLOutput ()
 
 setQuestion (string $question="")
 
 getQuestionTypeID ()
 
 cloneHints (int $source_question_id, int $target_question_id)
 
 cleanupMediaObjectUsage ()
 
 getInstances ()
 
 getActiveUserData (int $active_id)
 Returns the user id and the test id for a given active id. More...
 
 hasSpecificFeedback ()
 
 getNrOfTries ()
 
 setNrOfTries (int $a_nr_of_tries)
 
 setExportImagePath (string $path)
 
 formatSAQuestion ($a_q)
 
 setPreventRteUsage (bool $prevent_rte_usage)
 
 getPreventRteUsage ()
 
 migrateContentForLearningModule (ilAssSelfAssessmentMigrator $migrator)
 
 setSelfAssessmentEditingMode (bool $selfassessmenteditingmode)
 
 getSelfAssessmentEditingMode ()
 
 setDefaultNrOfTries (int $defaultnroftries)
 
 getDefaultNrOfTries ()
 
 syncSkillAssignments (int $srcParentId, int $srcQuestionId, int $trgParentId, int $trgQuestionId)
 
 ensureHintPageObjectExists ($pageObjectId)
 
 isAnswered (int $active_id, int $pass)
 
 getAdditionalContentEditingMode ()
 
 setAdditionalContentEditingMode (?string $additionalContentEditingMode)
 
 isAdditionalContentEditingModePageObject ()
 
 isValidAdditionalContentEditingMode (string $additionalContentEditingMode)
 
 getValidAdditionalContentEditingModes ()
 
 getHtmlUserSolutionPurifier ()
 
 getHtmlQuestionContentPurifier ()
 
 setLastChange (int $lastChange)
 
 getLastChange ()
 
 removeIntermediateSolution (int $active_id, int $pass)
 
 removeCurrentSolution (int $active_id, int $pass, bool $authorized=true)
 
 saveCurrentSolution (int $active_id, int $pass, $value1, $value2, bool $authorized=true, $tstamp=0)
 
 updateCurrentSolution (int $solutionId, $value1, $value2, bool $authorized=true)
 
 updateCurrentSolutionsAuthorization (int $activeId, int $pass, bool $authorized, bool $keepTime=false)
 
 setStep ($step)
 
 getStep ()
 
 toJSON ()
 
 intermediateSolutionExists (int $active_id, int $pass)
 
 authorizedSolutionExists (int $active_id, ?int $pass)
 
 authorizedOrIntermediateSolutionExists (int $active_id, int $pass)
 
 lookupForExistingSolutions (int $activeId, int $pass)
 Lookup if an authorized or intermediate solution exists. More...
 
 isAddableAnswerOptionValue (int $qIndex, string $answerOptionValue)
 
 addAnswerOptionValue (int $qIndex, string $answerOptionValue, float $points)
 
 removeAllExistingSolutions ()
 
 removeExistingSolutions (int $activeId, int $pass)
 
 resetUsersAnswer (int $activeId, int $pass)
 
 removeResultRecord (int $activeId, int $pass)
 
 fetchValuePairsFromIndexedValues (array $indexedValues)
 
 fetchIndexedValuesFromValuePairs (array $value_pairs)
 
 updateTimestamp ()
 
 getTestPresentationConfig ()
 
 hasWritableOriginalInQuestionPool ()
 
 answerToParticipantInteraction (AdditionalInformationGenerator $additional_info, int $test_ref_id, int $active_id, int $pass, string $source_ip, TestParticipantInteractionTypes $interaction_type)
 
 toQuestionAdministrationInteraction (AdditionalInformationGenerator $additional_info, int $test_ref_id, TestQuestionAdministrationInteractionTypes $interaction_type)
 
 getSolutionForTextOutput (int $active_id, int $pass)
 
 getCorrectSolutionForTextOutput (int $active_id, int $pass)
 
 getVariablesAsTextArray (int $active_id, int $pass)
 
- Public Member Functions inherited from iQuestionCondition
 getAvailableAnswerOptions (?int $index=null)
 If index is null, the function returns an array with all anwser options else it returns the specific answer option. More...
 

Data Fields

const ORDERING_ELEMENT_FORM_FIELD_POSTVAR = 'order_elems'
 
const ORDERING_ELEMENT_FORM_CMD_UPLOAD_IMG = 'uploadElementImage'
 
const ORDERING_ELEMENT_FORM_CMD_REMOVE_IMG = 'removeElementImage'
 
const OQ_PICTURES = 0
 
const OQ_TERMS = 1
 
const OQ_NESTED_PICTURES = 2
 
const OQ_NESTED_TERMS = 3
 
const OQ_CT_PICTURES = 'pics'
 
const OQ_CT_TERMS = 'terms'
 
const VALID_UPLOAD_SUFFIXES = ["jpg", "jpeg", "png", "gif"]
 
int $element_height = null
 
 $old_ordering_depth = []
 
 $leveled_ordering = []
 
- Data Fields inherited from assQuestion
const ADDITIONAL_CONTENT_EDITING_MODE_RTE = 'default'
 
const ADDITIONAL_CONTENT_EDITING_MODE_IPE = 'pageobject'
 
const TRIM_PATTERN = '/^[\p{C}\p{Z}]+|[\p{C}\p{Z}]+$/u'
 
ilAssQuestionFeedback $feedbackOBJ
 
bool $prevent_rte_usage = false
 
bool $selfassessmenteditingmode = false
 
int $defaultnroftries = 0
 
string $questionActionCmd = 'handleQuestionAction'
 
const KEY_VALUES_IMPLOSION_SEPARATOR = ':'
 
- Data Fields inherited from iQuestionCondition
const StringResultExpression = '~TEXT~'
 
const PercentageResultExpression = '%n%'
 
const NumericResultExpression = '#n#'
 
const MatchingResultExpression = ';n:m;'
 
const OrderingResultExpression = '$n,m,o,p$'
 
const NumberOfResultExpression = '+n+'
 
const ExclusiveResultExpression = '*n,m,o,p*'
 
const EmptyAnswerExpression = "?"
 

Protected Member Functions

 getRepository ()
 
 cloneQuestionTypeSpecificProperties (\assQuestion $target)
 
 getValidOrderingTypes ()
 
 getSolutionValuePairBrandedOrderingElementByRandomIdentifier (int $value1, string $value2)
 
 getSolutionValuePairBrandedOrderingElementBySolutionIdentifier (int $value1, string $value2)
 
 cleanImagefiles ()
 
 savePreviewData (ilAssQuestionPreviewSession $previewSession)
 
 getQuestionRepository ()
 
 generateThumbForFile ($path, $file)
 
 calculateReachedPointsForSolution (ilAssOrderingElementList $solution_ordering_element_list)
 
 ensureImagePathExists ()
 
 buildOrderingElementFormDataConverter ()
 
 buildOrderingImagesFormDataConverter ()
 
 buildOrderingTextsFormDataConverter ()
 
 buildNestedOrderingFormDataConverter ()
 
 solutionValuesToLog (AdditionalInformationGenerator $additional_info, array $solution_values)
 
- Protected Member Functions inherited from assQuestion
 solutionValuesToLog (AdditionalInformationGenerator $additional_info, array $solution_values)
 MUST convert the given solution values into an array or a string that can be stored in the log. More...
 
 solutionValuesToText (array $solution_values)
 MUST convert the given solution values into text. More...
 
 getQuestionAction ()
 
 isNonEmptyItemListPostSubmission (string $post_submission_field_name)
 
 savePreviewData (ilAssQuestionPreviewSession $preview_session)
 
 deletePageOfQuestion (int $question_id)
 
 cloneQuestionTypeSpecificProperties (self $target)
 
 removeAllImageFiles (string $image_target_path)
 
 onDuplicate (int $original_parent_id, int $original_question_id, int $duplicate_parent_id, int $duplicate_question_id)
 
 afterSyncWithOriginal (int $original_question_id, int $clone_question_id, int $original_parent_id, int $clone_parent_id)
 
 onCopy (int $sourceParentId, int $sourceQuestionId, int $targetParentId, int $targetQuestionId)
 
 duplicateComments (int $parent_source_id, int $source_id, int $parent_target_id, int $target_id)
 
 deleteComments ()
 
 getNotesManager ()
 
 getNotesDataService ()
 
 getNotesRepo ()
 
 cloneSuggestedSolutions (int $source_question_id, int $target_question_id)
 
 duplicateSuggestedSolutionFiles (int $parent_id, int $question_id)
 Duplicates the files of a suggested solution if the question is duplicated. More...
 
 cloneSuggestedSolutionFiles (int $source_question_id, int $target_question_id)
 
 copySuggestedSolutions (int $target_question_id)
 
 ensureNonNegativePoints (float $points)
 
 purifyAndPrepareTextAreaOutput (string $content)
 
 getRTETextWithMediaObjects ()
 
 getSelfAssessmentFormatter ()
 
 lmMigrateQuestionTypeGenericContent (ilAssSelfAssessmentMigrator $migrator)
 
 lmMigrateQuestionTypeSpecificContent (ilAssSelfAssessmentMigrator $migrator)
 
 duplicateQuestionHints (int $original_question_id, int $duplicate_question_id)
 
 duplicateSkillAssignments (int $srcParentId, int $srcQuestionId, int $trgParentId, int $trgQuestionId)
 
 buildQuestionDataQuery ()
 
 getCurrentSolutionResultSet (int $active_id, int $pass, bool $authorized=true)
 
 removeSolutionRecordById (int $solutionId)
 
 getSolutionRecordById (int $solutionId)
 
 deleteDummySolutionRecord (int $activeId, int $passIndex)
 
 isDummySolutionRecord (array $solutionRecord)
 
 deleteSolutionRecordByValues (int $activeId, int $passIndex, bool $authorized, array $matchValues)
 
 duplicateIntermediateSolutionAuthorized (int $activeId, int $passIndex)
 
 forceExistingIntermediateSolution (int $activeId, int $passIndex, bool $considerDummyRecordCreation)
 
 lookupMaxStep (int $active_id, int $pass)
 
 buildTestPresentationConfig ()
 
 getSuggestedSolutionsRepo ()
 
 loadSuggestedSolutions ()
 
 answerToLog (AdditionalInformationGenerator $additional_info, int $active_id, int $pass)
 

Protected Attributes

const HAS_SPECIFIC_FEEDBACK = false
 
OQRepository $oq_repository = null
 
ilAssOrderingElementList $element_list_for_deferred_saving = null
 
- Protected Attributes inherited from assQuestion
const HAS_SPECIFIC_FEEDBACK = true
 
GeneralQuestionPropertiesRepository $questionrepository
 
RequestDataCollector $questionpool_request
 
QuestionFiles $question_files
 
ilAssQuestionProcessLocker $processLocker
 
ilTestQuestionConfig $testQuestionConfig
 
SuggestedSolutionsDatabaseRepository $suggestedsolution_repo
 
ILIAS $ilias
 
ilGlobalPageTemplate $tpl
 
ilLanguage $lng
 
ilDBInterface $db
 
ilObjUser $current_user
 
SkillUsageService $skillUsageService
 
HTTPServices $http
 
Refinery $refinery
 
Transformation $shuffler
 
LoggingServices $log
 
Container $dic
 
ilAssQuestionLifecycle $lifecycle
 
ilAssQuestionPage $page
 
int $id
 
string $title
 
string $comment
 
int $owner
 
string $author
 
int $thumb_size
 
string $question
 
float $points = 0.0
 
bool $shuffle = true
 
int $test_id
 
int $obj_id = 0
 
int $original_id = null
 
int $lastChange = null
 
string $external_id = null
 
int $step = null
 
array $suggested_solutions
 

Private Member Functions

 getOrderingTypeLangVars (int $ordering_type)
 
 getSolutionOutputForLog ()
 
 getElementArrayWithIdentationsForTextOutput (array $elements)
 

Private Attributes

ilAssOrderingElementList $postSolutionOrderingElementList = null
 

Additional Inherited Members

- Static Public Member Functions inherited from assQuestion
static setForcePassResultUpdateEnabled (bool $force_pass_results_update_enabled)
 
static isForcePassResultUpdateEnabled ()
 
static _getSuggestedSolutionOutput (int $question_id)
 
static _getReachedPoints (int $active_id, int $question_id, int $pass)
 
static isFileAvailable (string $file)
 
static saveOriginalId (int $questionId, int $originalId)
 
static resetOriginalId (int $questionId)
 
static instantiateQuestion (int $question_id)
 
static _getSolutionMaxPass (int $question_id, int $active_id)
 Returns the maximum pass a users question solution. More...
 
static _setReachedPoints (int $active_id, int $question_id, float $points, float $maxpoints, int $pass, bool $manualscoring)
 Sets the points, a learner has reached answering the question Additionally objective results are updated. More...
 
static getFeedbackClassNameByQuestionType (string $questionType)
 
static _questionExistsInTest (int $question_id, int $test_id)
 
static lookupParentObjId (int $question_id)
 
static implodeKeyValues (array $keyValues)
 
static explodeKeyValues (string $keyValues)
 
static convertISO8601FormatH_i_s_ExtendedToSeconds (string $time)
 
static extendedTrim (string $value)
 Trim non-printable characters from the beginning and end of a string. More...
 
- Static Protected Member Functions inherited from assQuestion
static getNumExistingSolutionRecords (int $activeId, int $pass, int $questionId)
 
- Static Protected Attributes inherited from assQuestion
static $force_pass_results_update_enabled = false
 
static $imageSourceFixReplaceMap
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

assOrderingQuestion::__construct ( string  $title = "",
string  $comment = "",
string  $author = "",
int  $owner = -1,
string  $question = "",
protected int  $ordering_type = self::OQ_TERMS 
)

Member Function Documentation

◆ buildNestedOrderingElementInputGui()

assOrderingQuestion::buildNestedOrderingElementInputGui ( )
Returns
ilAssNestedOrderingElementsInputGUI

Definition at line 959 of file class.assOrderingQuestion.php.

References buildNestedOrderingFormDataConverter(), assQuestion\getId(), assQuestion\getImagePathWeb(), getOrderingType(), getThumbPrefix(), and initOrderingElementFormFieldLabels().

Referenced by fetchSolutionListFromFormSubmissionData(), and getSolutionOutputForLog().

960  {
961  $form_data_converter = $this->buildNestedOrderingFormDataConverter();
962 
963  $ordering_element_input = new ilAssNestedOrderingElementsInputGUI(
964  $form_data_converter,
965  self::ORDERING_ELEMENT_FORM_FIELD_POSTVAR
966  );
967 
968  $ordering_element_input->setUniquePrefix($this->getId());
969  $ordering_element_input->setOrderingType($this->getOrderingType());
970  $ordering_element_input->setElementImagePath($this->getImagePathWeb());
971  $ordering_element_input->setThumbPrefix($this->getThumbPrefix());
972 
973  $this->initOrderingElementFormFieldLabels($ordering_element_input);
974 
975  return $ordering_element_input;
976  }
initOrderingElementFormFieldLabels(ilFormPropertyGUI $formField)
getImagePathWeb()
Returns the web image path for web accessable images of a question.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildNestedOrderingFormDataConverter()

assOrderingQuestion::buildNestedOrderingFormDataConverter ( )
protected
Returns
ilAssOrderingFormValuesObjectsConverter

Definition at line 1246 of file class.assOrderingQuestion.php.

References buildOrderingElementFormDataConverter(), ilAssOrderingFormValuesObjectsConverter\CONTEXT_MAINTAIN_HIERARCHY, assQuestion\getImagePathWeb(), getOrderingType(), and getThumbPrefix().

Referenced by buildNestedOrderingElementInputGui().

1247  {
1248  $form_data_converter = $this->buildOrderingElementFormDataConverter();
1250 
1251  if ($this->getOrderingType() === self::OQ_NESTED_PICTURES) {
1252  $form_data_converter->setImageRemovalCommand(self::ORDERING_ELEMENT_FORM_CMD_REMOVE_IMG);
1253  $form_data_converter->setImageUrlPath($this->getImagePathWeb());
1254  $form_data_converter->setThumbnailPrefix($this->getThumbPrefix());
1255  }
1256 
1257  return $form_data_converter;
1258  }
getImagePathWeb()
Returns the web image path for web accessable images of a question.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildOrderingElementFormDataConverter()

assOrderingQuestion::buildOrderingElementFormDataConverter ( )
protected
Returns
ilAssOrderingFormValuesObjectsConverter

Definition at line 1207 of file class.assOrderingQuestion.php.

Referenced by buildNestedOrderingFormDataConverter(), buildOrderingImagesFormDataConverter(), and buildOrderingTextsFormDataConverter().

1208  {
1209  $converter = new ilAssOrderingFormValuesObjectsConverter();
1210  $converter->setPostVar(self::ORDERING_ELEMENT_FORM_FIELD_POSTVAR);
1211 
1212  return $converter;
1213  }
+ Here is the caller graph for this function:

◆ buildOrderingElementInputGui()

assOrderingQuestion::buildOrderingElementInputGui ( )
Returns
ilAssNestedOrderingElementsInputGUI|ilAssOrderingImagesInputGUI|ilAssOrderingTextsInputGUI
Exceptions
ilTestQuestionPoolException

Definition at line 881 of file class.assOrderingQuestion.php.

References buildOrderingImagesInputGui(), buildOrderingTextsInputGui(), and isImageOrderingType().

Referenced by ilAssOrderingQuestionAuthoringFormGUI\renewOrderingElementInput().

882  {
883  if ($this->isImageOrderingType()) {
884  return $this->buildOrderingImagesInputGui();
885  }
886  return $this->buildOrderingTextsInputGui();
887  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildOrderingImagesFormDataConverter()

assOrderingQuestion::buildOrderingImagesFormDataConverter ( )
protected
Returns
ilAssOrderingFormValuesObjectsConverter

Definition at line 1218 of file class.assOrderingQuestion.php.

References buildOrderingElementFormDataConverter(), ilAssOrderingFormValuesObjectsConverter\CONTEXT_MAINTAIN_ELEMENT_IMAGE, assQuestion\getImagePath(), assQuestion\getImagePathWeb(), and getThumbPrefix().

Referenced by buildOrderingImagesInputGui().

1219  {
1220  $formDataConverter = $this->buildOrderingElementFormDataConverter();
1222 
1223  $formDataConverter->setImageRemovalCommand(self::ORDERING_ELEMENT_FORM_CMD_REMOVE_IMG);
1224  $formDataConverter->setImageUrlPath($this->getImagePathWeb());
1225  $formDataConverter->setImageFsPath($this->getImagePath());
1226 
1227  if ($this->getThumbPrefix()) {
1228  $formDataConverter->setThumbnailPrefix($this->getThumbPrefix());
1229  }
1230  return $formDataConverter;
1231  }
getImagePathWeb()
Returns the web image path for web accessable images of a question.
getImagePath($question_id=null, $object_id=null)
Returns the image path for web accessable images of a question.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildOrderingImagesInputGui()

assOrderingQuestion::buildOrderingImagesInputGui ( )
Returns
ilAssOrderingImagesInputGUI

Definition at line 939 of file class.assOrderingQuestion.php.

References buildOrderingImagesFormDataConverter(), and initOrderingElementFormFieldLabels().

Referenced by buildOrderingElementInputGui().

940  {
941  $formDataConverter = $this->buildOrderingImagesFormDataConverter();
942 
943  $orderingElementInput = new ilAssOrderingImagesInputGUI(
944  $formDataConverter,
945  self::ORDERING_ELEMENT_FORM_FIELD_POSTVAR
946  );
947 
948  $orderingElementInput->setImageUploadCommand(self::ORDERING_ELEMENT_FORM_CMD_UPLOAD_IMG);
949  $orderingElementInput->setImageRemovalCommand(self::ORDERING_ELEMENT_FORM_CMD_REMOVE_IMG);
950 
951  $this->initOrderingElementFormFieldLabels($orderingElementInput);
952 
953  return $orderingElementInput;
954  }
initOrderingElementFormFieldLabels(ilFormPropertyGUI $formField)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildOrderingTextsFormDataConverter()

assOrderingQuestion::buildOrderingTextsFormDataConverter ( )
protected

◆ buildOrderingTextsInputGui()

assOrderingQuestion::buildOrderingTextsInputGui ( )
Returns
ilAssOrderingTextsInputGUI

Definition at line 922 of file class.assOrderingQuestion.php.

References buildOrderingTextsFormDataConverter(), and initOrderingElementFormFieldLabels().

Referenced by buildOrderingElementInputGui().

923  {
924  $formDataConverter = $this->buildOrderingTextsFormDataConverter();
925 
926  $orderingElementInput = new ilAssOrderingTextsInputGUI(
927  $formDataConverter,
928  self::ORDERING_ELEMENT_FORM_FIELD_POSTVAR
929  );
930 
931  $this->initOrderingElementFormFieldLabels($orderingElementInput);
932 
933  return $orderingElementInput;
934  }
initOrderingElementFormFieldLabels(ilFormPropertyGUI $formField)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildTestPresentationConfig()

assOrderingQuestion::buildTestPresentationConfig ( )

Get the test question configuration.

Returns
ilTestQuestionConfig

Definition at line 1130 of file class.assOrderingQuestion.php.

References ILIAS\Repository\lng(), and ilTestQuestionConfig\setIsUnchangedAnswerPossible().

1131  // hey.
1132  {
1133  // hey: refactored identifiers
1134  return parent::buildTestPresentationConfig()
1135  // hey.
1137  ->setUseUnchangedAnswerLabel($this->lng->txt('tst_unchanged_order_is_correct'));
1138  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setIsUnchangedAnswerPossible($isUnchangedAnswerPossible)
Set if the saving of an unchanged answer is supported with an additional checkbox.
+ Here is the call graph for this function:

◆ calculateReachedPoints()

assOrderingQuestion::calculateReachedPoints ( int  $active_id,
?int  $pass = null,
bool  $authorized_solution = true 
)

Definition at line 471 of file class.assOrderingQuestion.php.

References calculateReachedPointsForSolution(), assQuestion\fetchIndexedValuesFromValuePairs(), assQuestion\getSolutionMaxPass(), getSolutionOrderingElementList(), assQuestion\getSolutionValues(), and null.

Referenced by getUserQuestionResult().

475  : float {
476  if ($pass === null) {
477  $pass = $this->getSolutionMaxPass($active_id);
478  }
479 
480  $solution_value_pairs = $this->getSolutionValues($active_id, $pass, $authorized_solution);
481 
482  if ($solution_value_pairs === []) {
483  return 0.0;
484  }
485 
486  $solution_ordering_element_list = $this->getSolutionOrderingElementList(
487  $this->fetchIndexedValuesFromValuePairs($solution_value_pairs)
488  );
489 
490  return $this->calculateReachedPointsForSolution($solution_ordering_element_list);
491  }
getSolutionValues(int $active_id, ?int $pass=null, bool $authorized=true)
Loads solutions of a given user from the database an returns it.
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
fetchIndexedValuesFromValuePairs(array $value_pairs)
getSolutionMaxPass(int $active_id)
getSolutionOrderingElementList(array $indexed_solution_values)
calculateReachedPointsForSolution(ilAssOrderingElementList $solution_ordering_element_list)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ calculateReachedPointsForSolution()

assOrderingQuestion::calculateReachedPointsForSolution ( ilAssOrderingElementList  $solution_ordering_element_list)
protected

Definition at line 1023 of file class.assOrderingQuestion.php.

References ilAssOrderingElementList\getElementByPosition(), getOrderingElementList(), and assQuestion\getPoints().

Referenced by calculateReachedPoints(), and calculateReachedPointsFromPreviewSession().

1023  : float
1024  {
1025  $reached_points = $this->getPoints();
1026 
1027  foreach ($this->getOrderingElementList() as $correct_element) {
1028  $user_element = $solution_ordering_element_list->getElementByPosition($correct_element->getPosition());
1029  if (!$correct_element->isSameElement($user_element)) {
1030  $reached_points = 0;
1031  break;
1032  }
1033  }
1034 
1035  return $reached_points;
1036  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ calculateReachedPointsFromPreviewSession()

assOrderingQuestion::calculateReachedPointsFromPreviewSession ( ilAssQuestionPreviewSession  $preview_session)

Definition at line 493 of file class.assOrderingQuestion.php.

References calculateReachedPointsForSolution(), assQuestion\deductHintPointsFromReachedPoints(), assQuestion\ensureNonNegativePoints(), ilAssQuestionPreviewSession\getParticipantsSolution(), and ilAssQuestionPreviewSession\hasParticipantSolution().

493  : float
494  {
495  if (!$preview_session->hasParticipantSolution()) {
496  return 0.0;
497  }
498 
499  $solution_ordering_element_list = unserialize(
500  $preview_session->getParticipantsSolution(),
501  ['allowed_classes' => true]
502  );
503 
504  $reached_points = $this->deductHintPointsFromReachedPoints(
505  $preview_session,
506  $this->calculateReachedPointsForSolution($solution_ordering_element_list)
507  );
508 
509  return $this->ensureNonNegativePoints($reached_points);
510  }
ensureNonNegativePoints(float $points)
deductHintPointsFromReachedPoints(ilAssQuestionPreviewSession $preview_session, $reached_points)
calculateReachedPointsForSolution(ilAssOrderingElementList $solution_ordering_element_list)
+ Here is the call graph for this function:

◆ cleanImagefiles()

assOrderingQuestion::cleanImagefiles ( )
protected

Definition at line 534 of file class.assOrderingQuestion.php.

References Vendor\Package\$f, ilFileUtils\delDir(), ilFileUtils\getDir(), assQuestion\getImagePath(), getOrderingElementList(), getOrderingType(), and getThumbPrefix().

534  : void
535  {
536  if ($this->getOrderingType() == self::OQ_PICTURES) {
537  if (@file_exists($this->getImagePath())) {
538  $contents = ilFileUtils::getDir($this->getImagePath());
539  foreach ($contents as $f) {
540  if (strcmp($f['type'], 'file') == 0) {
541  $found = false;
542  foreach ($this->getOrderingElementList() as $orderElement) {
543  if (strcmp($f['entry'], $orderElement->getContent()) == 0) {
544  $found = true;
545  }
546  if (strcmp($f['entry'], $this->getThumbPrefix() . $orderElement->getContent()) == 0) {
547  $found = true;
548  }
549  }
550  if (!$found) {
551  if (@file_exists($this->getImagePath() . $f['entry'])) {
552  @unlink($this->getImagePath() . $f['entry']);
553  }
554  }
555  }
556  }
557  }
558  } else {
559  if (@file_exists($this->getImagePath())) {
561  }
562  }
563  }
getImagePath($question_id=null, $object_id=null)
Returns the image path for web accessable images of a question.
static delDir(string $a_dir, bool $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
static getDir(string $a_dir, bool $a_rec=false, ?string $a_sub_dir="")
get directory
+ Here is the call graph for this function:

◆ cloneImages()

assOrderingQuestion::cloneImages ( int  $source_question_id,
int  $source_parent_id,
int  $target_question_id,
int  $target_parent_id 
)

Definition at line 174 of file class.assOrderingQuestion.php.

References $filename, assQuestion\getImagePath(), getOrderingElementList(), getThumbPrefix(), isImageOrderingType(), ilFileUtils\makeDirParents(), and assQuestion\removeAllImageFiles().

Referenced by cloneQuestionTypeSpecificProperties().

179  : void {
180  if (!$this->isImageOrderingType()) {
181  return;
182  }
183 
184  $image_source_path = $this->getImagePath($source_question_id, $source_parent_id);
185  $image_target_path = $this->getImagePath($target_question_id, $target_parent_id);
186 
187  if (!file_exists($image_target_path)) {
188  ilFileUtils::makeDirParents($image_target_path);
189  } else {
190  $this->removeAllImageFiles($image_target_path);
191  }
192  foreach ($this->getOrderingElementList() as $element) {
193  $filename = $element->getContent();
194 
195  if ($filename === '') {
196  continue;
197  }
198 
199  if (!file_exists($image_source_path . $filename)
200  || !copy($image_source_path . $filename, $image_target_path . $filename)) {
201  $this->log->root()->warning('Image could not be cloned for object for question: ' . $target_question_id);
202  }
203  if (!file_exists($image_source_path . $this->getThumbPrefix() . $filename)
204  || !copy($image_source_path . $this->getThumbPrefix() . $filename, $image_target_path . $this->getThumbPrefix() . $filename)) {
205  $this->log->root()->warning('Image thumbnails could not be cloned for object for question: ' . $target_question_id);
206  }
207  }
208  }
removeAllImageFiles(string $image_target_path)
static makeDirParents(string $a_dir)
Create a new directory and all parent directories.
getImagePath($question_id=null, $object_id=null)
Returns the image path for web accessable images of a question.
$filename
Definition: buildRTE.php:78
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ cloneQuestionTypeSpecificProperties()

assOrderingQuestion::cloneQuestionTypeSpecificProperties ( \assQuestion  $target)
protected

Definition at line 163 of file class.assOrderingQuestion.php.

References cloneImages(), assQuestion\getId(), assQuestion\getObjId(), and getRepository().

165  : \assQuestion {
166  $list = $this->getRepository()->getOrderingList($this->getId())
167  ->withQuestionId($target->getId());
168  $list->distributeNewRandomIdentifiers();
169  $target->setOrderingElementList($list);
170  $this->cloneImages($this->getId(), $this->getObjId(), $target->getId(), $target->getObjId());
171  return $target;
172  }
cloneImages(int $source_question_id, int $source_parent_id, int $target_question_id, int $target_parent_id)
+ Here is the call graph for this function:

◆ deleteAnswer()

assOrderingQuestion::deleteAnswer ( int  $random_identifier)

Definition at line 458 of file class.assOrderingQuestion.php.

References getOrderingElementList().

458  : void
459  {
460  $this->getOrderingElementList()->removeElement(
461  $this->getOrderingElementList()->getElementByRandomIdentifier($random_identifier)
462  );
463  $this->getOrderingElementList()->saveToDb();
464  }
+ Here is the call graph for this function:

◆ dropImageFile()

assOrderingQuestion::dropImageFile (   $imageFilename)

Definition at line 571 of file class.assOrderingQuestion.php.

References assQuestion\getImagePath(), and getThumbPrefix().

572  {
573  if (!strlen($imageFilename)) {
574  return false;
575  }
576 
577  $result = @unlink($this->getImagePath() . $imageFilename);
578  $result = $result && @unlink($this->getImagePath() . $this->getThumbPrefix() . $imageFilename);
579 
580  return $result;
581  }
getImagePath($question_id=null, $object_id=null)
Returns the image path for web accessable images of a question.
+ Here is the call graph for this function:

◆ ensureImagePathExists()

assOrderingQuestion::ensureImagePathExists ( )
protected

Definition at line 1141 of file class.assOrderingQuestion.php.

References assQuestion\getImagePath(), and ilFileUtils\makeDirParents().

Referenced by storeImageFile().

1141  : void
1142  {
1143  if (!file_exists($this->getImagePath())) {
1145  }
1146  }
static makeDirParents(string $a_dir)
Create a new directory and all parent directories.
getImagePath($question_id=null, $object_id=null)
Returns the image path for web accessable images of a question.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fetchSolutionListFromFormSubmissionData()

assOrderingQuestion::fetchSolutionListFromFormSubmissionData ( array  $user_solution_post)

Definition at line 978 of file class.assOrderingQuestion.php.

References ilAssOrderingElementList\buildInstance(), buildNestedOrderingElementInputGui(), ilAssNestedOrderingElementsInputGUI\CONTEXT_USER_SOLUTION_SUBMISSION, assQuestion\getId(), getOrderingElementList(), and isOrderingTypeNested().

Referenced by getSolutionListFromPostSubmit(), and getSolutionOrderingElementListForTestOutput().

979  {
980  $ordering_gui = $this->buildNestedOrderingElementInputGui();
982  $ordering_gui->setValueByArray($user_solution_post);
983 
984  if (!$ordering_gui->checkInput()) {
985  throw new ilTestException('error on validating user solution post');
986  }
987 
988  $solution_ordering_element_list = ilAssOrderingElementList::buildInstance($this->getId());
989 
990  $stored_element_list = $this->getOrderingElementList();
991 
992  foreach ($ordering_gui->getElementList($this->getId()) as $submitted_element) {
993  $solution_element = $stored_element_list->getElementByRandomIdentifier(
994  $submitted_element->getRandomIdentifier()
995  )->getClone();
996 
997  $solution_element->setPosition($submitted_element->getPosition());
998 
999  if ($this->isOrderingTypeNested()) {
1000  $solution_element->setIndentation($submitted_element->getIndentation());
1001  }
1002 
1003  $solution_ordering_element_list->addElement($solution_element);
1004  }
1005 
1006  return $solution_ordering_element_list;
1007  }
static buildInstance(int $question_id, array $elements=[])
Base Exception for all Exceptions relating to Modules/Test.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fetchSolutionSubmit()

assOrderingQuestion::fetchSolutionSubmit ( array  $form_submission_data_structure)
Returns
array

Definition at line 1151 of file class.assOrderingQuestion.php.

References getOrderingElementList(), getOrderingType(), and null.

1151  : array
1152  {
1153  $solution_submit = [];
1154 
1155  if (isset($form_submission_data_structure['orderresult'])) {
1156  $orderresult = $form_submission_data_structure['orderresult'];
1157 
1158  if (strlen($orderresult)) {
1159  $orderarray = explode(":", $orderresult);
1160  $ordervalue = 1;
1161  foreach ($orderarray as $index) {
1162  $idmatch = null;
1163  if (preg_match("/id_(\\d+)/", $index, $idmatch)) {
1164  $randomid = $idmatch[1];
1165  foreach ($this->getOrderingElementList() as $answeridx => $answer) {
1166  if ($answer->getRandomIdentifier() == $randomid) {
1167  $solution_submit[$answeridx] = $ordervalue;
1168  $ordervalue++;
1169  }
1170  }
1171  }
1172  }
1173  }
1174  } elseif ($this->getOrderingType() == self::OQ_NESTED_TERMS || $this->getOrderingType() == self::OQ_NESTED_PICTURES) {
1175  $index = 0;
1176  foreach ($form_submission_data_structure['content'] as $randomId => $content) {
1177  $indentation = $form_submission_data_structure['indentation'];
1178 
1179  $value1 = $index++;
1180  $value2 = implode(':', [$randomId, $indentation]);
1181 
1182  $solution_submit[$value1] = $value2;
1183  }
1184  } else {
1185  foreach ($form_submission_data_structure as $key => $value) {
1186  $matches = null;
1187  if (preg_match("/^order_(\d+)/", $key, $matches)) {
1188  if (!(preg_match("/initial_value_\d+/", $value))) {
1189  if (strlen($value)) {
1190  foreach ($this->getOrderingElementList() as $answeridx => $answer) {
1191  if ($answer->getRandomIdentifier() == $matches[1]) {
1192  $solution_submit[$answeridx] = $value;
1193  }
1194  }
1195  }
1196  }
1197  }
1198  }
1199  }
1200 
1201  return $solution_submit;
1202  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
+ Here is the call graph for this function:

◆ generateThumbForFile()

assOrderingQuestion::generateThumbForFile (   $path,
  $file 
)
protected

Definition at line 812 of file class.assOrderingQuestion.php.

References $filename, $path, ilShellUtil\convertImage(), getThumbPrefix(), and assQuestion\getThumbSize().

Referenced by rebuildThumbnails().

812  : void
813  {
814  $filename = $path . $file;
815  if (@file_exists($filename)) {
816  $thumbpath = $path . $this->getThumbPrefix() . $file;
817  $path_info = @pathinfo($filename);
818  $ext = "";
819  switch (strtoupper($path_info['extension'])) {
820  case 'PNG':
821  $ext = 'PNG';
822  break;
823  case 'GIF':
824  $ext = 'GIF';
825  break;
826  default:
827  $ext = 'JPEG';
828  break;
829  }
830  ilShellUtil::convertImage($filename, $thumbpath, $ext, (string) $this->getThumbSize());
831  }
832  }
$path
Definition: ltiservices.php:29
static convertImage(string $a_from, string $a_to, string $a_target_format="", string $a_geometry="", string $a_background_color="")
$filename
Definition: buildRTE.php:78
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAdditionalTableName()

assOrderingQuestion::getAdditionalTableName ( )

Returns the name of the additional question data table in the database.

Returns
string The additional table name public

Definition at line 743 of file class.assOrderingQuestion.php.

Referenced by loadFromDb(), and saveAdditionalQuestionDataToDb().

743  : string
744  {
745  return "qpl_qst_ordering";
746  }
+ Here is the caller graph for this function:

◆ getAnswer()

assOrderingQuestion::getAnswer ( int  $index = 0)

Returns the ordering element from the given position.

Parameters
int$position
Returns
ilAssOrderingElement|null

Definition at line 449 of file class.assOrderingQuestion.php.

References getOrderingElementList(), and null.

450  {
451  if (!$this->getOrderingElementList()->elementExistByPosition($index)) {
452  return null;
453  }
454 
455  return $this->getOrderingElementList()->getElementByPosition($index);
456  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
+ Here is the call graph for this function:

◆ getAnswerCount()

assOrderingQuestion::getAnswerCount ( )

Definition at line 466 of file class.assOrderingQuestion.php.

References getOrderingElementList().

466  : int
467  {
468  return $this->getOrderingElementList()->countElements();
469  }
+ Here is the call graph for this function:

◆ getAnswerTableName()

assOrderingQuestion::getAnswerTableName ( )

Returns the name of the answer table in the database.

Returns
string The answer table name public

Definition at line 754 of file class.assOrderingQuestion.php.

754  : string
755  {
756  return "qpl_a_ordering";
757  }

◆ getAvailableAnswerOptions()

assOrderingQuestion::getAvailableAnswerOptions (   $index = null)

If index is null, the function returns an array with all anwser options Else it returns the specific answer option.

Parameters
null | int$index

Definition at line 1115 of file class.assOrderingQuestion.php.

References getOrderingElementList(), and null.

1116  {
1117  if ($index !== null) {
1118  return $this->getOrderingElementList()->getElementByPosition($index);
1119  }
1120 
1121  return $this->getOrderingElementList()->getElements();
1122  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
+ Here is the call graph for this function:

◆ getCorrectSolutionForTextOutput()

assOrderingQuestion::getCorrectSolutionForTextOutput ( int  $active_id,
int  $pass 
)

Definition at line 1334 of file class.assOrderingQuestion.php.

References getElementArrayWithIdentationsForTextOutput(), and getOrderingElementList().

1334  : array
1335  {
1337  $this->getOrderingElementList()->getElements()
1338  );
1339  }
getElementArrayWithIdentationsForTextOutput(array $elements)
+ Here is the call graph for this function:

◆ getElementArrayWithIdentationsForTextOutput()

assOrderingQuestion::getElementArrayWithIdentationsForTextOutput ( array  $elements)
private
Parameters
array<ilAssOrderingElement>$elements
Returns
array

Definition at line 1346 of file class.assOrderingQuestion.php.

References Vendor\Package\$a, Vendor\Package\$b, ilAssOrderingElement\getContent(), ilAssOrderingElement\getIndentation(), and ilAssOrderingElement\getPosition().

Referenced by getCorrectSolutionForTextOutput(), solutionValuesToLog(), and solutionValuesToText().

1346  : array
1347  {
1348  usort(
1349  $elements,
1351  => $a->getPosition() - $b->getPosition()
1352  );
1353 
1354  return array_map(
1355  function (ilAssOrderingElement $v): string {
1356  $indentation = '';
1357  for ($i = 0;$i < $v->getIndentation();$i++) {
1358  $indentation .= ' |';
1359  }
1360  return $indentation . $v->getContent();
1361  },
1362  $elements
1363  );
1364  }
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getElementHeight()

assOrderingQuestion::getElementHeight ( )

Definition at line 783 of file class.assOrderingQuestion.php.

References $element_height.

Referenced by saveAdditionalQuestionDataToDb().

783  : ?int
784  {
785  return $this->element_height;
786  }
+ Here is the caller graph for this function:

◆ getEncryptedFilename()

assOrderingQuestion::getEncryptedFilename (   $filename)

Definition at line 525 of file class.assOrderingQuestion.php.

References $filename.

525  : string
526  {
527  $extension = "";
528  if (preg_match("/.*\\.(\\w+)$/", $filename, $matches)) {
529  $extension = $matches[1];
530  }
531  return md5($filename) . "." . $extension;
532  }
$filename
Definition: buildRTE.php:78

◆ getExpressionTypes()

◆ getMaximumPoints()

assOrderingQuestion::getMaximumPoints ( )

Definition at line 512 of file class.assOrderingQuestion.php.

References assQuestion\getPoints().

Referenced by getUserQuestionResult(), and isComplete().

512  : float
513  {
514  return $this->getPoints();
515  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getOperators()

assOrderingQuestion::getOperators ( string  $expression)

Get all available operations for a specific question.

Parameters
$expression

Implements iQuestionCondition.

Definition at line 1038 of file class.assOrderingQuestion.php.

1038  : array
1039  {
1040  return ilOperatorsExpressionMapping::getOperatorsByExpression($expression);
1041  }

◆ getOrderElements()

assOrderingQuestion::getOrderElements ( )

Returns the answers array.

Deprecated:
seriously, stop looking for this kind data at this point (!) look where it comes from and learn (!)

Definition at line 778 of file class.assOrderingQuestion.php.

References getOrderingElementList().

Referenced by rebuildThumbnails().

778  : array
779  {
780  return $this->getOrderingElementList()->getRandomIdentifierIndexedElements();
781  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getOrderingElementList()

◆ getOrderingElementListForSolutionOutput()

assOrderingQuestion::getOrderingElementListForSolutionOutput ( bool  $force_correct_solution,
int  $active_id,
?int  $pass_index 
)

Definition at line 298 of file class.assOrderingQuestion.php.

References assQuestion\fetchIndexedValuesFromValuePairs(), getOrderingElementList(), getShuffledOrderingElementList(), getSolutionOrderingElementList(), assQuestion\getSolutionValues(), and null.

303  if ($force_correct_solution || !$active_id || $pass_index === null) {
304  return $this->getOrderingElementList();
305  }
306 
307  $solution_values = $this->getSolutionValues($active_id, $pass_index);
308 
309  if (!count($solution_values)) {
310  return $this->getShuffledOrderingElementList();
311  }
312 
313  return $this->getSolutionOrderingElementList($this->fetchIndexedValuesFromValuePairs($solution_values));
314  }
getSolutionValues(int $active_id, ?int $pass=null, bool $authorized=true)
Loads solutions of a given user from the database an returns it.
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
fetchIndexedValuesFromValuePairs(array $value_pairs)
getSolutionOrderingElementList(array $indexed_solution_values)
+ Here is the call graph for this function:

◆ getOrderingType()

assOrderingQuestion::getOrderingType ( )

Definition at line 228 of file class.assOrderingQuestion.php.

Referenced by buildNestedOrderingElementInputGui(), buildNestedOrderingFormDataConverter(), cleanImagefiles(), fetchSolutionSubmit(), isImageOrderingType(), isOrderingTypeNested(), saveWorkingData(), toJSON(), and toLog().

228  : int
229  {
230  return $this->ordering_type;
231  }
+ Here is the caller graph for this function:

◆ getOrderingTypeLangVars()

assOrderingQuestion::getOrderingTypeLangVars ( int  $ordering_type)
private

Definition at line 1280 of file class.assOrderingQuestion.php.

Referenced by toLog().

1280  : array
1281  {
1282  switch ($ordering_type) {
1283  case self::OQ_PICTURES:
1284  return ['qst_nested_nested_answers_off', 'oq_btn_use_order_pictures'];
1285  case self::OQ_TERMS:
1286  return ['qst_nested_nested_answers_off', 'oq_btn_use_order_terms'];
1287  case self::OQ_NESTED_PICTURES:
1288  return ['qst_nested_nested_answers_on', 'oq_btn_use_order_pictures'];
1289  case self::OQ_NESTED_TERMS:
1290  return ['qst_nested_nested_answers_on', 'oq_btn_use_order_terms'];
1291  default:
1292  return ['', ''];
1293  }
1294  }
+ Here is the caller graph for this function:

◆ getQuestionRepository()

assOrderingQuestion::getQuestionRepository ( )
protected

Definition at line 717 of file class.assOrderingQuestion.php.

717  : OQRepository
718  {
719  return new OQRepository($this->db);
720  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...

◆ getQuestionType()

assOrderingQuestion::getQuestionType ( )

Returns the question type of the question.

Returns
integer The question type of the question public

Definition at line 732 of file class.assOrderingQuestion.php.

Referenced by toJSON(), and toLog().

732  : string
733  {
734  return "assOrderingQuestion";
735  }
+ Here is the caller graph for this function:

◆ getRepository()

assOrderingQuestion::getRepository ( )
protected

Definition at line 98 of file class.assOrderingQuestion.php.

References $oq_repository.

Referenced by cloneQuestionTypeSpecificProperties(), getOrderingElementList(), and setOrderingElementList().

98  : OQRepository
99  {
100  if (is_null($this->oq_repository)) {
101  $this->oq_repository = new OQRepository($this->db);
102  }
103  return $this->oq_repository;
104  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
+ Here is the caller graph for this function:

◆ getRTETextWithMediaObjects()

assOrderingQuestion::getRTETextWithMediaObjects ( )

Collects all text in the question which could contain media objects which were created with the Rich Text Editor.

Definition at line 763 of file class.assOrderingQuestion.php.

References getOrderingElementList().

763  : string
764  {
765  $text = parent::getRTETextWithMediaObjects();
766 
767  foreach ($this->getOrderingElementList() as $orderingElement) {
768  $text .= $orderingElement->getContent();
769  }
770 
771  return $text;
772  }
+ Here is the call graph for this function:

◆ getShuffledOrderingElementList()

assOrderingQuestion::getShuffledOrderingElementList ( )
Parameters
$active_id
$pass
Returns
ilAssOrderingElementList

Definition at line 402 of file class.assOrderingQuestion.php.

References getOrderingElementList(), and assQuestion\getShuffler().

Referenced by getOrderingElementListForSolutionOutput(), and getSolutionOrderingElementListForTestOutput().

403  {
404  $shuffledRandomIdentifierIndex = $this->getShuffler()->transform(
405  $this->getOrderingElementList()->getRandomIdentifierIndex()
406  );
407 
408  $shuffledElementList = $this->getOrderingElementList()->getClone();
409  $shuffledElementList->reorderByRandomIdentifiers($shuffledRandomIdentifierIndex);
410  $shuffledElementList->resetElementsIndentations();
411 
412  return $shuffledElementList;
413  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSolutionListFromPostSubmit()

assOrderingQuestion::getSolutionListFromPostSubmit ( )

Definition at line 1011 of file class.assOrderingQuestion.php.

References $postSolutionOrderingElementList, fetchSolutionListFromFormSubmissionData(), ILIAS\FileDelivery\http(), and null.

Referenced by savePreviewData(), saveWorkingData(), and validateSolutionSubmit().

1012  {
1013  if ($this->postSolutionOrderingElementList === null) {
1015  $this->http->request()->getParsedBody()
1016  );
1017  $this->postSolutionOrderingElementList = $list;
1018  }
1019 
1021  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
static http()
Fetches the global http state from ILIAS.
fetchSolutionListFromFormSubmissionData(array $user_solution_post)
ilAssOrderingElementList $postSolutionOrderingElementList
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSolutionOrderingElementList()

assOrderingQuestion::getSolutionOrderingElementList ( array  $indexed_solution_values)
Exceptions
ilTestQuestionPoolException

Definition at line 375 of file class.assOrderingQuestion.php.

References assQuestion\getId(), getOrderingElementList(), getSolutionValuePairBrandedOrderingElementByRandomIdentifier(), getSolutionValuePairBrandedOrderingElementBySolutionIdentifier(), and isOrderingTypeNested().

Referenced by calculateReachedPoints(), getOrderingElementListForSolutionOutput(), getSolutionOrderingElementListForTestOutput(), solutionValuesToLog(), and solutionValuesToText().

376  {
377  $solution_ordering_list = new ilAssOrderingElementList();
378  $solution_ordering_list->setQuestionId($this->getId());
379 
380  foreach ($indexed_solution_values as $value1 => $value2) {
381  if ($this->isOrderingTypeNested()) {
382  $element = $this->getSolutionValuePairBrandedOrderingElementByRandomIdentifier($value1, $value2);
383  } else {
384  $element = $this->getSolutionValuePairBrandedOrderingElementBySolutionIdentifier($value1, $value2);
385  }
386 
387  $solution_ordering_list->addElement($element);
388  }
389 
390  if (!$this->getOrderingElementList()->hasSameElementSetByRandomIdentifiers($solution_ordering_list)) {
391  throw new ilTestQuestionPoolException('inconsistent solution values given');
392  }
393 
394  return $solution_ordering_list;
395  }
getSolutionValuePairBrandedOrderingElementByRandomIdentifier(int $value1, string $value2)
getSolutionValuePairBrandedOrderingElementBySolutionIdentifier(int $value1, string $value2)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSolutionOrderingElementListForTestOutput()

assOrderingQuestion::getSolutionOrderingElementListForTestOutput ( ilAssNestedOrderingElementsInputGUI  $input_gui,
array  $last_post,
int  $active_id,
int  $pass 
)

Definition at line 316 of file class.assOrderingQuestion.php.

References assQuestion\fetchIndexedValuesFromValuePairs(), fetchSolutionListFromFormSubmissionData(), getShuffledOrderingElementList(), getSolutionOrderingElementList(), assQuestion\getTestOutputSolutions(), and ilAssNestedOrderingElementsInputGUI\isPostSubmit().

322  if ($input_gui->isPostSubmit($last_post)) {
323  return $this->fetchSolutionListFromFormSubmissionData($last_post);
324  }
325  $indexedSolutionValues = $this->fetchIndexedValuesFromValuePairs(
326  // hey: prevPassSolutions - obsolete due to central check
327  $this->getTestOutputSolutions($active_id, $pass)
328  // hey.
329  );
330 
331  if (count($indexedSolutionValues)) {
332  return $this->getSolutionOrderingElementList($indexedSolutionValues);
333  }
334 
335  return $this->getShuffledOrderingElementList();
336  }
fetchIndexedValuesFromValuePairs(array $value_pairs)
fetchSolutionListFromFormSubmissionData(array $user_solution_post)
getTestOutputSolutions(int $activeId, int $pass)
getSolutionOrderingElementList(array $indexed_solution_values)
+ Here is the call graph for this function:

◆ getSolutionOutputForLog()

assOrderingQuestion::getSolutionOutputForLog ( )
private

Definition at line 1296 of file class.assOrderingQuestion.php.

References buildNestedOrderingElementInputGui(), ilAssNestedOrderingElementsInputGUI\CONTEXT_CORRECT_SOLUTION_PRESENTATION, and getOrderingElementList().

Referenced by toLog().

1296  : string
1297  {
1298  $solution_ordering_list = $this->getOrderingElementList();
1299 
1300  $answers_gui = $this->buildNestedOrderingElementInputGui();
1302  $answers_gui->setInteractionEnabled(false);
1303  $answers_gui->setElementList($solution_ordering_list);
1304 
1305  return $answers_gui->getHTML();
1306  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSolutionValuePairBrandedOrderingElementByRandomIdentifier()

assOrderingQuestion::getSolutionValuePairBrandedOrderingElementByRandomIdentifier ( int  $value1,
string  $value2 
)
protected

Definition at line 338 of file class.assOrderingQuestion.php.

References getOrderingElementList(), and ILIAS\Repository\int().

Referenced by getSolutionOrderingElementList().

342  $value = explode(':', $value2);
343 
344  $random_identifier = (int) $value[0];
345  $selected_position = $value1;
346  $selected_indentation = (int) $value[1];
347 
348  $element = $this->getOrderingElementList()->getElementByRandomIdentifier($random_identifier)->getClone();
349 
350  $element->setPosition($selected_position);
351  $element->setIndentation($selected_indentation);
352 
353  return $element;
354  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSolutionValuePairBrandedOrderingElementBySolutionIdentifier()

assOrderingQuestion::getSolutionValuePairBrandedOrderingElementBySolutionIdentifier ( int  $value1,
string  $value2 
)
protected

Definition at line 356 of file class.assOrderingQuestion.php.

References getOrderingElementList().

Referenced by getSolutionOrderingElementList().

360  $solution_identifier = $value1;
361  $selected_position = ($value2 - 1);
362  $selected_indentation = 0;
363 
364  $element = $this->getOrderingElementList()->getElementBySolutionIdentifier($solution_identifier)->getClone();
365 
366  $element->setPosition($selected_position);
367  $element->setIndentation($selected_indentation);
368 
369  return $element;
370  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getThumbPrefix()

assOrderingQuestion::getThumbPrefix ( )

Definition at line 807 of file class.assOrderingQuestion.php.

Referenced by buildNestedOrderingElementInputGui(), buildNestedOrderingFormDataConverter(), buildOrderingImagesFormDataConverter(), cleanImagefiles(), cloneImages(), dropImageFile(), generateThumbForFile(), storeImageFile(), and updateImageFile().

807  : string
808  {
809  return "thumb.";
810  }
+ Here is the caller graph for this function:

◆ getUserQuestionResult()

assOrderingQuestion::getUserQuestionResult ( int  $active_id,
int  $pass 
)

Get the user solution for a question by active_id and the test pass.

Implements iQuestionCondition.

Definition at line 1053 of file class.assOrderingQuestion.php.

References $data, assQuestion\$points, calculateReachedPoints(), assQuestion\getId(), getMaximumPoints(), getOrderingElementList(), isOrderingTypeNested(), and assQuestion\lookupMaxStep().

1057  $result = new ilUserQuestionResult($this, $active_id, $pass);
1058 
1059  $maxStep = $this->lookupMaxStep($active_id, $pass);
1060  if ($maxStep > 0) {
1061  $data = $this->db->queryF(
1062  "SELECT value1, value2 FROM tst_solutions WHERE active_fi = %s AND pass = %s AND question_fi = %s AND step = %s ORDER BY value1 ASC ",
1063  ["integer", "integer", "integer","integer"],
1064  [$active_id, $pass, $this->getId(), $maxStep]
1065  );
1066  } else {
1067  $data = $this->db->queryF(
1068  "SELECT value1, value2 FROM tst_solutions WHERE active_fi = %s AND pass = %s AND question_fi = %s ORDER BY value1 ASC ",
1069  ["integer", "integer", "integer"],
1070  [$active_id, $pass, $this->getId()]
1071  );
1072  }
1073 
1074  $elements = [];
1075  while ($row = $this->db->fetchAssoc($data)) {
1076  $newKey = explode(":", $row["value2"]);
1077 
1078  foreach ($this->getOrderingElementList() as $answer) {
1079  // Images not supported
1080  if (!$this->isOrderingTypeNested()) {
1081  if ($answer->getSolutionIdentifier() == $row["value1"]) {
1082  $elements[$row["value2"]] = $answer->getSolutionIdentifier() + 1;
1083  break;
1084  }
1085  } else {
1086  if ($answer->getRandomIdentifier() == $newKey[0]) {
1087  $elements[$row["value1"]] = $answer->getSolutionIdentifier() + 1;
1088  break;
1089  }
1090  }
1091  }
1092  }
1093 
1094  ksort($elements);
1095 
1096  foreach (array_values($elements) as $element) {
1097  $result->addKeyValue($element, $element);
1098  }
1099 
1100  $points = $this->calculateReachedPoints($active_id, $pass);
1101  $max_points = $this->getMaximumPoints();
1102 
1103  $result->setReachedPercentage(($points / $max_points) * 100);
1104 
1105  return $result;
1106  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
calculateReachedPoints(int $active_id, ?int $pass=null, bool $authorized_solution=true)
lookupMaxStep(int $active_id, int $pass)
+ Here is the call graph for this function:

◆ getValidOrderingTypes()

assOrderingQuestion::getValidOrderingTypes ( )
protected

Definition at line 210 of file class.assOrderingQuestion.php.

Referenced by setOrderingType().

210  : array
211  {
212  return [
213  self::OQ_PICTURES,
214  self::OQ_TERMS,
215  self::OQ_NESTED_PICTURES,
216  self::OQ_NESTED_TERMS
217  ];
218  }
+ Here is the caller graph for this function:

◆ hasOrderingTypeUploadSupport()

assOrderingQuestion::hasOrderingTypeUploadSupport ( )

Definition at line 293 of file class.assOrderingQuestion.php.

References isImageOrderingType().

Referenced by isImageReplaced().

293  : bool
294  {
295  return $this->isImageOrderingType();
296  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initOrderingElementAuthoringProperties()

assOrderingQuestion::initOrderingElementAuthoringProperties ( ilFormPropertyGUI  $formField)
Parameters
ilAssOrderingTextsInputGUI | ilAssOrderingImagesInputGUI | ilAssNestedOrderingElementsInputGUI$formField

Definition at line 893 of file class.assOrderingQuestion.php.

References isOrderingTypeNested().

Referenced by ilAssOrderingQuestionAuthoringFormGUI\renewOrderingElementInput().

893  : void
894  {
895  switch (true) {
896  case $formField instanceof ilAssNestedOrderingElementsInputGUI:
897  $formField->setInteractionEnabled(true);
898  $formField->setNestingEnabled($this->isOrderingTypeNested());
899  break;
900 
901  case $formField instanceof ilAssOrderingTextsInputGUI:
902  case $formField instanceof ilAssOrderingImagesInputGUI:
903  default:
904 
905  $formField->setEditElementOccuranceEnabled(true);
906  $formField->setEditElementOrderEnabled(true);
907  }
908  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initOrderingElementFormFieldLabels()

assOrderingQuestion::initOrderingElementFormFieldLabels ( ilFormPropertyGUI  $formField)
Parameters
ilFormPropertyGUI$formField

Definition at line 913 of file class.assOrderingQuestion.php.

References ILIAS\Repository\lng(), ilFormPropertyGUI\setInfo(), and ilFormPropertyGUI\setTitle().

Referenced by buildNestedOrderingElementInputGui(), buildOrderingImagesInputGui(), and buildOrderingTextsInputGui().

913  : void
914  {
915  $formField->setInfo($this->lng->txt('ordering_answer_sequence_info'));
916  $formField->setTitle($this->lng->txt('answers'));
917  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isComplete()

assOrderingQuestion::isComplete ( )

Definition at line 76 of file class.assOrderingQuestion.php.

References assQuestion\getAuthor(), getMaximumPoints(), getOrderingElementList(), assQuestion\getQuestion(), assQuestion\getTitle(), and null.

76  : bool
77  {
78  $elements_list = $this->getOrderingElementList()->getElements();
79  if ($elements_list === [] && $this->element_list_for_deferred_saving !== null) {
80  $elements_list = $this->element_list_for_deferred_saving->getElements();
81  }
82  $elements = array_filter(
83  $elements_list,
84  fn($element) => trim($element->getContent()) != ''
85  );
86 
87  $has_at_least_two_elements = count($elements) > 1;
88 
89  $complete = $this->getAuthor()
90  && $this->getTitle()
91  && $this->getQuestion()
92  && $this->getMaximumPoints()
93  && $has_at_least_two_elements;
94 
95  return $complete;
96  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
+ Here is the call graph for this function:

◆ isImageFileStored()

assOrderingQuestion::isImageFileStored (   $imageFilename)

Definition at line 583 of file class.assOrderingQuestion.php.

References assQuestion\getImagePath().

583  : bool
584  {
585  if (!strlen($imageFilename)) {
586  return false;
587  }
588 
589  if (!file_exists($this->getImagePath() . $imageFilename)) {
590  return false;
591  }
592 
593  return is_file($this->getImagePath() . $imageFilename);
594  }
getImagePath($question_id=null, $object_id=null)
Returns the image path for web accessable images of a question.
+ Here is the call graph for this function:

◆ isImageOrderingType()

assOrderingQuestion::isImageOrderingType ( )

Definition at line 242 of file class.assOrderingQuestion.php.

References getOrderingType().

Referenced by ilAssOrderingQuestionAuthoringFormGUI\addSpecificOrderingQuestionCommandButtons(), buildOrderingElementInputGui(), cloneImages(), hasOrderingTypeUploadSupport(), rebuildThumbnails(), and setNestingType().

242  : bool
243  {
244  $with_images = [
245  self::OQ_PICTURES,
246  self::OQ_NESTED_PICTURES
247  ];
248  return in_array($this->getOrderingType(), $with_images);
249  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isImageReplaced()

assOrderingQuestion::isImageReplaced ( ilAssOrderingElement  $newElement,
ilAssOrderingElement  $oldElement 
)

Definition at line 596 of file class.assOrderingQuestion.php.

References ilAssOrderingElement\getContent(), and hasOrderingTypeUploadSupport().

596  : bool
597  {
598  if (!$this->hasOrderingTypeUploadSupport()) {
599  return false;
600  }
601 
602  if (!$newElement->getContent()) {
603  return false;
604  }
605 
606  return $newElement->getContent() != $oldElement->getContent();
607  }
+ Here is the call graph for this function:

◆ isOrderingTypeNested()

assOrderingQuestion::isOrderingTypeNested ( )

Definition at line 233 of file class.assOrderingQuestion.php.

References getOrderingType().

Referenced by fetchSolutionListFromFormSubmissionData(), getSolutionOrderingElementList(), getUserQuestionResult(), initOrderingElementAuthoringProperties(), and setContentType().

233  : bool
234  {
235  $nested = [
236  self::OQ_NESTED_TERMS,
237  self::OQ_NESTED_PICTURES
238  ];
239  return in_array($this->getOrderingType(), $nested);
240  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ loadFromDb()

assOrderingQuestion::loadFromDb (   $question_id)

Loads a assOrderingQuestion object from a database.

Parameters
object$dbA pear DB object
integer$question_idA unique key which defines the multiple choice test in the database public

Definition at line 123 of file class.assOrderingQuestion.php.

References $data, Vendor\Package\$e, ilRTE\_replaceMediaObjectImageSrc(), getAdditionalTableName(), ilAssQuestionLifecycle\getDraftInstance(), ilAssQuestionLifecycle\getInstance(), assQuestion\getMinimumThumbSize(), ILIAS\Repository\int(), null, assQuestion\setAdditionalContentEditingMode(), assQuestion\setAuthor(), assQuestion\setComment(), assQuestion\setId(), assQuestion\setLifecycle(), assQuestion\setNrOfTries(), assQuestion\setObjId(), assQuestion\setOriginalId(), assQuestion\setOwner(), assQuestion\setPoints(), assQuestion\setQuestion(), assQuestion\setThumbSize(), and assQuestion\setTitle().

123  : void
124  {
125  $result = $this->db->queryF(
126  "SELECT qpl_questions.*, " . $this->getAdditionalTableName() . ".* FROM qpl_questions LEFT JOIN " . $this->getAdditionalTableName() . " ON " . $this->getAdditionalTableName() . ".question_fi = qpl_questions.question_id WHERE qpl_questions.question_id = %s",
127  ["integer"],
128  [$question_id]
129  );
130  if ($result->numRows() == 1) {
131  $data = $this->db->fetchAssoc($result);
132  $this->setId($question_id);
133  $this->setObjId($data["obj_fi"]);
134  $this->setTitle((string) $data["title"]);
135  $this->setComment((string) $data["description"]);
136  $this->setOriginalId($data["original_id"]);
137  $this->setAuthor($data["author"]);
138  $this->setNrOfTries($data['nr_of_tries']);
139  $this->setPoints($data["points"]);
140  $this->setOwner($data["owner"]);
141  $this->setQuestion(ilRTE::_replaceMediaObjectImageSrc((string) $data["question_text"], 1));
142  $this->ordering_type = $data["ordering_type"] !== null ? (int) $data["ordering_type"] : self::OQ_TERMS;
143  if ($data['thumb_geometry'] !== null && $data['thumb_geometry'] >= $this->getMinimumThumbSize()) {
144  $this->setThumbSize($data['thumb_geometry']);
145  }
146  $this->element_height = $data["element_height"] ? (int) $data['element_height'] : null;
147 
148  try {
152  }
153 
154  try {
155  $this->setAdditionalContentEditingMode($data['add_cont_edit_mode']);
156  } catch (ilTestQuestionPoolException $e) {
157  }
158  }
159 
160  parent::loadFromDb($question_id);
161  }
static _replaceMediaObjectImageSrc(string $a_text, int $a_direction=0, string $nic='')
Replaces image source from mob image urls with the mob id or replaces mob id with the correct image s...
setNrOfTries(int $a_nr_of_tries)
setOwner(int $owner=-1)
setThumbSize(int $a_size)
setComment(string $comment="")
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
setPoints(float $points)
setObjId(int $obj_id=0)
setId(int $id=-1)
setOriginalId(?int $original_id)
setTitle(string $title="")
setLifecycle(ilAssQuestionLifecycle $lifecycle)
setAuthor(string $author="")
setAdditionalContentEditingMode(?string $additionalContentEditingMode)
getAdditionalTableName()
Returns the name of the additional question data table in the database.
setQuestion(string $question="")
+ Here is the call graph for this function:

◆ rebuildThumbnails()

assOrderingQuestion::rebuildThumbnails ( )

Definition at line 796 of file class.assOrderingQuestion.php.

References generateThumbForFile(), assQuestion\getImagePath(), getOrderElements(), and isImageOrderingType().

796  : void
797  {
798  if ($this->isImageOrderingType()) {
799  foreach ($this->getOrderElements() as $orderingElement) {
800  if ($orderingElement->getContent() !== '') {
801  $this->generateThumbForFile($this->getImagePath(), $orderingElement->getContent());
802  }
803  }
804  }
805  }
getOrderElements()
Returns the answers array.
getImagePath($question_id=null, $object_id=null)
Returns the image path for web accessable images of a question.
+ Here is the call graph for this function:

◆ saveAdditionalQuestionDataToDb()

assOrderingQuestion::saveAdditionalQuestionDataToDb ( )

Saves a record to the question types additional data table.

Returns
mixed

Implements ilObjQuestionScoringAdjustable.

Definition at line 694 of file class.assOrderingQuestion.php.

References getAdditionalTableName(), getElementHeight(), assQuestion\getId(), assQuestion\getThumbSize(), and null.

Referenced by saveToDb().

695  {
696  // save additional data
697  $this->db->manipulateF(
698  "DELETE FROM " . $this->getAdditionalTableName() . " WHERE question_fi = %s",
699  ["integer"],
700  [$this->getId()]
701  );
702 
703  $this->db->manipulateF(
704  "INSERT INTO " . $this->getAdditionalTableName() . " (question_fi, ordering_type, thumb_geometry, element_height)
705  VALUES (%s, %s, %s, %s)",
706  ["integer", "text", "integer", "integer"],
707  [
708  $this->getId(),
709  $this->ordering_type,
710  $this->getThumbSize(),
711  ($this->getElementHeight() > 20) ? $this->getElementHeight() : null
712  ]
713  );
714  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
getAdditionalTableName()
Returns the name of the additional question data table in the database.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ saveAnswerSpecificDataToDb()

assOrderingQuestion::saveAnswerSpecificDataToDb ( )

Saves the answer specific records into a question types answer table.

Returns
mixed

Implements ilObjAnswerScoringAdjustable.

Definition at line 722 of file class.assOrderingQuestion.php.

723  {
724  }

◆ savePreviewData()

assOrderingQuestion::savePreviewData ( ilAssQuestionPreviewSession  $previewSession)
protected

Definition at line 687 of file class.assOrderingQuestion.php.

References getSolutionListFromPostSubmit(), ilAssQuestionPreviewSession\setParticipantsSolution(), and validateSolutionSubmit().

687  : void
688  {
689  if ($this->validateSolutionSubmit()) {
690  $previewSession->setParticipantsSolution(serialize($this->getSolutionListFromPostSubmit()));
691  }
692  }
+ Here is the call graph for this function:

◆ saveToDb()

assOrderingQuestion::saveToDb ( ?int  $original_id = null)

Definition at line 106 of file class.assOrderingQuestion.php.

References assQuestion\$original_id, null, saveAdditionalQuestionDataToDb(), assQuestion\saveQuestionDataToDb(), and setOrderingElementList().

106  : void
107  {
110  parent::saveToDb();
111  if ($this->element_list_for_deferred_saving !== null) {
112  $this->setOrderingElementList($this->element_list_for_deferred_saving);
113  }
114  }
setOrderingElementList(ilAssOrderingElementList $list)
saveAdditionalQuestionDataToDb()
Saves a record to the question types additional data table.
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
saveQuestionDataToDb(?int $original_id=null)
+ Here is the call graph for this function:

◆ saveWorkingData()

assOrderingQuestion::saveWorkingData ( int  $active_id,
?int  $pass = null,
bool  $authorized = true 
)

Definition at line 658 of file class.assOrderingQuestion.php.

References ilObjTest\_getPass(), getOrderingType(), assQuestion\getProcessLocker(), getSolutionListFromPostSubmit(), null, assQuestion\removeCurrentSolution(), and assQuestion\saveCurrentSolution().

662  : bool {
663  if ($this->questionpool_request->raw('test_answer_changed') === null) {
664  return true;
665  }
666 
667  if (is_null($pass)) {
668  $pass = ilObjTest::_getPass($active_id);
669  }
670 
671  $this->getProcessLocker()->executeUserSolutionUpdateLockOperation(
672  function () use ($active_id, $pass, $authorized) {
673  $this->removeCurrentSolution($active_id, $pass, $authorized);
674 
675  foreach ($this->getSolutionListFromPostSubmit() as $orderingElement) {
676  $value1 = $orderingElement->getStorageValue1($this->getOrderingType());
677  $value2 = $orderingElement->getStorageValue2($this->getOrderingType());
678 
679  $this->saveCurrentSolution($active_id, $pass, $value1, trim((string) $value2), $authorized);
680  }
681  }
682  );
683 
684  return true;
685  }
static _getPass($active_id)
Retrieves the actual pass of a given user for a given test.
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
saveCurrentSolution(int $active_id, int $pass, $value1, $value2, bool $authorized=true, $tstamp=0)
removeCurrentSolution(int $active_id, int $pass, bool $authorized=true)
+ Here is the call graph for this function:

◆ setContentType()

assOrderingQuestion::setContentType (   $ct)

Definition at line 251 of file class.assOrderingQuestion.php.

References assQuestion\getThumbSize(), isOrderingTypeNested(), setOrderingType(), and assQuestion\setThumbSize().

252  {
253  if (!in_array($ct, [
254  self::OQ_CT_PICTURES,
255  self::OQ_CT_TERMS
256  ])) {
257  throw new \InvalidArgumentException("use OQ content-type", 1);
258  }
259  if ($ct == self::OQ_CT_PICTURES) {
260  if ($this->isOrderingTypeNested()) {
261  $this->setOrderingType(self::OQ_NESTED_PICTURES);
262  } else {
263  $this->setOrderingType(self::OQ_PICTURES);
264  }
265  $this->setThumbSize($this->getThumbSize());
266  }
267  if ($ct == self::OQ_CT_TERMS) {
268  if ($this->isOrderingTypeNested()) {
269  $this->setOrderingType(self::OQ_NESTED_TERMS);
270  } else {
271  $this->setOrderingType(self::OQ_TERMS);
272  }
273  }
274  }
setOrderingType(int $ordering_type=self::OQ_TERMS)
setThumbSize(int $a_size)
+ Here is the call graph for this function:

◆ setElementHeight()

assOrderingQuestion::setElementHeight ( ?int  $a_height)

Definition at line 788 of file class.assOrderingQuestion.php.

References null.

788  : void
789  {
790  $this->element_height = ($a_height < 20) ? null : $a_height;
791  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null

◆ setNestingType()

assOrderingQuestion::setNestingType ( bool  $nesting)

Definition at line 276 of file class.assOrderingQuestion.php.

References isImageOrderingType(), and setOrderingType().

277  {
278  if ($nesting) {
279  if ($this->isImageOrderingType()) {
280  $this->setOrderingType(self::OQ_NESTED_PICTURES);
281  } else {
282  $this->setOrderingType(self::OQ_NESTED_TERMS);
283  }
284  } else {
285  if ($this->isImageOrderingType()) {
286  $this->setOrderingType(self::OQ_PICTURES);
287  } else {
288  $this->setOrderingType(self::OQ_TERMS);
289  }
290  }
291  }
setOrderingType(int $ordering_type=self::OQ_TERMS)
+ Here is the call graph for this function:

◆ setOrderingElementList()

assOrderingQuestion::setOrderingElementList ( ilAssOrderingElementList  $list)
Parameters
ilAssOrderingElementList$orderingElementList

Definition at line 426 of file class.assOrderingQuestion.php.

References Vendor\Package\$e, ilAssOrderingElementList\ensureValidIdentifiers(), ilAssOrderingElementList\getElements(), assQuestion\getId(), getRepository(), ilAssOrderingElementList\withElements(), and ilAssOrderingElementList\withQuestionId().

Referenced by saveToDb().

426  : void
427  {
428  if ($this->getId() <= 0) {
429  $this->element_list_for_deferred_saving = $list;
430  return;
431  }
432  $list = $list->withQuestionId($this->getId());
433  $elements = $list->getElements();
434  $nu = [];
435  foreach ($elements as $e) {
436  $nu[] = $list->ensureValidIdentifiers($e);
437  }
438  $this->getRepository()->updateOrderingList(
439  $list->withElements($nu)
440  );
441  }
ensureValidIdentifiers(ilAssOrderingElement $element)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setOrderingType()

assOrderingQuestion::setOrderingType ( int  $ordering_type = self::OQ_TERMS)

Definition at line 220 of file class.assOrderingQuestion.php.

References getValidOrderingTypes().

Referenced by setContentType(), and setNestingType().

221  {
222  if (!in_array($ordering_type, $this->getValidOrderingTypes())) {
223  throw new \InvalidArgumentException('Must be valid ordering type.');
224  }
225  $this->ordering_type = $ordering_type;
226  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ solutionValuesToLog()

assOrderingQuestion::solutionValuesToLog ( AdditionalInformationGenerator  $additional_info,
array  $solution_values 
)
protected

Definition at line 1308 of file class.assOrderingQuestion.php.

References assQuestion\fetchIndexedValuesFromValuePairs(), getElementArrayWithIdentationsForTextOutput(), and getSolutionOrderingElementList().

1311  : array {
1312  if ($solution_values === []) {
1313  return [];
1314  }
1317  $this->fetchIndexedValuesFromValuePairs($solution_values)
1318  )->getElements()
1319  );
1320  }
getElementArrayWithIdentationsForTextOutput(array $elements)
fetchIndexedValuesFromValuePairs(array $value_pairs)
getSolutionOrderingElementList(array $indexed_solution_values)
+ Here is the call graph for this function:

◆ solutionValuesToText()

assOrderingQuestion::solutionValuesToText ( array  $solution_values)

Definition at line 1322 of file class.assOrderingQuestion.php.

References assQuestion\fetchIndexedValuesFromValuePairs(), getElementArrayWithIdentationsForTextOutput(), and getSolutionOrderingElementList().

1322  : array
1323  {
1324  if ($solution_values === []) {
1325  return [];
1326  }
1329  $this->fetchIndexedValuesFromValuePairs($solution_values)
1330  )->getElements()
1331  );
1332  }
getElementArrayWithIdentationsForTextOutput(array $elements)
fetchIndexedValuesFromValuePairs(array $value_pairs)
getSolutionOrderingElementList(array $indexed_solution_values)
+ Here is the call graph for this function:

◆ storeImageFile()

assOrderingQuestion::storeImageFile ( string  $upload_file,
string  $upload_name 
)

Definition at line 610 of file class.assOrderingQuestion.php.

References assQuestion\buildHashedImageFilename(), ilShellUtil\convertImage(), ensureImagePathExists(), assQuestion\getImagePath(), getThumbPrefix(), assQuestion\getThumbSize(), ilFileUtils\moveUploadedFile(), and null.

610  : ?string
611  {
612  $name_parts = explode(".", $upload_name);
613  $suffix = strtolower(array_pop($name_parts));
614  if (!in_array($suffix, self::VALID_UPLOAD_SUFFIXES)) {
615  return null;
616  }
617 
618  $this->ensureImagePathExists();
619  $target_filename = $this->buildHashedImageFilename($upload_name, true);
620  $target_filepath = $this->getImagePath() . $target_filename;
621  if (ilFileUtils::moveUploadedFile($upload_file, $target_filename, $target_filepath)) {
622  $thumb_path = $this->getImagePath() . $this->getThumbPrefix() . $target_filename;
623  ilShellUtil::convertImage($target_filepath, $thumb_path, "JPEG", (string) $this->getThumbSize());
624 
625  return $target_filename;
626  }
627 
628  return null;
629  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
getImagePath($question_id=null, $object_id=null)
Returns the image path for web accessable images of a question.
buildHashedImageFilename(string $plain_image_filename, bool $unique=false)
static moveUploadedFile(string $a_file, string $a_name, string $a_target, bool $a_raise_errors=true, string $a_mode="move_uploaded")
move uploaded file
static convertImage(string $a_from, string $a_to, string $a_target_format="", string $a_geometry="", string $a_background_color="")
+ Here is the call graph for this function:

◆ toJSON()

assOrderingQuestion::toJSON ( )

Returns a JSON representation of the question.

Implements ILIAS\TestQuestionPool\Questions\QuestionLMExportable.

Definition at line 837 of file class.assOrderingQuestion.php.

References ilObjMediaObject\_getMobsOfObject(), assQuestion\formatSAQuestion(), assQuestion\getId(), assQuestion\getImagePathWeb(), assQuestion\getNrOfTries(), getOrderingElementList(), getOrderingType(), assQuestion\getPoints(), assQuestion\getQuestion(), getQuestionType(), assQuestion\getShuffler(), and assQuestion\getTitleForHTMLOutput().

837  : string
838  {
839  $result = [];
840  $result['id'] = $this->getId();
841  $result['type'] = (string) $this->getQuestionType();
842  $result['title'] = $this->getTitleForHTMLOutput();
843  $result['question'] = $this->formatSAQuestion($this->getQuestion());
844  $result['nr_of_tries'] = $this->getNrOfTries();
845  $result['shuffle'] = true;
846  $result['points'] = $this->getPoints();
847  $result['feedback'] = [
848  'onenotcorrect' => $this->formatSAQuestion($this->feedbackOBJ->getGenericFeedbackTestPresentation($this->getId(), false)),
849  'allcorrect' => $this->formatSAQuestion($this->feedbackOBJ->getGenericFeedbackTestPresentation($this->getId(), true))
850  ];
851  if ($this->getOrderingType() == self::OQ_PICTURES) {
852  $result['path'] = $this->getImagePathWeb();
853  }
854 
855  $counter = 1;
856  $answers = [];
857  foreach ($this->getOrderingElementList() as $orderingElement) {
858  $answers[$counter] = $orderingElement->getContent();
859  $counter++;
860  }
861  $answers = $this->getShuffler()->transform($answers);
862  $arr = [];
863  foreach ($answers as $order => $answer) {
864  array_push($arr, [
865  "answertext" => (string) $answer,
866  "order" => (int) $order
867  ]);
868  }
869  $result['answers'] = $arr;
870 
871  $mobs = ilObjMediaObject::_getMobsOfObject("qpl:html", $this->getId());
872  $result['mobs'] = $mobs;
873 
874  return json_encode($result);
875  }
getQuestionType()
Returns the question type of the question.
getImagePathWeb()
Returns the web image path for web accessable images of a question.
static _getMobsOfObject(string $a_type, int $a_id, int $a_usage_hist_nr=0, string $a_lang="-")
+ Here is the call graph for this function:

◆ toLog()

assOrderingQuestion::toLog ( AdditionalInformationGenerator  $additional_info)

Implements ILIAS\TestQuestionPool\Questions\Question.

Definition at line 1260 of file class.assOrderingQuestion.php.

References assQuestion\formatSAQuestion(), getOrderingType(), getOrderingTypeLangVars(), assQuestion\getPoints(), assQuestion\getQuestion(), getQuestionType(), getSolutionOutputForLog(), ILIAS\Test\Logging\AdditionalInformationGenerator\getTagForLangVar(), and assQuestion\getTitleForHTMLOutput().

1260  : array
1261  {
1262  return [
1263  AdditionalInformationGenerator::KEY_QUESTION_TYPE => (string) $this->getQuestionType(),
1264  AdditionalInformationGenerator::KEY_QUESTION_TITLE => $this->getTitleForHTMLOutput(),
1265  AdditionalInformationGenerator::KEY_QUESTION_TEXT => $this->formatSAQuestion($this->getQuestion()),
1266  AdditionalInformationGenerator::KEY_QUESTION_ORDERING_NESTING_TYPE => array_reduce(
1267  $this->getOrderingTypeLangVars($this->getOrderingType()),
1268  static fn(string $string, string $lang_var) => $string . $additional_info->getTagForLangVar($lang_var),
1269  ''
1270  ),
1271  AdditionalInformationGenerator::KEY_QUESTION_REACHABLE_POINTS => $this->getPoints(),
1272  AdditionalInformationGenerator::KEY_QUESTION_ANSWER_OPTION => $this->getSolutionOutputForLog(),
1273  AdditionalInformationGenerator::KEY_FEEDBACK => [
1274  AdditionalInformationGenerator::KEY_QUESTION_FEEDBACK_ON_INCOMPLETE => $this->formatSAQuestion($this->feedbackOBJ->getGenericFeedbackTestPresentation($this->getId(), false)),
1275  AdditionalInformationGenerator::KEY_QUESTION_FEEDBACK_ON_COMPLETE => $this->formatSAQuestion($this->feedbackOBJ->getGenericFeedbackTestPresentation($this->getId(), true))
1276  ]
1277  ];
1278  }
getQuestionType()
Returns the question type of the question.
getOrderingTypeLangVars(int $ordering_type)
+ Here is the call graph for this function:

◆ updateImageFile()

assOrderingQuestion::updateImageFile ( string  $existing_image_name)

Definition at line 631 of file class.assOrderingQuestion.php.

References assQuestion\buildHashedImageFilename(), ilShellUtil\convertImage(), assQuestion\getImagePath(), getThumbPrefix(), assQuestion\getThumbSize(), and ilFileUtils\rename().

631  : ?string
632  {
633  $existing_image_path = $this->getImagePath() . $existing_image_name;
634  $target_filename = $this->buildHashedImageFilename($existing_image_name, true);
635  $target_filepath = $this->getImagePath() . $target_filename;
636  if (ilFileUtils::rename($existing_image_path, $target_filepath)) {
637  unlink($this->getImagePath() . $this->getThumbPrefix() . $existing_image_name);
638  $thumb_path = $this->getImagePath() . $this->getThumbPrefix() . $target_filename;
639  ilShellUtil::convertImage($target_filepath, $thumb_path, "JPEG", (string) $this->getThumbSize());
640 
641  return $target_filename;
642  }
643 
644  return $existing_image_name;
645  }
getImagePath($question_id=null, $object_id=null)
Returns the image path for web accessable images of a question.
buildHashedImageFilename(string $plain_image_filename, bool $unique=false)
static convertImage(string $a_from, string $a_to, string $a_target_format="", string $a_geometry="", string $a_background_color="")
static rename(string $a_source, string $a_target)
+ Here is the call graph for this function:

◆ validateSolutionSubmit()

assOrderingQuestion::validateSolutionSubmit ( )

Implements ILIAS\TestQuestionPool\Questions\Question.

Definition at line 647 of file class.assOrderingQuestion.php.

References getOrderingElementList(), and getSolutionListFromPostSubmit().

Referenced by savePreviewData().

647  : bool
648  {
649  $submittedSolutionList = $this->getSolutionListFromPostSubmit();
650 
651  if (!$submittedSolutionList->hasElements()) {
652  return true;
653  }
654 
655  return $this->getOrderingElementList()->hasSameElementSetByRandomIdentifiers($submittedSolutionList);
656  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $element_height

int assOrderingQuestion::$element_height = null

Definition at line 58 of file class.assOrderingQuestion.php.

Referenced by getElementHeight().

◆ $element_list_for_deferred_saving

ilAssOrderingElementList assOrderingQuestion::$element_list_for_deferred_saving = null
protected

Definition at line 63 of file class.assOrderingQuestion.php.

◆ $leveled_ordering

assOrderingQuestion::$leveled_ordering = []

Definition at line 60 of file class.assOrderingQuestion.php.

◆ $old_ordering_depth

assOrderingQuestion::$old_ordering_depth = []

Definition at line 59 of file class.assOrderingQuestion.php.

◆ $oq_repository

OQRepository assOrderingQuestion::$oq_repository = null
protected

Definition at line 61 of file class.assOrderingQuestion.php.

Referenced by getRepository().

◆ $postSolutionOrderingElementList

ilAssOrderingElementList assOrderingQuestion::$postSolutionOrderingElementList = null
private

Definition at line 1009 of file class.assOrderingQuestion.php.

Referenced by getSolutionListFromPostSubmit().

◆ HAS_SPECIFIC_FEEDBACK

const assOrderingQuestion::HAS_SPECIFIC_FEEDBACK = false
protected

Definition at line 56 of file class.assOrderingQuestion.php.

◆ OQ_CT_PICTURES

const assOrderingQuestion::OQ_CT_PICTURES = 'pics'

Definition at line 52 of file class.assOrderingQuestion.php.

◆ OQ_CT_TERMS

const assOrderingQuestion::OQ_CT_TERMS = 'terms'

Definition at line 53 of file class.assOrderingQuestion.php.

◆ OQ_NESTED_PICTURES

◆ OQ_NESTED_TERMS

◆ OQ_PICTURES

◆ OQ_TERMS

◆ ORDERING_ELEMENT_FORM_CMD_REMOVE_IMG

const assOrderingQuestion::ORDERING_ELEMENT_FORM_CMD_REMOVE_IMG = 'removeElementImage'

Definition at line 45 of file class.assOrderingQuestion.php.

◆ ORDERING_ELEMENT_FORM_CMD_UPLOAD_IMG

const assOrderingQuestion::ORDERING_ELEMENT_FORM_CMD_UPLOAD_IMG = 'uploadElementImage'

Definition at line 44 of file class.assOrderingQuestion.php.

◆ ORDERING_ELEMENT_FORM_FIELD_POSTVAR

◆ VALID_UPLOAD_SUFFIXES

const assOrderingQuestion::VALID_UPLOAD_SUFFIXES = ["jpg", "jpeg", "png", "gif"]

The documentation for this class was generated from the following file: