ILIAS  release_7 Revision v7.30-3-g800a261c036
assErrorText Class Reference

Class for error text questions. More...

+ Inheritance diagram for assErrorText:
+ Collaboration diagram for assErrorText:

Public Member Functions

 __construct ( $title='', $comment='', $author='', $owner=-1, $question='')
 assErorText constructor More...
 
 isComplete ()
 Returns true, if a single choice question is complete for use. More...
 
 saveToDb ($original_id="")
 Saves a the object to the database. More...
 
 saveAnswerSpecificDataToDb ()
 Saves the answer specific records into a question types answer table. More...
 
 saveAdditionalQuestionDataToDb ()
 Saves the data for the additional data table. More...
 
 loadFromDb ($question_id)
 Loads the object from the database. More...
 
 duplicate ($for_test=true, $title="", $author="", $owner="", $testObjId=null)
 Duplicates the object. More...
 
 copyObject ($target_questionpool_id, $title="")
 Copies an object. More...
 
 createNewOriginalFromThisDuplicate ($targetParentId, $targetQuestionTitle="")
 
 getMaximumPoints ()
 Returns the maximum points, a learner can reach answering the question. More...
 
 calculateReachedPoints ($active_id, $pass=null, $authorizedSolution=true, $returndetails=false)
 Returns the points, a learner has reached answering the question. More...
 
 calculateReachedPointsFromPreviewSession (ilAssQuestionPreviewSession $previewSession)
 
 saveWorkingData ($active_id, $pass=null, $authorized=true)
 Saves the learners input of the question to the database. More...
 
 savePreviewData (ilAssQuestionPreviewSession $previewSession)
 
 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...
 
 setExportDetailsXLS ($worksheet, $startrow, $active_id, $pass)
 {Creates an Excel worksheet for the detailed cumulated results of this question.
Parameters
object$worksheetReference to the parent excel worksheet
object$startrowStartrow of the output in the excel worksheet
object$active_idActive id of the participant
object$passTest pass
Returns
object
} More...
 
 fromXML (&$item, &$questionpool_id, &$tst_id, &$tst_object, &$question_counter, &$import_mapping, array $solutionhints=[])
 Creates a question from a QTI file. More...
 
 toXML ($a_include_header=true, $a_include_binary=true, $a_shuffle=false, $test_output=false, $force_image_references=false)
 Returns a QTI xml representation of the question and sets the internal domxml variable with the DOM XML representation of the QTI xml representation. More...
 
 getBestSolution ($active_id, $pass)
 Returns the best solution for a given pass of a participant. More...
 
 getErrorsFromText ($a_text="")
 
 setErrorData ($a_data)
 
 createErrorTextOutput ($selections=null, $graphicalOutput=false, $correct_solution=false, $use_link_tags=true)
 
 createErrorTextExport ($selections=null)
 
 getBestSelection ($withPositivePointsOnly=true)
 
 flushErrorData ()
 Flush error data. More...
 
 addErrorData ($text_wrong, $text_correct, $points)
 
 getErrorData ()
 Get error data. More...
 
 getErrorText ()
 Get error text. More...
 
 setErrorText ($a_value)
 Set error text. More...
 
 getTextSize ()
 Set text size in percent. More...
 
 setTextSize ($a_value)
 Set text size in percent. More...
 
 getPointsWrong ()
 Get wrong points. More...
 
 setPointsWrong ($a_value)
 Set wrong points. More...
 
 __get ($value)
 Object getter. More...
 
 __set ($key, $value)
 Object setter. More...
 
 toJSON ()
 Returns a JSON representation of the question. More...
 
 getOperators ($expression)
 Get all available operations for a specific question. More...
 
 getExpressionTypes ()
 Get all available expression types for a specific question. 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...
 
- Public Member Functions inherited from assQuestion
 getShuffler ()
 
 setShuffler (ilArrayElementShuffler $shuffler)
 
 setProcessLocker ($processLocker)
 
 getProcessLocker ()
 
 fromXML (&$item, &$questionpool_id, &$tst_id, &$tst_object, &$question_counter, &$import_mapping, array $solutionhints=[])
 Receives parameters from a QTI parser and creates a valid ILIAS question object. More...
 
 toXML ($a_include_header=true, $a_include_binary=true, $a_shuffle=false, $test_output=false, $force_image_references=false)
 Returns a QTI xml representation of the question. More...
 
 isComplete ()
 Returns true, if a question is complete for use. More...
 
 questionTitleExists ($questionpool_id, $title)
 Returns TRUE if the question title exists in the database. More...
 
 setTitle ($title="")
 Sets the title string of the assQuestion object. More...
 
 setId ($id=-1)
 Sets the id of the assQuestion object. More...
 
 setTestId ($id=-1)
 Sets the test id of the assQuestion object. More...
 
 setComment ($comment="")
 Sets the comment string of the assQuestion object. More...
 
 setOutputType ($outputType=OUTPUT_HTML)
 Sets the output type. More...
 
 setShuffle ($shuffle=true)
 Sets the shuffle flag. More...
 
 setEstimatedWorkingTime ($hour=0, $min=0, $sec=0)
 Sets the estimated working time of a question from given hour, minute and second. More...
 
 setEstimatedWorkingTimeFromDurationString ($durationString)
 Sets the estimated working time of a question from a given datetime string. More...
 
 keyInArray ($searchkey, $array)
 returns TRUE if the key occurs in an array More...
 
 setAuthor ($author="")
 Sets the authors name of the assQuestion object. More...
 
 setOwner ($owner="")
 Sets the creator/owner ID of the assQuestion object. More...
 
 getTitle ()
 Gets the title string of the assQuestion object. More...
 
 getTitleFilenameCompliant ()
 returns the object title prepared to be used as a filename More...
 
 getId ()
 Gets the id of the assQuestion object. More...
 
 getShuffle ()
 Gets the shuffle flag. More...
 
 getTestId ()
 Gets the test id of the assQuestion object. More...
 
 getComment ()
 Gets the comment string of the assQuestion object. More...
 
 getOutputType ()
 Gets the output type. More...
 
 getDescriptionForHTMLOutput ()
 
 supportsJavascriptOutput ()
 Returns true if the question type supports JavaScript output. More...
 
 supportsNonJsOutput ()
 
 requiresJsSwitch ()
 
 getEstimatedWorkingTime ()
 Gets the estimated working time of a question. More...
 
 getAuthor ()
 Gets the authors name of the assQuestion object. More...
 
 getAuthorForHTMLOutput ()
 
 getOwner ()
 Gets the creator/owner ID of the assQuestion object. More...
 
 getObjId ()
 Get the object id of the container object. More...
 
 setObjId ($obj_id=0)
 Set the object id of the container object. More...
 
 getLifecycle ()
 
 setLifecycle (ilAssQuestionLifecycle $lifecycle)
 
 setExternalId ($external_id)
 
 getExternalId ()
 
 getSuggestedSolutionOutput ()
 
_getSuggestedSolution ($question_id, $subquestion_index=0)
 Returns a suggested solution for a given subquestion index. More...
 
 getSuggestedSolutions ()
 Return the suggested solutions. More...
 
 getReachedPoints ($active_id, $pass=null)
 Returns the points, a learner has reached answering the question This is the fast way to get the points directly from the database. More...
 
 getMaximumPoints ()
 Returns the maximum points, a learner can reach answering the question. More...
 
 getAdjustedReachedPoints ($active_id, $pass=null, $authorizedSolution=true)
 returns the reached points ... More...
 
 calculateResultsFromSolution ($active_id, $pass=null, $obligationsEnabled=false)
 Calculates the question results from a previously saved question solution. More...
 
 persistWorkingState ($active_id, $pass=null, $obligationsEnabled=false, $authorized=true)
 persists the working state for current testactive and testpass More...
 
 persistPreviewState (ilAssQuestionPreviewSession $previewSession)
 persists the preview state for current user and question More...
 
 validateSolutionSubmit ()
 
 saveWorkingData ($active_id, $pass=null, $authorized=true)
 Saves the learners input of the question to the database. More...
 
 moveUploadedMediaFile ($file, $name)
 Move an uploaded media file to an public accessible temp dir to present it. More...
 
 getSuggestedSolutionPath ()
 Returns the path for a suggested solution. More...
 
 getJavaPath ()
 Returns the image path for web accessable images of a question. More...
 
 getImagePath ($question_id=null, $object_id=null)
 Returns the image path for web accessable images of a question. More...
 
 buildImagePath ($questionId, $parentObjectId)
 
 getFlashPath ()
 Returns the image path for web accessable flash files of a question. More...
 
 getJavaPathWeb ()
 Returns the web image path for web accessable java applets of a question. More...
 
 getSuggestedSolutionPathWeb ()
 Returns the web path for a suggested solution. More...
 
 getImagePathWeb ()
 Returns the web image path for web accessable images of a question. More...
 
 getFlashPathWeb ()
 Returns the web image path for web accessable flash applications of a question. More...
 
 getTestOutputSolutions ($activeId, $pass)
 
 getUserSolutionPreferingIntermediate ($active_id, $pass=null)
 
 getSolutionValues ($active_id, $pass=null, $authorized=true)
 Loads solutions of a given user from the database an returns it. More...
 
 isInUse ($question_id="")
 Checks whether the question is in use or not. More...
 
 isClone ($question_id="")
 Checks whether the question is a clone of another question or not. More...
 
 pcArrayShuffle ($array)
 Shuffles the values of a given array. 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...
 
 deleteAnswers ($question_id)
 Deletes datasets from answers tables. More...
 
 deleteAdditionalTableData ($question_id)
 Deletes datasets from the additional question table in the database. More...
 
 delete ($question_id)
 Deletes a question and all materials from the database. More...
 
 getTotalAnswers ()
 get total number of answers More...
 
 _getTotalAnswers ($a_q_id)
 get number of answers for question id (static) note: do not use $this inside this method More...
 
 copyXHTMLMediaObjectsOfQuestion ($a_q_id)
 
 syncXHTMLMediaObjectsOfQuestion ()
 
 createPageObject ()
 create page object of question More...
 
 copyPageOfQuestion ($a_q_id)
 
 getPageOfQuestion ()
 
 setOriginalId ($original_id)
 
 getOriginalId ()
 
 fixSvgToPng ($imageFilenameContainingString)
 
 fixUnavailableSkinImageSources ($html)
 
 loadFromDb ($question_id)
 Loads the question from the database. More...
 
 createNewQuestion ($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 ($original_id="")
 
 saveToDb ($original_id="")
 Saves the question to the database. More...
 
 setNewOriginalId ($newId)
 
 deleteSuggestedSolutions ()
 Deletes all suggestes solutions in the database. More...
 
 getSuggestedSolution ($subquestion_index=0)
 Returns a suggested solution for a given subquestion index. More...
 
 getSuggestedSolutionTitle ($subquestion_index=0)
 Returns the title of a suggested solution at a given subquestion_index. More...
 
 setSuggestedSolution ($solution_id="", $subquestion_index=0, $is_import=false)
 Sets a suggested solution for the question. More...
 
 _resolveInternalLink ($internal_link)
 
 _resolveIntLinks ($question_id)
 
 syncWithOriginal ()
 
 _questionExists ($question_id)
 Returns true if the question already exists in the database. More...
 
 _questionExistsInPool ($question_id)
 Returns true if the question already exists in the database and is assigned to a question pool. More...
 
 getPoints ()
 Returns the maximum available points for the question. More...
 
 setPoints ($a_points)
 Sets the maximum available points for the question. More...
 
 getSolutionMaxPass ($active_id)
 Returns the maximum pass a users question solution. More...
 
 calculateReachedPoints ($active_id, $pass=null, $authorizedSolution=true, $returndetails=false)
 Returns the points, a learner has reached answering the question. More...
 
 deductHintPointsFromReachedPoints (ilAssQuestionPreviewSession $previewSession, $reachedPoints)
 
 calculateReachedPointsFromPreviewSession (ilAssQuestionPreviewSession $previewSession)
 
 isPreviewSolutionCorrect (ilAssQuestionPreviewSession $previewSession)
 
 adjustReachedPointsByScoringOptions ($points, $active_id, $pass=null)
 Adjust the given reached points by checks for all special scoring options in the test container. More...
 
 isHTML ($a_text)
 Checks if a given string contains HTML or not. More...
 
 prepareTextareaOutput ($txt_output, $prepare_for_latex_output=false, $omitNl2BrWhenTextArea=false)
 Prepares a string for a text area output in tests. More...
 
 QTIMaterialToString ($a_material)
 Reads an QTI material tag an creates a text string. More...
 
 addQTIMaterial (&$a_xml_writer, $a_material, $close_material_tag=true, $add_mobs=true)
 Creates a QTI material tag from a plain text or xhtml text. More...
 
 buildHashedImageFilename ($plain_image_filename, $unique=false)
 
 getQuestion ()
 Gets the question string of the question object. More...
 
 setQuestion ($question="")
 Sets the question string of the question object. More...
 
 getQuestionForHTMLOutput ()
 
 getQuestionType ()
 Returns the question type of the question. More...
 
 getQuestionTypeID ()
 Returns the question type of the question. More...
 
 cleanupMediaObjectUsage ()
 synchronises appearances of media objects in the question with media object usage table More...
 
getInstances ()
 Gets all instances of the question. More...
 
 getActiveUserData ($active_id)
 Returns the user id and the test id for a given active id. More...
 
 setExportDetailsXLS ($worksheet, $startrow, $active_id, $pass)
 Creates an Excel worksheet for the detailed cumulated results of this question. More...
 
 __get ($value)
 Object getter. More...
 
 __set ($key, $value)
 Object setter. More...
 
 getNrOfTries ()
 
 setNrOfTries ($a_nr_of_tries)
 
 setExportImagePath ($a_path)
 
 formatSAQuestion ($a_q)
 Format self assessment question. More...
 
 setPreventRteUsage ($a_val)
 Set prevent rte usage. More...
 
 getPreventRteUsage ()
 Get prevent rte usage. More...
 
 migrateContentForLearningModule (ilAssSelfAssessmentMigrator $migrator)
 
 setSelfAssessmentEditingMode ($a_selfassessmenteditingmode)
 Set Self-Assessment Editing Mode. More...
 
 getSelfAssessmentEditingMode ()
 Get Self-Assessment Editing Mode. More...
 
 setDefaultNrOfTries ($a_defaultnroftries)
 Set Default Nr of Tries. More...
 
 getDefaultNrOfTries ()
 Get Default Nr of Tries. More...
 
 syncSkillAssignments ($srcParentId, $srcQuestionId, $trgParentId, $trgQuestionId)
 
 isAnswered ($active_id, $pass=null)
 returns boolean wether the question is answered during test pass or not More...
 
 isAutosaveable ()
 
 getAdditionalContentEditingMode ()
 getter for additional content editing mode for this question More...
 
 setAdditionalContentEditingMode ($additinalContentEditingMode)
 setter for additional content editing mode for this question More...
 
 isAdditionalContentEditingModePageObject ()
 isser for additional "pageobject" content editing mode More...
 
 isValidAdditionalContentEditingMode ($additionalContentEditingMode)
 returns the fact wether the passed additional content mode is valid or not More...
 
 getValidAdditionalContentEditingModes ()
 getter for valid additional content editing modes More...
 
 addQuestionChangeListener (ilQuestionChangeListener $listener)
 
 getQuestionChangeListeners ()
 
 getHtmlUserSolutionPurifier ()
 
 getHtmlQuestionContentPurifier ()
 
 setLastChange ($lastChange)
 
 getLastChange ()
 
 removeIntermediateSolution ($active_id, $pass)
 
 removeCurrentSolution ($active_id, $pass, $authorized=true)
 
 saveCurrentSolution ($active_id, $pass, $value1, $value2, $authorized=true, $tstamp=null)
 
 updateCurrentSolution ($solutionId, $value1, $value2, $authorized=true)
 
 updateCurrentSolutionsAuthorization ($activeId, $pass, $authorized, $keepTime=false)
 
 setStep ($step)
 
 getStep ()
 
 toJSON ()
 
 duplicate ($for_test=true, $title="", $author="", $owner="", $testObjId=null)
 
 intermediateSolutionExists ($active_id, $pass)
 
 authorizedSolutionExists ($active_id, $pass)
 
 authorizedOrIntermediateSolutionExists ($active_id, $pass)
 
 isAddableAnswerOptionValue ($qIndex, $answerOptionValue)
 
 addAnswerOptionValue ($qIndex, $answerOptionValue, $points)
 
 removeAllExistingSolutions ()
 
 removeExistingSolutions ($activeId, $pass)
 
 resetUsersAnswer ($activeId, $pass)
 
 removeResultRecord ($activeId, $pass)
 
 fetchValuePairsFromIndexedValues (array $indexedValues)
 
 fetchIndexedValuesFromValuePairs (array $valuePairs)
 
 areObligationsToBeConsidered ()
 
 setObligationsToBeConsidered ($obligationsToBeConsidered)
 
 updateTimestamp ()
 
 getTestPresentationConfig ()
 Get the test question configuration (initialised once) More...
 
 savePartial ()
 
 isInActiveTest ()
 
 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...
 
- Public Member Functions inherited from iQuestionCondition
 getOperators ($expression)
 Get all available operations for a specific question. More...
 
 getExpressionTypes ()
 Get all available expression types for a specific question. More...
 
 getUserQuestionResult ($active_id, $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...
 

Protected Member Functions

 isTokenSelected ($counter, array $selection)
 
 getPointsForSelectedPositions ($positions)
 
- Protected Member Functions inherited from assQuestion
 getQuestionAction ()
 
 isNonEmptyItemListPostSubmission ($postSubmissionFieldname)
 
 ensureCurrentTestPass ($active_id, $pass)
 
 lookupCurrentTestPass ($active_id, $pass)
 
 lookupTestId ($active_id)
 
 log ($active_id, $langVar)
 
 savePreviewData (ilAssQuestionPreviewSession $previewSession)
 
 deletePageOfQuestion ($question_id)
 Deletes the page object of a question with a given ID. More...
 
 onDuplicate ($originalParentId, $originalQuestionId, $duplicateParentId, $duplicateQuestionId)
 Will be called when a question is duplicated (inside a question pool or for insertion in a test) More...
 
 beforeSyncWithOriginal ($origQuestionId, $dupQuestionId, $origParentObjId, $dupParentObjId)
 
 afterSyncWithOriginal ($origQuestionId, $dupQuestionId, $origParentObjId, $dupParentObjId)
 
 onCopy ($sourceParentId, $sourceQuestionId, $targetParentId, $targetQuestionId)
 Will be called when a question is copied (into another question pool) More...
 
 duplicateSuggestedSolutionFiles ($parent_id, $question_id)
 Duplicates the files of a suggested solution if the question is duplicated. More...
 
 syncSuggestedSolutionFiles ($original_id)
 Syncs the files of a suggested solution if the question is synced. More...
 
 copySuggestedSolutionFiles ($source_questionpool_id, $source_question_id)
 
 ensureNonNegativePoints ($points)
 
 purifyAndPrepareTextAreaOutput (string $content)
 
 getRTETextWithMediaObjects ()
 Collects all text in the question which could contain media objects which were created with the Rich Text Editor. More...
 
 getSelfAssessmentFormatter ()
 
 lmMigrateQuestionTypeGenericContent (ilAssSelfAssessmentMigrator $migrator)
 
 lmMigrateQuestionTypeSpecificContent (ilAssSelfAssessmentMigrator $migrator)
 
 duplicateQuestionHints ($originalQuestionId, $duplicateQuestionId)
 
 duplicateSkillAssignments ($srcParentId, $srcQuestionId, $trgParentId, $trgQuestionId)
 
 buildQuestionDataQuery ()
 
 getCurrentSolutionResultSet ($active_id, $pass, $authorized=true)
 Get a restulset for the current user solution for a this question by active_id and pass. More...
 
 removeSolutionRecordById ($solutionId)
 
 getSolutionRecordById ($solutionId)
 
 deleteDummySolutionRecord ($activeId, $passIndex)
 
 isDummySolutionRecord ($solutionRecord)
 
 deleteSolutionRecordByValues ($activeId, $passIndex, $authorized, $matchValues)
 
 duplicateIntermediateSolutionAuthorized ($activeId, $passIndex)
 
 forceExistingIntermediateSolution ($activeId, $passIndex, $considerDummyRecordCreation)
 
 buildTestPresentationConfig ()
 build basic test question configuration instance More...
 

Protected Attributes

 $errortext
 
 $textsize
 
 $errordata
 
 $points_wrong
 
- Protected Attributes inherited from assQuestion
 $id
 
 $title
 
 $comment
 
 $owner
 
 $author
 
 $question
 
 $points
 
 $est_working_time
 
 $shuffle
 
 $test_id
 
 $obj_id
 
 $ilias
 
 $tpl
 
 $lng
 
 $db
 
 $refinery
 
 $outputType = OUTPUT_JAVASCRIPT
 
 $suggested_solutions
 
 $original_id
 
 $page
 
 $external_id = ''
 
 $questionChangeListeners = array()
 
 $processLocker
 
 $step = null
 
 $lastChange
 
 $shuffler
 
 $testQuestionConfig
 
 $lifecycle
 

Private Member Functions

 getErrorTokenHtml ($item, $class, $useLinkTags)
 

Additional Inherited Members

- Static Public Member Functions inherited from assQuestion
static setForcePassResultUpdateEnabled ($forcePassResultsUpdateEnabled)
 
static isForcePassResultUpdateEnabled ()
 
static isAllowedImageMimeType ($mimeType)
 
static fetchMimeTypeIdentifier ($contentTypeString)
 
static getAllowedFileExtensionsForMimeType ($mimeType)
 
static isAllowedImageFileExtension ($mimeType, $fileExtension)
 
static getAllowedImageMaterialFileExtensions ()
 
static _getMaximumPoints ($question_id)
 Returns the maximum points, a learner can reach answering the question. More...
 
static _getQuestionInfo ($question_id)
 Returns question information from the database. More...
 
static _getSuggestedSolutionCount ($question_id)
 Returns the number of suggested solutions associated with a question. More...
 
static _getSuggestedSolutionOutput ($question_id)
 Returns the output of the suggested solution. More...
 
static _getReachedPoints ($active_id, $question_id, $pass=null)
 Returns the points, a learner has reached answering the question. More...
 
static _updateTestResultCache ($active_id, ilAssQuestionProcessLocker $processLocker=null)
 @TODO Move this to a proper place. More...
 
static logAction ($logtext="", $active_id="", $question_id="")
 Logs an action into the Test&Assessment log. More...
 
static getQuestionTypeFromDb ($question_id)
 get question type for question id More...
 
static _getTotalRightAnswers ($a_q_id)
 get number of answers for question id (static) note: do not use $this inside this method More...
 
static _getTitle ($a_q_id)
 Returns the title of a question. More...
 
static _getQuestionText ($a_q_id)
 Returns question text. More...
 
static isFileAvailable ($file)
 
static _getQuestionType ($question_id)
 Returns the question type of a question with a given id. More...
 
static _getQuestionTitle ($question_id)
 Returns the question title of a question with a given id. More...
 
static saveOriginalId ($questionId, $originalId)
 
static resetOriginalId ($questionId)
 
static _getInternalLinkHref ($target="")
 
static _getOriginalId ($question_id)
 Returns the original id of a question. More...
 
static originalQuestionExists ($questionId)
 
static _instanciateQuestion ($question_id)
 Creates an instance of a question with a given question id. More...
 
static _instantiateQuestion ($question_id)
 
static _getSolutionMaxPass ($question_id, $active_id)
 Returns the maximum pass a users question solution. More...
 
static _isWriteable ($question_id, $user_id)
 Returns true if the question is writeable by a certain user. More...
 
static _isUsedInRandomTest ($question_id="")
 Checks whether the question is used in a random test or not. More...
 
static _isWorkedThrough ($active_id, $question_id, $pass=null)
 Returns true if the question was worked through in the given pass Worked through means that the user entered at least one value. More...
 
static _areAnswered ($a_user_id, $a_question_ids)
 Checks if an array of question ids is answered by an user or not. More...
 
static _setReachedPoints ($active_id, $question_id, $points, $maxpoints, $pass, $manualscoring, $obligationsEnabled)
 Sets the points, a learner has reached answering the question Additionally objective results are updated. More...
 
static _needsManualScoring ($question_id)
 
static _includeClass ($question_type, $gui=0)
 Include the php class file for a given question type. More...
 
static getGuiClassNameByQuestionType ($questionType)
 
static getObjectClassNameByQuestionType ($questionType)
 
static getFeedbackClassNameByQuestionType ($questionType)
 
static isCoreQuestionType ($questionType)
 
static includeCoreClass ($questionType, $withGuiClass)
 
static includePluginClass ($questionType, $withGuiClass)
 
static _getQuestionTypeName ($type_tag)
 Return the translation for a given question type tag. More...
 
static & _instanciateQuestionGUI ($question_id)
 Creates an instance of a question gui with a given question id. More...
 
static instantiateQuestionGUI ($a_question_id)
 Creates an instance of a question gui with a given question id. More...
 
static _questionExistsInTest ($question_id, $test_id)
 
static lookupParentObjId ($questionId)
 @global ilDBInterface $ilDB More...
 
static lookupOriginalParentObjId ($originalQuestionId)
 returns the parent object id for given original question id (should be a qpl id, but theoretically it can be a tst id, too) More...
 
static isObligationPossible ($questionId)
 returns boolean wether it is possible to set this question type as obligatory or not considering the current question configuration More...
 
static implodeKeyValues ($keyValues)
 
static explodeKeyValues ($keyValues)
 
static setResultGateway ($resultGateway)
 
static getResultGateway ()
 
static sumTimesInISO8601FormatH_i_s_Extended ($time1, $time2)
 
static convertISO8601FormatH_i_s_ExtendedToSeconds ($time)
 
static missingResultRecordExists ($activeId, $pass, $questionIds)
 
static getQuestionsMissingResultRecord ($activeId, $pass, $questionIds)
 
static lookupResultRecordExist ($activeId, $questionId, $pass)
 
- Data Fields inherited from assQuestion
const IMG_MIME_TYPE_JPG = 'image/jpeg'
 
const IMG_MIME_TYPE_PNG = 'image/png'
 
const IMG_MIME_TYPE_GIF = 'image/gif'
 
const ADDITIONAL_CONTENT_EDITING_MODE_RTE = 'default'
 constant for additional content editing mode "default" More...
 
const ADDITIONAL_CONTENT_EDITING_MODE_IPE = 'pageobject'
 constant for additional content editing mode "pageobject" More...
 
 $feedbackOBJ = null
 
 $prevent_rte_usage = false
 
 $selfassessmenteditingmode = false
 
 $defaultnroftries = 0
 
 $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 = "?"
 
- Static Protected Member Functions inherited from assQuestion
static getNumExistingSolutionRecords ($activeId, $pass, $questionId)
 returns the number of existing solution records for the given test active / pass and given question id More...
 
static getKeyValuesImplosionSeparator ()
 
- Static Protected Attributes inherited from assQuestion
static $allowedFileExtensionsByMimeType
 
static $allowedCharsetsByMimeType
 
static $allowedImageMaterialFileExtensionsByMimeType
 
static $forcePassResultsUpdateEnabled = false
 
static $imageSourceFixReplaceMap
 

Detailed Description

Class for error text questions.

Author
Helmut Schottmüller helmu.nosp@m.t.sc.nosp@m.hottm.nosp@m.uell.nosp@m.er@ma.nosp@m.c.co.nosp@m.m
Björn Heyser bheys.nosp@m.er@d.nosp@m.ataba.nosp@m.y.de
Grégory Saive gsaiv.nosp@m.e@da.nosp@m.tabay.nosp@m..de
Maximilian Becker mbeck.nosp@m.er@d.nosp@m.ataba.nosp@m.y.de
Version
$Id$

Definition at line 23 of file class.assErrorText.php.

Constructor & Destructor Documentation

◆ __construct()

assErrorText::__construct (   $title = '',
  $comment = '',
  $author = '',
  $owner = -1,
  $question = '' 
)

assErorText constructor

Parameters
string$titleA title string to describe the question.
string$commentA comment string to describe the question.
string$authorA string containing the name of the questions author.
integer$ownerA numerical ID to identify the owner/creator.
string$questionThe question string of the single choice question.
Returns
\assErrorText

Definition at line 41 of file class.assErrorText.php.

47 {
49 $this->errortext = '';
50 $this->textsize = 100.0;
51 $this->errordata = array();
52 }
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc

References assQuestion\$author, assQuestion\$comment, assQuestion\$owner, assQuestion\$question, assQuestion\$title, and ILIAS\GlobalScreen\Provider\__construct().

+ Here is the call graph for this function:

Member Function Documentation

◆ __get()

assErrorText::__get (   $value)

Object getter.

Reimplemented from assQuestion.

Definition at line 1063 of file class.assErrorText.php.

1064 {
1065 switch ($value) {
1066 case "errortext":
1067 return $this->getErrorText();
1068 break;
1069 case "textsize":
1070 return $this->getTextSize();
1071 break;
1072 case "points_wrong":
1073 return $this->getPointsWrong();
1074 break;
1075 default:
1076 return parent::__get($value);
1077 break;
1078 }
1079 }
getTextSize()
Set text size in percent.
getErrorText()
Get error text.
getPointsWrong()
Get wrong points.

References getErrorText(), getPointsWrong(), and getTextSize().

+ Here is the call graph for this function:

◆ __set()

assErrorText::__set (   $key,
  $value 
)

Object setter.

Reimplemented from assQuestion.

Definition at line 1084 of file class.assErrorText.php.

1085 {
1086 switch ($key) {
1087 case "errortext":
1088 $this->setErrorText($value);
1089 break;
1090 case "textsize":
1091 $this->setTextSize($value);
1092 break;
1093 case "points_wrong":
1094 $this->setPointsWrong($value);
1095 break;
1096 default:
1097 parent::__set($key, $value);
1098 break;
1099 }
1100 }
setTextSize($a_value)
Set text size in percent.
setErrorText($a_value)
Set error text.
setPointsWrong($a_value)
Set wrong points.

References setErrorText(), setPointsWrong(), and setTextSize().

+ Here is the call graph for this function:

◆ addErrorData()

assErrorText::addErrorData (   $text_wrong,
  $text_correct,
  $points 
)

Definition at line 980 of file class.assErrorText.php.

981 {
982 include_once "./Modules/TestQuestionPool/classes/class.assAnswerErrorText.php";
983 array_push($this->errordata, new assAnswerErrorText($text_wrong, $text_correct, $points));
984 }
Class for error text answers.

References assQuestion\$points.

◆ calculateReachedPoints()

assErrorText::calculateReachedPoints (   $active_id,
  $pass = null,
  $authorizedSolution = true,
  $returndetails = false 
)

Returns the points, a learner has reached answering the question.

The points are calculated from the given answers.

@access public

Parameters
integer$active_id
integer$pass
boolean$returndetails(deprecated !!)
Returns
integer/array $points/$details (array $details is deprecated !!)

Reimplemented from assQuestion.

Definition at line 340 of file class.assErrorText.php.

341 {
342 if ($returndetails) {
343 throw new ilTestException('return details not implemented for ' . __METHOD__);
344 }
345
346 global $DIC;
347 $ilDB = $DIC['ilDB'];
348
349 /* First get the positions which were selected by the user. */
350 $positions = array();
351 if (is_null($pass)) {
352 $pass = $this->getSolutionMaxPass($active_id);
353 }
354 $result = $this->getCurrentSolutionResultSet($active_id, $pass, $authorizedSolution);
355
356 while ($row = $ilDB->fetchAssoc($result)) {
357 array_push($positions, $row['value1']);
358 }
359 $points = $this->getPointsForSelectedPositions($positions);
360 return $points;
361 }
$result
getPointsForSelectedPositions($positions)
getCurrentSolutionResultSet($active_id, $pass, $authorized=true)
Get a restulset for the current user solution for a this question by active_id and pass.
getSolutionMaxPass($active_id)
Returns the maximum pass a users question solution.
Base Exception for all Exceptions relating to Modules/Test.
global $DIC
Definition: goto.php:24
global $ilDB

References $DIC, $ilDB, $pass, assQuestion\$points, $result, assQuestion\getCurrentSolutionResultSet(), getPointsForSelectedPositions(), and assQuestion\getSolutionMaxPass().

+ Here is the call graph for this function:

◆ calculateReachedPointsFromPreviewSession()

assErrorText::calculateReachedPointsFromPreviewSession ( ilAssQuestionPreviewSession  $previewSession)

Reimplemented from assQuestion.

Definition at line 363 of file class.assErrorText.php.

364 {
365 $reachedPoints = $this->getPointsForSelectedPositions($previewSession->getParticipantsSolution());
366 $reachedPoints = $this->deductHintPointsFromReachedPoints($previewSession, $reachedPoints);
367 return $this->ensureNonNegativePoints($reachedPoints);
368 }
deductHintPointsFromReachedPoints(ilAssQuestionPreviewSession $previewSession, $reachedPoints)
ensureNonNegativePoints($points)

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

+ Here is the call graph for this function:

◆ copyObject()

assErrorText::copyObject (   $target_questionpool_id,
  $title = "" 
)

Copies an object.

Definition at line 250 of file class.assErrorText.php.

251 {
252 if ($this->id <= 0) {
253 // The question has not been saved. It cannot be duplicated
254 return;
255 }
256 // duplicate the question in database
257
258 $thisId = $this->getId();
259 $thisObjId = $this->getObjId();
260
261 $clone = $this;
262 include_once("./Modules/TestQuestionPool/classes/class.assQuestion.php");
264 $clone->id = -1;
265 $clone->setObjId($target_questionpool_id);
266 if ($title) {
267 $clone->setTitle($title);
268 }
269 $clone->saveToDb();
270
271 // copy question page content
272 $clone->copyPageOfQuestion($original_id);
273 // copy XHTML media objects
274 $clone->copyXHTMLMediaObjectsOfQuestion($original_id);
275
276 $clone->onCopy($thisObjId, $thisId, $clone->getObjId(), $clone->getId());
277
278 return $clone->id;
279 }
static _getOriginalId($question_id)
Returns the original id of a question.
getId()
Gets the id of the assQuestion object.
getObjId()
Get the object id of the container object.

References assQuestion\$original_id, assQuestion\$title, assQuestion\_getOriginalId(), assQuestion\getId(), and assQuestion\getObjId().

+ Here is the call graph for this function:

◆ createErrorTextExport()

assErrorText::createErrorTextExport (   $selections = null)

Definition at line 769 of file class.assErrorText.php.

770 {
771 $counter = 0;
772 $errorcounter = 0;
773 include_once "./Services/Utilities/classes/class.ilStr.php";
774 if (!is_array($selections)) {
775 $selections = array();
776 }
777 $textarray = preg_split("/[\n\r]+/", $this->getErrorText());
778 foreach ($textarray as $textidx => $text) {
779 $items = preg_split("/\s+/", $text);
780 foreach ($items as $idx => $item) {
781 if (($posHash = strpos($item, '#')) === 0
782 || ($posOpeningBrackets = strpos($item, '((')) === 0
783 || ($posClosingBrackets = strpos($item, '))')) !== false) {
784 /* (Word|Passage)-Marking delimiter found. */
785
786 if ($posHash !== false) {
787 $item = ilStr::substr($item, 1, ilStr::strlen($item) - 1);
788 } elseif ($posOpeningBrackets !== false) {
789 $item = ilStr::substr($item, 2, ilStr::strlen($item) - 2);
790
791 /* Sometimes a closing bracket group needs
792 to be removed as well. */
793 if (strpos($item, '))') !== false) {
794 $item = ilStr::substr($item, 0, ilStr::strlen($item) - 2);
795 }
796 } else {
797 $appendComma = "";
798 if ($item[$posClosingBrackets + 2] == ',') {
799 $appendComma = ",";
800 }
801
802 $item = ilStr::substr($item, 0, $posClosingBrackets) . $appendComma;
803 }
804 }
805
806 $word = "";
807 if (in_array($counter, $selections)) {
808 $word .= '#';
809 }
810 $word .= ilUtil::prepareFormOutput($item);
811 if (in_array($counter, $selections)) {
812 $word .= '#';
813 }
814 $items[$idx] = $word;
815 $counter++;
816 }
817 $textarray[$textidx] = join(" ", $items);
818 }
819 return join("\n", $textarray);
820 }
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms @access public

References getErrorText(), and ilUtil\prepareFormOutput().

Referenced by setExportDetailsXLS().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createErrorTextOutput()

assErrorText::createErrorTextOutput (   $selections = null,
  $graphicalOutput = false,
  $correct_solution = false,
  $use_link_tags = true 
)

Definition at line 597 of file class.assErrorText.php.

598 {
599 $counter = 0;
600 $errorcounter = 0;
601 include_once "./Services/Utilities/classes/class.ilStr.php";
602 if (!is_array($selections)) {
603 $selections = array();
604 }
605 $textarray = preg_split("/[\n\r]+/", $this->getErrorText());
606
607 foreach ($textarray as $textidx => $text) {
608 $in_passage = false;
609 $passage_end = false;
610 $items = preg_split("/\s+/", $text);
611 foreach ($items as $idx => $item) {
612 $img = '';
613
614 if (
615 ($posHash = strpos($item, '#')) === 0 ||
616 ($posOpeningBrackets = strpos($item, '((')) === 0 ||
617 ($posClosingBrackets = strpos($item, '))')) !== false
618 ) {
619 /* (Word|Passage)-Marking delimiter found. */
620
621 if ($posHash !== false) {
622 $item = ilStr::substr($item, 1, ilStr::strlen($item) - 1);
623 $passage_end = false;
624 } elseif ($posOpeningBrackets !== false) {
625 $in_passage = true;
626 $passage_start_idx = $counter;
627 $items_in_passage = array();
628 $passage_end = false;
629 $item = ilStr::substr($item, 2, ilStr::strlen($item) - 2);
630
631 /* Sometimes a closing bracket group needs
632 to be removed as well. */
633 if (strpos($item, '))') !== false) {
634 $item = str_replace("))", "", $item);
635 $passage_end = true;
636 }
637 } else {
638 $passage_end = true;
639 $item = str_replace("))", "", $item);
640 }
641
642 if ($correct_solution && !$in_passage) {
643 $errorobject = $this->errordata[$errorcounter];
644 if (is_object($errorobject)) {
645 $item = strlen($errorobject->text_correct) ? $errorobject->text_correct : '&nbsp;';
646 }
647 $errorcounter++;
648 }
649 }
650
651 if ($in_passage && !$passage_end) {
652 $items_in_passage[$idx] = $item;
653 $items[$idx] = '';
654 $counter++;
655 continue;
656 }
657
658 if ($in_passage && $passage_end) {
659 $in_passage = false;
660 $passage_end = false;
661 if ($correct_solution) {
662 $class = (
663 $this->isTokenSelected($counter, $selections) ?
664 "ilc_qetitem_ErrorTextSelected" : "ilc_qetitem_ErrorTextItem"
665 );
666
667 $errorobject = $this->errordata[$errorcounter];
668 if (is_object($errorobject)) {
669 $item = strlen($errorobject->text_correct) ? $errorobject->text_correct : '&nbsp;';
670 }
671 $errorcounter++;
672 $items[$idx] = $this->getErrorTokenHtml($item, $class, $use_link_tags) . $img;
673 $counter++;
674 continue;
675 }
676
677 $group_selected = true;
678 if ($graphicalOutput) {
679 $start_idx = $passage_start_idx;
680 foreach ($items_in_passage as $tmp_idx => $tmp_item) {
681 if (!$this->isTokenSelected($start_idx, $selections)) {
682 $group_selected = false;
683 break;
684 }
685
686 ++$start_idx;
687 }
688 if ($group_selected) {
689 if (!$this->isTokenSelected($counter, $selections)) {
690 $group_selected = false;
691 }
692 }
693 }
694
695 $item_stack = array();
696 $start_idx = $passage_start_idx;
697 foreach ($items_in_passage as $tmp_idx => $tmp_item) {
698 $class = (
699 $this->isTokenSelected($counter, $selections) ?
700 "ilc_qetitem_ErrorTextSelected" : "ilc_qetitem_ErrorTextItem"
701 );
702 $item_stack[] = $this->getErrorTokenHtml($tmp_item, $class, $use_link_tags) . $img;
703 $start_idx++;
704 }
705 $class = (
706 $this->isTokenSelected($counter, $selections) ?
707 "ilc_qetitem_ErrorTextSelected" : "ilc_qetitem_ErrorTextItem"
708 );
709 if ($graphicalOutput) {
710 if ($group_selected) {
711 $img = ' <img src="' . ilUtil::getImagePath("icon_ok.svg") . '" alt="' . $this->lng->txt("answer_is_right") . '" title="' . $this->lng->txt("answer_is_right") . '" /> ';
712 } else {
713 $img = ' <img src="' . ilUtil::getImagePath("icon_not_ok.svg") . '" alt="' . $this->lng->txt("answer_is_wrong") . '" title="' . $this->lng->txt("answer_is_wrong") . '" /> ';
714 }
715 }
716
717 $item_stack[] = $this->getErrorTokenHtml($item, $class, $use_link_tags) . $img;
718 $item_stack = trim(implode(" ", $item_stack));
719 $item_stack = strlen($item_stack) ? $item_stack : '&nbsp;';
720
721 if ($graphicalOutput) {
722 $items[$idx] = '<span class="selGroup">' . $item_stack . '</span>';
723 } else {
724 $items[$idx] = $item_stack;
725 }
726
727 $counter++;
728 continue;
729 }
730
731 // Errors markes with #, group errors (()) are handled above
732 $class = 'ilc_qetitem_ErrorTextItem';
733 $img = '';
734 if ($this->isTokenSelected($counter, $selections)) {
735 $class = "ilc_qetitem_ErrorTextSelected";
736 if ($graphicalOutput) {
737 if ($this->getPointsForSelectedPositions(array($counter)) > 0) {
738 $img = ' <img src="' . ilUtil::getImagePath("icon_ok.svg") . '" alt="' . $this->lng->txt("answer_is_right") . '" title="' . $this->lng->txt("answer_is_right") . '" /> ';
739 } else {
740 $img = ' <img src="' . ilUtil::getImagePath("icon_not_ok.svg") . '" alt="' . $this->lng->txt("answer_is_wrong") . '" title="' . $this->lng->txt("answer_is_wrong") . '" /> ';
741 }
742 }
743 }
744
745 $items[$idx] = $this->getErrorTokenHtml($item, $class, $use_link_tags) . $img;
746 $counter++;
747 }
748 $textarray[$textidx] = '<p>' . implode(" ", $items) . '</p>';
749 }
750
751 return implode("\n", $textarray);
752 }
getErrorTokenHtml($item, $class, $useLinkTags)
isTokenSelected($counter, array $selection)
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
$img
Definition: imgupload.php:57

References $img, getErrorText(), getErrorTokenHtml(), ilUtil\getImagePath(), getPointsForSelectedPositions(), and isTokenSelected().

+ Here is the call graph for this function:

◆ createNewOriginalFromThisDuplicate()

assErrorText::createNewOriginalFromThisDuplicate (   $targetParentId,
  $targetQuestionTitle = "" 
)

Definition at line 281 of file class.assErrorText.php.

282 {
283 if ($this->id <= 0) {
284 // The question has not been saved. It cannot be duplicated
285 return;
286 }
287
288 include_once("./Modules/TestQuestionPool/classes/class.assQuestion.php");
289
290 $sourceQuestionId = $this->id;
291 $sourceParentId = $this->getObjId();
292
293 // duplicate the question in database
294 $clone = $this;
295 $clone->id = -1;
296
297 $clone->setObjId($targetParentId);
298
299 if ($targetQuestionTitle) {
300 $clone->setTitle($targetQuestionTitle);
301 }
302
303 $clone->saveToDb();
304 // copy question page content
305 $clone->copyPageOfQuestion($sourceQuestionId);
306 // copy XHTML media objects
307 $clone->copyXHTMLMediaObjectsOfQuestion($sourceQuestionId);
308
309 $clone->onCopy($sourceParentId, $sourceQuestionId, $clone->getObjId(), $clone->getId());
310
311 return $clone->id;
312 }

References assQuestion\$id, and assQuestion\getObjId().

+ Here is the call graph for this function:

◆ duplicate()

assErrorText::duplicate (   $for_test = true,
  $title = "",
  $author = "",
  $owner = "",
  $testObjId = null 
)

Duplicates the object.

Reimplemented from assQuestion.

Definition at line 203 of file class.assErrorText.php.

204 {
205 if ($this->id <= 0) {
206 // The question has not been saved. It cannot be duplicated
207 return;
208 }
209 // duplicate the question in database
210 $this_id = $this->getId();
211 $thisObjId = $this->getObjId();
212
213 $clone = $this;
214 include_once("./Modules/TestQuestionPool/classes/class.assQuestion.php");
216 $clone->id = -1;
217
218 if ((int) $testObjId > 0) {
219 $clone->setObjId($testObjId);
220 }
221
222 if ($title) {
223 $clone->setTitle($title);
224 }
225
226 if ($author) {
227 $clone->setAuthor($author);
228 }
229 if ($owner) {
230 $clone->setOwner($owner);
231 }
232
233 if ($for_test) {
234 $clone->saveToDb($original_id);
235 } else {
236 $clone->saveToDb();
237 }
238 // copy question page content
239 $clone->copyPageOfQuestion($this_id);
240 // copy XHTML media objects
241 $clone->copyXHTMLMediaObjectsOfQuestion($this_id);
242
243 $clone->onDuplicate($thisObjId, $this_id, $clone->getObjId(), $clone->getId());
244 return $clone->id;
245 }

References assQuestion\$author, assQuestion\$original_id, assQuestion\$owner, assQuestion\$title, assQuestion\_getOriginalId(), assQuestion\getId(), and assQuestion\getObjId().

+ Here is the call graph for this function:

◆ flushErrorData()

assErrorText::flushErrorData ( )

Flush error data.

Definition at line 975 of file class.assErrorText.php.

976 {
977 $this->errordata = array();
978 }

◆ fromXML()

assErrorText::fromXML ( $item,
$questionpool_id,
$tst_id,
$tst_object,
$question_counter,
$import_mapping,
array  $solutionhints = [] 
)

Creates a question from a QTI file.

Receives parameters from a QTI parser and creates a valid ILIAS question object

Parameters
object$itemThe QTI item object
integer$questionpool_idThe id of the parent questionpool
integer$tst_idThe id of the parent test if the question is part of a test
object$tst_objectA reference to the parent test object
integer$question_counterA reference to a question counter to count the questions of an imported question pool
array$import_mappingAn array containing references to included ILIAS objects

Reimplemented from assQuestion.

Definition at line 505 of file class.assErrorText.php.

506 {
507 include_once "./Modules/TestQuestionPool/classes/import/qti12/class.assErrorTextImport.php";
508 $import = new assErrorTextImport($this);
509 $import->fromXML($item, $questionpool_id, $tst_id, $tst_object, $question_counter, $import_mapping);
510 }
Class for error text question imports.

◆ getAdditionalTableName()

assErrorText::getAdditionalTableName ( )

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

Returns
string The additional table name

Reimplemented from assQuestion.

Definition at line 444 of file class.assErrorText.php.

445 {
446 return "qpl_qst_errortext";
447 }

Referenced by loadFromDb(), and saveAdditionalQuestionDataToDb().

+ Here is the caller graph for this function:

◆ getAnswerTableName()

assErrorText::getAnswerTableName ( )

Returns the name of the answer table in the database.

Returns
string The answer table name

Reimplemented from assQuestion.

Definition at line 454 of file class.assErrorText.php.

455 {
456 return "qpl_a_errortext";
457 }

◆ getAvailableAnswerOptions()

assErrorText::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
Returns
array|ASS_AnswerSimple

Implements iQuestionCondition.

Definition at line 1240 of file class.assErrorText.php.

1241 {
1242 $error_text_array = explode(' ', $this->errortext);
1243
1244 if ($index !== null) {
1245 if (array_key_exists($index, $error_text_array)) {
1246 return $error_text_array[$index];
1247 }
1248 return null;
1249 } else {
1250 return $error_text_array;
1251 }
1252 }
$index
Definition: metadata.php:128

References $index.

◆ getBestSelection()

assErrorText::getBestSelection (   $withPositivePointsOnly = true)

Definition at line 822 of file class.assErrorText.php.

823 {
824 $passages = array();
825 $words = array();
826 $counter = 0;
827 $errorcounter = 0;
828 $textarray = preg_split("/[\n\r]+/", $this->getErrorText());
829 foreach ($textarray as $textidx => $text) {
830 $items = preg_split("/\s+/", $text);
831 $inPassage = false;
832 foreach ($items as $word) {
833 $points = $this->getPointsWrong();
834 $isErrorItem = false;
835 if (strpos($word, '#') === 0) {
836 /* Word selection detected */
837 $errorobject = $this->errordata[$errorcounter];
838 if (is_object($errorobject)) {
839 $points = $errorobject->points;
840 $isErrorItem = true;
841 }
842 $errorcounter++;
843 } elseif (($posOpeningBracket = strpos($word, '((')) === 0
844 || ($posClosingBracket = strpos($word, '))')) !== false
845 || $inPassage) {
846 /* Passage selection detected */
847
848 if ($posOpeningBracket !== false) {
849 $passages[] = array('begin_pos' => $counter, 'cnt_words' => 0);
850 $inPassage = true;
851 } elseif ($posClosingBracket !== false) {
852 $inPassage = false;
853 $cur_pidx = count($passages) - 1;
854 $passages[$cur_pidx]['end_pos'] = $counter;
855
856 $errorobject = $this->errordata[$errorcounter];
857 if (is_object($errorobject)) {
858 $passages[$cur_pidx]['score'] = $errorobject->points;
859 $passages[$cur_pidx]['isError'] = true;
860 }
861
862 $errorcounter++;
863 }
864
865 $cur_pidx = count($passages) - 1;
866 $passages[$cur_pidx]['cnt_words']++;
867 $points = 0;
868 }
869
870 $words[$counter] = array("word" => $word, "points" => $points, "isError" => $isErrorItem);
871 $counter++;
872 }
873 }
874
875 $selections = array();
876 foreach ($passages as $cnt => $pdata) {
877 if (!$withPositivePointsOnly && $pdata['isError'] || $withPositivePointsOnly && $pdata['score'] > 0) {
878 $indexes = range($pdata['begin_pos'], $pdata['end_pos']);
879 $selections[$pdata['begin_pos']] = $indexes;
880 }
881 }
882
883 foreach ($words as $idx => $word) {
884 if (!$withPositivePointsOnly && $word['isError'] || $withPositivePointsOnly && $word['points'] > 0) {
885 $selections[$idx] = array($idx);
886 }
887 }
888
889 ksort($selections);
890
891 $selections = array_values($selections);
892
893 return $selections;
894 }

References assQuestion\$points, getErrorText(), and getPointsWrong().

+ Here is the call graph for this function:

◆ getBestSolution()

assErrorText::getBestSolution (   $active_id,
  $pass 
)

Returns the best solution for a given pass of a participant.

Returns
array An associated array containing the best solution

Definition at line 530 of file class.assErrorText.php.

531 {
532 $user_solution = array();
533 return $user_solution;
534 }

◆ getErrorData()

assErrorText::getErrorData ( )

Get error data.

Returns
array Error data

Definition at line 991 of file class.assErrorText.php.

992 {
993 return $this->errordata;
994 }

References $errordata.

Referenced by toJSON().

+ Here is the caller graph for this function:

◆ getErrorsFromText()

assErrorText::getErrorsFromText (   $a_text = "")

Definition at line 536 of file class.assErrorText.php.

537 {
538 if (strlen($a_text) == 0) {
539 $a_text = $this->getErrorText();
540 }
541
542 /* Workaround to allow '(' and ')' in passages.
543 The beginning- and ending- Passage delimiters are
544 replaced by a ~ (Tilde) symbol. */
545 $a_text = str_replace(array("((", "))"), array("~", "~"), $a_text);
546
547 /* Match either Passage delimited by double brackets
548 or single words marked with a hash (#). */
549 $r_passage = "/(~([^~]+)~|#([^\s]+))/";
550
551 preg_match_all($r_passage, $a_text, $matches);
552
553 if (is_array($matches[0]) && !empty($matches[0])) {
554 /* At least one match. */
555
556 /* We need only groups 2 and 3, respectively representing
557 passage matches and single word matches. */
558 $matches = array_intersect_key($matches, array(2 => '', 3 => ''));
559
560 /* Remove empty values. */
561 $matches[2] = array_diff($matches[2], array(''));
562 $matches[3] = array_diff($matches[3], array(''));
563
564 return array(
565 "passages" => $matches[2],
566 "words" => $matches[3],);
567 }
568
569 return array();
570 }

References getErrorText().

+ Here is the call graph for this function:

◆ getErrorText()

assErrorText::getErrorText ( )

Get error text.

Returns
string Error text

Definition at line 1001 of file class.assErrorText.php.

1002 {
1003 return $this->errortext;
1004 }

References $errortext.

Referenced by __get(), createErrorTextExport(), createErrorTextOutput(), getBestSelection(), getErrorsFromText(), getPointsForSelectedPositions(), saveAdditionalQuestionDataToDb(), and toJSON().

+ Here is the caller graph for this function:

◆ getErrorTokenHtml()

assErrorText::getErrorTokenHtml (   $item,
  $class,
  $useLinkTags 
)
private
Parameters
$item
$class
Returns
string

Definition at line 1259 of file class.assErrorText.php.

1260 {
1261 if ($useLinkTags) {
1262 return '<a class="' . $class . '" href="#">' . ($item == '&nbsp;' ? $item : ilUtil::prepareFormOutput($item)) . '</a>';
1263 }
1264
1265 return '<span class="' . $class . '">' . ($item == '&nbsp;' ? $item : ilUtil::prepareFormOutput($item)) . '</span>';
1266 }

References ilUtil\prepareFormOutput().

Referenced by createErrorTextOutput().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getExpressionTypes()

◆ getMaximumPoints()

assErrorText::getMaximumPoints ( )

Returns the maximum points, a learner can reach answering the question.

See also
$points

Reimplemented from assQuestion.

Definition at line 319 of file class.assErrorText.php.

320 {
321 $maxpoints = 0.0;
322 foreach ($this->errordata as $object) {
323 if ($object->points > 0) {
324 $maxpoints += $object->points;
325 }
326 }
327 return $maxpoints;
328 }

Referenced by isComplete().

+ Here is the caller graph for this function:

◆ getOperators()

assErrorText::getOperators (   $expression)

Get all available operations for a specific question.

Parameters
string$expression

Implements iQuestionCondition.

Definition at line 1177 of file class.assErrorText.php.

1178 {
1179 require_once "./Modules/TestQuestionPool/classes/class.ilOperatorsExpressionMapping.php";
1181 }

References ilOperatorsExpressionMapping\getOperatorsByExpression().

+ Here is the call graph for this function:

◆ getPointsForSelectedPositions()

assErrorText::getPointsForSelectedPositions (   $positions)
protected

Definition at line 896 of file class.assErrorText.php.

897 {
898 $passages = array();
899 $words = array();
900 $counter = 0;
901 $errorcounter = 0;
902 $textarray = preg_split("/[\n\r]+/", $this->getErrorText());
903 foreach ($textarray as $textidx => $text) {
904 $items = preg_split("/\s+/", $text);
905 $inPassage = false;
906 foreach ($items as $word) {
907 $points = $this->getPointsWrong();
908 if (strpos($word, '#') === 0) {
909 /* Word selection detected */
910 $errorobject = $this->errordata[$errorcounter];
911 if (is_object($errorobject)) {
912 $points = $errorobject->points;
913 }
914 $errorcounter++;
915 } elseif (($posOpeningBracket = strpos($word, '((')) === 0
916 || ($posClosingBracket = strpos($word, '))')) !== false
917 || $inPassage) {
918 /* Passage selection detected */
919
920 if ($posOpeningBracket !== false) {
921 $passages[] = array('begin_pos' => $counter, 'cnt_words' => 0);
922 $inPassage = true;
923 } elseif ($posClosingBracket !== false) {
924 $inPassage = false;
925 $cur_pidx = count($passages) - 1;
926 $passages[$cur_pidx]['end_pos'] = $counter;
927
928 $errorobject = $this->errordata[$errorcounter];
929 if (is_object($errorobject)) {
930 $passages[$cur_pidx]['score'] = $errorobject->points;
931 }
932 $errorcounter++;
933 }
934
935 $cur_pidx = count($passages) - 1;
936 $passages[$cur_pidx]['cnt_words']++;
937 $points = 0;
938 }
939
940 $words[$counter] = array("word" => $word, "points" => $points);
941 $counter++;
942 }
943 }
944
945 /* Calculate reached points */
946 $total = 0;
947 foreach ($positions as $position) {
948 /* First iterate through positions
949 to identify single-word-selections. */
950
951 $total += $words[$position]['points'];
952 }
953
954 foreach ($passages as $cnt => $p_data) {
955 /* Iterate through configured passages to check
956 wether the entire passage is selected or not.
957 The total points is incremented by the passage's
958 score only if the entire passage is selected. */
959 $isSelected = in_array($p_data['begin_pos'], $positions);
960
961 for ($i = 0; $i < $p_data['cnt_words']; $i++) {
962 $current_pos = $p_data['begin_pos'] + $i;
963 $isSelected = $isSelected && in_array($current_pos, $positions);
964 }
965
966 $total += $isSelected ? $p_data['score'] : 0;
967 }
968
969 return $total;
970 }
$total
Definition: Utf8Test.php:87
$i
Definition: metadata.php:24

References $i, assQuestion\$points, $total, getErrorText(), and getPointsWrong().

Referenced by calculateReachedPoints(), calculateReachedPointsFromPreviewSession(), and createErrorTextOutput().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPointsWrong()

assErrorText::getPointsWrong ( )

Get wrong points.

Returns
double Points for wrong selection

Definition at line 1045 of file class.assErrorText.php.

1046 {
1047 return $this->points_wrong;
1048 }

References $points_wrong.

Referenced by __get(), getBestSelection(), getPointsForSelectedPositions(), and saveAdditionalQuestionDataToDb().

+ Here is the caller graph for this function:

◆ getQuestionType()

assErrorText::getQuestionType ( )

Returns the question type of the question.

Returns
integer The question type of the question

Reimplemented from assQuestion.

Definition at line 434 of file class.assErrorText.php.

435 {
436 return "assErrorText";
437 }

Referenced by toJSON().

+ Here is the caller graph for this function:

◆ getRTETextWithMediaObjects()

assErrorText::getRTETextWithMediaObjects ( )

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

Reimplemented from assQuestion.

Definition at line 463 of file class.assErrorText.php.

464 {
465 $text = parent::getRTETextWithMediaObjects();
466 return $text;
467 }

◆ getTextSize()

assErrorText::getTextSize ( )

Set text size in percent.

Returns
double Text size in percent

Definition at line 1021 of file class.assErrorText.php.

1022 {
1023 return $this->textsize;
1024 }

References $textsize.

Referenced by __get(), and saveAdditionalQuestionDataToDb().

+ Here is the caller graph for this function:

◆ isComplete()

assErrorText::isComplete ( )

Returns true, if a single choice question is complete for use.

Returns
boolean True, if the single choice question is complete for use, otherwise false

Reimplemented from assQuestion.

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

60 {
61 if (strlen($this->title)
62 && ($this->author)
63 && ($this->question)
64 && ($this->getMaximumPoints() > 0)) {
65 return true;
66 } else {
67 return false;
68 }
69 }
getMaximumPoints()
Returns the maximum points, a learner can reach answering the question.

References getMaximumPoints().

+ Here is the call graph for this function:

◆ isTokenSelected()

assErrorText::isTokenSelected (   $counter,
array  $selection 
)
protected

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

755 {
756 foreach ($selection as $data) {
757 if (!is_array($data)) {
758 if ($counter == $data) {
759 return true;
760 }
761 } elseif (in_array($counter, $data)) {
762 return true;
763 }
764 }
765
766 return false;
767 }
$data
Definition: storeScorm.php:23

References $data.

Referenced by createErrorTextOutput().

+ Here is the caller graph for this function:

◆ loadFromDb()

assErrorText::loadFromDb (   $question_id)

Loads the object from the database.

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

Reimplemented from assQuestion.

Definition at line 145 of file class.assErrorText.php.

146 {
147 global $DIC;
148 $ilDB = $DIC['ilDB'];
149
150 $result = $ilDB->queryF(
151 "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",
152 array("integer"),
153 array($question_id)
154 );
155 if ($result->numRows() == 1) {
156 $data = $ilDB->fetchAssoc($result);
157 $this->setId($question_id);
158 $this->setObjId($data["obj_fi"]);
159 $this->setTitle($data["title"]);
160 $this->setComment($data["description"]);
161 $this->setOriginalId($data["original_id"]);
162 $this->setNrOfTries($data['nr_of_tries']);
163 $this->setAuthor($data["author"]);
164 $this->setPoints($data["points"]);
165 $this->setOwner($data["owner"]);
166 include_once("./Services/RTE/classes/class.ilRTE.php");
167 $this->setQuestion(ilRTE::_replaceMediaObjectImageSrc($data["question_text"], 1));
168 $this->setErrorText($data["errortext"]);
169 $this->setTextSize($data["textsize"]);
170 $this->setPointsWrong($data["points_wrong"]);
171 $this->setEstimatedWorkingTime(substr($data["working_time"], 0, 2), substr($data["working_time"], 3, 2), substr($data["working_time"], 6, 2));
172
173 try {
177 }
178
179 try {
180 $this->setAdditionalContentEditingMode($data['add_cont_edit_mode']);
182 }
183 }
184
185 $result = $ilDB->queryF(
186 "SELECT * FROM qpl_a_errortext WHERE question_fi = %s ORDER BY sequence ASC",
187 array('integer'),
188 array($question_id)
189 );
190 include_once "./Modules/TestQuestionPool/classes/class.assAnswerErrorText.php";
191 if ($result->numRows() > 0) {
192 while ($data = $ilDB->fetchAssoc($result)) {
193 array_push($this->errordata, new assAnswerErrorText($data["text_wrong"], $data["text_correct"], $data["points"]));
194 }
195 }
196
197 parent::loadFromDb($question_id);
198 }
getAdditionalTableName()
Returns the name of the additional question data table in the database.
setId($id=-1)
Sets the id of the assQuestion object.
setOriginalId($original_id)
setObjId($obj_id=0)
Set the object id of the container object.
setTitle($title="")
Sets the title string of the assQuestion object.
setOwner($owner="")
Sets the creator/owner ID of the assQuestion object.
setEstimatedWorkingTime($hour=0, $min=0, $sec=0)
Sets the estimated working time of a question from given hour, minute and second.
setAuthor($author="")
Sets the authors name of the assQuestion object.
setLifecycle(ilAssQuestionLifecycle $lifecycle)
setPoints($a_points)
Sets the maximum available points for the question.
setComment($comment="")
Sets the comment string of the assQuestion object.
setNrOfTries($a_nr_of_tries)
setAdditionalContentEditingMode($additinalContentEditingMode)
setter for additional content editing mode for this question
setQuestion($question="")
Sets the question string of the question object.
static _replaceMediaObjectImageSrc($a_text, $a_direction=0, $nic=IL_INST_ID)
Replaces image source from mob image urls with the mob id or replaces mob id with the correct image s...

References $data, $DIC, Vendor\Package\$e, $ilDB, $result, ilRTE\_replaceMediaObjectImageSrc(), getAdditionalTableName(), ilAssQuestionLifecycle\getDraftInstance(), ilAssQuestionLifecycle\getInstance(), assQuestion\setAdditionalContentEditingMode(), assQuestion\setAuthor(), assQuestion\setComment(), setErrorText(), assQuestion\setEstimatedWorkingTime(), assQuestion\setId(), assQuestion\setLifecycle(), assQuestion\setNrOfTries(), assQuestion\setObjId(), assQuestion\setOriginalId(), assQuestion\setOwner(), assQuestion\setPoints(), setPointsWrong(), assQuestion\setQuestion(), setTextSize(), and assQuestion\setTitle().

+ Here is the call graph for this function:

◆ saveAdditionalQuestionDataToDb()

assErrorText::saveAdditionalQuestionDataToDb ( )

Saves the data for the additional data table.

This method uses the ugly DELETE-INSERT. Here, this does no harm.

Implements ilObjQuestionScoringAdjustable.

Definition at line 116 of file class.assErrorText.php.

117 {
118 global $DIC;
119 $ilDB = $DIC['ilDB'];
120 // save additional data
121 $ilDB->manipulateF(
122 "DELETE FROM " . $this->getAdditionalTableName() . " WHERE question_fi = %s",
123 array( "integer" ),
124 array( $this->getId() )
125 );
126
127 $ilDB->manipulateF(
128 "INSERT INTO " . $this->getAdditionalTableName() . " (question_fi, errortext, textsize, points_wrong) VALUES (%s, %s, %s, %s)",
129 array("integer", "text", "float", "float"),
130 array(
131 $this->getId(),
132 $this->getErrorText(),
133 $this->getTextSize(),
134 $this->getPointsWrong()
135 )
136 );
137 }

References $DIC, $ilDB, getAdditionalTableName(), getErrorText(), assQuestion\getId(), getPointsWrong(), and getTextSize().

Referenced by saveToDb().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ saveAnswerSpecificDataToDb()

assErrorText::saveAnswerSpecificDataToDb ( )

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

Returns
mixed

Implements ilObjAnswerScoringAdjustable.

Definition at line 83 of file class.assErrorText.php.

84 {
85 global $DIC;
86 $ilDB = $DIC['ilDB'];
87 $ilDB->manipulateF(
88 "DELETE FROM qpl_a_errortext WHERE question_fi = %s",
89 array( 'integer' ),
90 array( $this->getId() )
91 );
92
93 $sequence = 0;
94 foreach ($this->errordata as $object) {
95 $next_id = $ilDB->nextId('qpl_a_errortext');
96 $ilDB->manipulateF(
97 "INSERT INTO qpl_a_errortext (answer_id, question_fi, text_wrong, text_correct, points, sequence) VALUES (%s, %s, %s, %s, %s, %s)",
98 array( 'integer', 'integer', 'text', 'text', 'float', 'integer' ),
99 array(
100 $next_id,
101 $this->getId(),
102 $object->text_wrong,
103 $object->text_correct,
104 $object->points,
105 $sequence++
106 )
107 );
108 }
109 }

References $DIC, $ilDB, and assQuestion\getId().

Referenced by saveToDb().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ savePreviewData()

assErrorText::savePreviewData ( ilAssQuestionPreviewSession  $previewSession)

Reimplemented from assQuestion.

Definition at line 418 of file class.assErrorText.php.

419 {
420 if (strlen($_POST["qst_" . $this->getId()])) {
421 $selection = explode(',', $_POST["qst_{$this->getId()}"]);
422 } else {
423 $selection = array();
424 }
425
426 $previewSession->setParticipantsSolution($selection);
427 }
$_POST["username"]

References $_POST, assQuestion\getId(), and ilAssQuestionPreviewSession\setParticipantsSolution().

+ Here is the call graph for this function:

◆ saveToDb()

assErrorText::saveToDb (   $original_id = "")

Saves a the object to the database.

Reimplemented from assQuestion.

Definition at line 75 of file class.assErrorText.php.

76 {
80 parent::saveToDb();
81 }
saveAnswerSpecificDataToDb()
Saves the answer specific records into a question types answer table.
saveAdditionalQuestionDataToDb()
Saves the data for the additional data table.
saveQuestionDataToDb($original_id="")

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

+ Here is the call graph for this function:

◆ saveWorkingData()

assErrorText::saveWorkingData (   $active_id,
  $pass = null,
  $authorized = true 
)

Saves the learners input of the question to the database.

@access public

Parameters
integer$active_idActive id of the user
integer$passTest pass
Returns
boolean $status

Reimplemented from assQuestion.

Definition at line 378 of file class.assErrorText.php.

379 {
380 global $DIC;
381 $ilDB = $DIC['ilDB'];
382 $ilUser = $DIC['ilUser'];
383
384 if (is_null($pass)) {
385 include_once "./Modules/Test/classes/class.ilObjTest.php";
386 $pass = ilObjTest::_getPass($active_id);
387 }
388
389 $entered_values = false;
390
391 $this->getProcessLocker()->executeUserSolutionUpdateLockOperation(function () use (&$entered_values, $active_id, $pass, $authorized) {
392 $this->removeCurrentSolution($active_id, $pass, $authorized);
393
394 if (strlen($_POST["qst_" . $this->getId()])) {
395 $selected = explode(",", $_POST["qst_" . $this->getId()]);
396 foreach ($selected as $position) {
397 $this->saveCurrentSolution($active_id, $pass, $position, null, $authorized);
398 }
399 $entered_values = true;
400 }
401 });
402
403 if ($entered_values) {
404 include_once("./Modules/Test/classes/class.ilObjAssessmentFolder.php");
406 assQuestion::logAction($this->lng->txtlng("assessment", "log_user_entered_values", ilObjAssessmentFolder::_getLogLanguage()), $active_id, $this->getId());
407 }
408 } else {
409 include_once("./Modules/Test/classes/class.ilObjAssessmentFolder.php");
411 assQuestion::logAction($this->lng->txtlng("assessment", "log_user_not_entered_values", ilObjAssessmentFolder::_getLogLanguage()), $active_id, $this->getId());
412 }
413 }
414
415 return true;
416 }
saveCurrentSolution($active_id, $pass, $value1, $value2, $authorized=true, $tstamp=null)
static logAction($logtext="", $active_id="", $question_id="")
Logs an action into the Test&Assessment log.
removeCurrentSolution($active_id, $pass, $authorized=true)
static _getLogLanguage()
retrieve the log language for assessment logging
static _enabledAssessmentLogging()
check wether assessment logging is enabled or not
static _getPass($active_id)
Retrieves the actual pass of a given user for a given test.
$ilUser
Definition: imgupload.php:18

References $_POST, $DIC, $ilDB, $ilUser, $pass, ilObjAssessmentFolder\_enabledAssessmentLogging(), ilObjAssessmentFolder\_getLogLanguage(), ilObjTest\_getPass(), assQuestion\getId(), assQuestion\getProcessLocker(), assQuestion\logAction(), assQuestion\removeCurrentSolution(), and assQuestion\saveCurrentSolution().

+ Here is the call graph for this function:

◆ setErrorData()

assErrorText::setErrorData (   $a_data)

Definition at line 572 of file class.assErrorText.php.

573 {
574 include_once "./Modules/TestQuestionPool/classes/class.assAnswerErrorText.php";
575 $temp = $this->errordata;
576 $this->errordata = array();
577 foreach ($a_data as $err_type => $errors) {
578 /* Iterate through error types (Passages|single words) */
579
580 foreach ($errors as $idx => $error) {
581 /* Iterate through errors of this type. */
582 $text_correct = "";
583 $points = 0.0;
584 foreach ($temp as $object) {
585 if (strcmp($object->text_wrong, $error) == 0) {
586 $text_correct = $object->text_correct;
587 $points = $object->points;
588 continue;
589 }
590 }
591 $this->errordata[$idx] = new assAnswerErrorText($error, $text_correct, $points);
592 }
593 }
594 ksort($this->errordata);
595 }
$errors
Definition: imgupload.php:49

References $errordata, $errors, and assQuestion\$points.

◆ setErrorText()

assErrorText::setErrorText (   $a_value)

Set error text.

Parameters
string$a_valueError text

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

1012 {
1013 $this->errortext = $this->getHtmlQuestionContentPurifier()->purify($a_value ?? '');
1014 }

References assQuestion\getHtmlQuestionContentPurifier().

Referenced by __set(), and loadFromDb().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setExportDetailsXLS()

assErrorText::setExportDetailsXLS (   $worksheet,
  $startrow,
  $active_id,
  $pass 
)

{Creates an Excel worksheet for the detailed cumulated results of this question.

Parameters
object$worksheetReference to the parent excel worksheet
object$startrowStartrow of the output in the excel worksheet
object$active_idActive id of the participant
object$passTest pass
Returns
object
}

Reimplemented from assQuestion.

Definition at line 472 of file class.assErrorText.php.

473 {
474 parent::setExportDetailsXLS($worksheet, $startrow, $active_id, $pass);
475
476 $i = 0;
477 $selections = array();
478 $solutions = &$this->getSolutionValues($active_id, $pass);
479 if (is_array($solutions)) {
480 foreach ($solutions as $solution) {
481 array_push($selections, $solution['value1']);
482 }
483 $errortext_value = join(",", $selections);
484 }
485 $errortext = $this->createErrorTextExport($selections);
486 $i++;
487 $worksheet->setCell($startrow + $i, 2, $errortext);
488 $i++;
489
490 return $startrow + $i + 1;
491 }
createErrorTextExport($selections=null)
getSolutionValues($active_id, $pass=null, $authorized=true)
Loads solutions of a given user from the database an returns it.

References $errortext, $i, $pass, createErrorTextExport(), and assQuestion\getSolutionValues().

+ Here is the call graph for this function:

◆ setPointsWrong()

assErrorText::setPointsWrong (   $a_value)

Set wrong points.

Parameters
double$a_valuePoints for wrong selection

Definition at line 1055 of file class.assErrorText.php.

1056 {
1057 $this->points_wrong = $a_value;
1058 }

Referenced by __set(), and loadFromDb().

+ Here is the caller graph for this function:

◆ setTextSize()

assErrorText::setTextSize (   $a_value)

Set text size in percent.

Parameters
double$a_valuetext size in percent

Definition at line 1031 of file class.assErrorText.php.

1032 {
1033 // in self-assesment-mode value should always be set (and must not be null)
1034 if ($a_value === null) {
1035 $a_value = 100;
1036 }
1037 $this->textsize = $a_value;
1038 }

Referenced by __set(), and loadFromDb().

+ Here is the caller graph for this function:

◆ toJSON()

assErrorText::toJSON ( )

Returns a JSON representation of the question.

Reimplemented from assQuestion.

Definition at line 1106 of file class.assErrorText.php.

1107 {
1108 include_once("./Services/RTE/classes/class.ilRTE.php");
1109 $result = array();
1110 $result['id'] = (int) $this->getId();
1111 $result['type'] = (string) $this->getQuestionType();
1112 $result['title'] = (string) $this->getTitle();
1113 $result['question'] = $this->formatSAQuestion($this->getQuestion());
1114 $result['text'] = (string) ilRTE::_replaceMediaObjectImageSrc($this->getErrorText(), 0);
1115 $result['nr_of_tries'] = (int) $this->getNrOfTries();
1116 $result['shuffle'] = (bool) $this->getShuffle();
1117 $result['feedback'] = array(
1118 'onenotcorrect' => $this->formatSAQuestion($this->feedbackOBJ->getGenericFeedbackTestPresentation($this->getId(), false)),
1119 'allcorrect' => $this->formatSAQuestion($this->feedbackOBJ->getGenericFeedbackTestPresentation($this->getId(), true))
1120 );
1121
1122 $answers = array();
1123 foreach ($this->getErrorData() as $idx => $answer_obj) {
1124 array_push($answers, array(
1125 "answertext_wrong" => (string) $answer_obj->text_wrong,
1126 "answertext_correct" => (string) $answer_obj->text_correct,
1127 "points" => (float) $answer_obj->points,
1128 "order" => (int) $idx + 1
1129 ));
1130 }
1131 $result['correct_answers'] = $answers;
1132
1133 $answers = array();
1134 $textarray = preg_split("/[\n\r]+/", $this->getErrorText());
1135 foreach ($textarray as $textidx => $text) {
1136 $items = preg_split("/\s+/", trim($text));
1137 foreach ($items as $idx => $item) {
1138 if (substr($item, 0, 1) == "#") {
1139 $item = substr($item, 1);
1140
1141 // #14115 - add position to correct answer
1142 foreach ($result["correct_answers"] as $aidx => $answer) {
1143 if ($answer["answertext_wrong"] == $item && !$answer["pos"]) {
1144 $result["correct_answers"][$aidx]["pos"] = $this->getId() . "_" . $textidx . "_" . ($idx + 1);
1145 break;
1146 }
1147 }
1148 }
1149 array_push($answers, array(
1150 "answertext" => (string) ilUtil::prepareFormOutput($item),
1151 "order" => $this->getId() . "_" . $textidx . "_" . ($idx + 1)
1152 ));
1153 }
1154 if ($textidx != sizeof($textarray) - 1) {
1155 array_push($answers, array(
1156 "answertext" => "###",
1157 "order" => $this->getId() . "_" . $textidx . "_" . ($idx + 2)
1158 ));
1159 }
1160 }
1161 $result['answers'] = $answers;
1162
1163 $mobs = ilObjMediaObject::_getMobsOfObject("qpl:html", $this->getId());
1164 $result['mobs'] = $mobs;
1165
1166 return json_encode($result);
1167 }
getErrorData()
Get error data.
getQuestionType()
Returns the question type of the question.
formatSAQuestion($a_q)
Format self assessment question.
getShuffle()
Gets the shuffle flag.
getTitle()
Gets the title string of the assQuestion object.
getQuestion()
Gets the question string of the question object.
static _getMobsOfObject($a_type, $a_id, $a_usage_hist_nr=0, $a_lang="-")
get mobs of object
$mobs
Definition: imgupload.php:54

References $mobs, $result, ilObjMediaObject\_getMobsOfObject(), ilRTE\_replaceMediaObjectImageSrc(), assQuestion\formatSAQuestion(), getErrorData(), getErrorText(), assQuestion\getId(), assQuestion\getNrOfTries(), assQuestion\getQuestion(), getQuestionType(), assQuestion\getShuffle(), assQuestion\getTitle(), and ilUtil\prepareFormOutput().

+ Here is the call graph for this function:

◆ toXML()

assErrorText::toXML (   $a_include_header = true,
  $a_include_binary = true,
  $a_shuffle = false,
  $test_output = false,
  $force_image_references = false 
)

Returns a QTI xml representation of the question and sets the internal domxml variable with the DOM XML representation of the QTI xml representation.

Returns
string The QTI xml representation of the question

Reimplemented from assQuestion.

Definition at line 518 of file class.assErrorText.php.

519 {
520 include_once "./Modules/TestQuestionPool/classes/export/qti12/class.assErrorTextExport.php";
521 $export = new assErrorTextExport($this);
522 return $export->toXML($a_include_header, $a_include_binary, $a_shuffle, $test_output, $force_image_references);
523 }
Class for error text question exports.

Field Documentation

◆ $errordata

assErrorText::$errordata
protected

Definition at line 27 of file class.assErrorText.php.

Referenced by getErrorData(), and setErrorData().

◆ $errortext

assErrorText::$errortext
protected

Definition at line 25 of file class.assErrorText.php.

Referenced by getErrorText(), and setExportDetailsXLS().

◆ $points_wrong

assErrorText::$points_wrong
protected

Definition at line 28 of file class.assErrorText.php.

Referenced by getPointsWrong().

◆ $textsize

assErrorText::$textsize
protected

Definition at line 26 of file class.assErrorText.php.

Referenced by getTextSize().


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