ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
assNumeric Class Reference

This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V. More...

+ Inheritance diagram for assNumeric:
+ Collaboration diagram for assNumeric:

Public Member Functions

 __construct ( $title="", $comment="", $author="", $owner=-1, $question="")
 assNumeric constructor More...
 
 isComplete ()
 Returns true, if a numeric question is complete for use. More...
 
 saveToDb ($original_id="")
 Saves a assNumeric object to a database. More...
 
 duplicate (bool $for_test=true, string $title="", string $author="", int $owner=-1, $testObjId=null)
 Duplicates an assNumericQuestion. More...
 
 copyObject ($target_questionpool_id, $title="")
 Copies an assNumeric object. More...
 
 createNewOriginalFromThisDuplicate ($targetParentId, $targetQuestionTitle="")
 
 getLowerLimit ()
 
 getUpperLimit ()
 
 setLowerLimit ($a_limit)
 
 setUpperLimit ($a_limit)
 
 getMaximumPoints ()
 Returns the maximum points, a learner can reach answering the question. More...
 
 calculateReachedPointsFromPreviewSession (ilAssQuestionPreviewSession $previewSession)
 
 contains ($value)
 Checks for a given value within the range. More...
 
 validateSolutionSubmit ()
 
 getSolutionSubmit ()
 
 isValidSolutionSubmit ($numeric_solution)
 
 getQuestionType ()
 Returns the question type of the question. More...
 
 getMaxChars ()
 Returns the maximum number of characters for the numeric input field. More...
 
 setMaxChars ($maxchars)
 Sets the maximum number of characters for the numeric input field. More...
 
 getAdditionalTableName ()
 Returns the name of the additional question data 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...
 
 setExportDetailsXLSX (ilAssExcelFormatHelper $worksheet, int $startrow, int $col, int $active_id, int $pass)
 {} 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...
 
 getAnswerTableName ()
 
- Public Member Functions inherited from assQuestion
 __construct (string $title="", string $comment="", string $author="", int $owner=-1, string $question="")
 assQuestion constructor More...
 
 getShuffler ()
 
 setShuffler (Transformation $shuffler)
 
 setProcessLocker (ilAssQuestionProcessLocker $processLocker)
 
 getProcessLocker ()
 
 fromXML ($item, int $questionpool_id, ?int $tst_id, &$tst_object, int &$question_counter, array $import_mapping, array &$solutionhints=[])
 Receives parameters from a QTI parser and creates a valid ILIAS question object. More...
 
 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...
 
 isComplete ()
 Returns true, if a question is complete for use. 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 $authorizedSolution=true)
 returns the reached points ... More...
 
 calculateResultsFromSolution (int $active_id, int $pass, bool $obligationsEnabled=false)
 Calculates the question results from a previously saved question solution. More...
 
 persistWorkingState (int $active_id, $pass, bool $obligationsEnabled=false, bool $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 (int $active_id, int $pass, bool $authorized=true)
 Saves the learners input of the question to the database. More...
 
 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, $pass=null)
 
 getSolutionValues ($active_id, $pass=null, bool $authorized=true)
 Loads solutions of a given user from the database an returns it. More...
 
 getAdditionalTableName ()
 
 getAnswerTableName ()
 
 deleteAnswers (int $question_id)
 
 deleteAdditionalTableData (int $question_id)
 
 delete (int $question_id)
 
 getTotalAnswers ()
 
 copyXHTMLMediaObjectsOfQuestion (int $a_q_id)
 
 syncXHTMLMediaObjectsOfQuestion ()
 
 createPageObject ()
 
 copyPageOfQuestion (int $a_q_id)
 
 getPageOfQuestion ()
 
 setOriginalId (?int $original_id)
 
 getOriginalId ()
 
 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=-1)
 
 saveToDb ()
 
 deleteSuggestedSolutions ()
 
 getSuggestedSolution (int $subquestion_index=0)
 
 resolveInternalLink (string $internal_link)
 
 resolveSuggestedSolutionLinks ()
 
 syncWithOriginal ()
 
 getPoints ()
 
 setPoints (float $points)
 
 getSolutionMaxPass (int $active_id)
 
 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...
 
 buildHashedImageFilename (string $plain_image_filename, bool $unique=false)
 
 getQuestion ()
 
 getQuestionForHTMLOutput ()
 
 setQuestion (string $question="")
 
 getQuestionType ()
 Returns the question type of the question. More...
 
 getQuestionTypeID ()
 
 syncHints ()
 
 cleanupMediaObjectUsage ()
 
 getInstances ()
 
 getActiveUserData (int $active_id)
 Returns the user id and the test id for a given active id. More...
 
 hasSpecificFeedback ()
 
 setExportDetailsXLSX (ilAssExcelFormatHelper $worksheet, int $startrow, int $col, int $active_id, int $pass)
 
 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 ($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 ()
 
 duplicate (bool $for_test=true, string $title="", string $author="", int $owner=-1, $testObjId=null)
 
 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 $valuePairs)
 
 areObligationsToBeConsidered ()
 
 setObligationsToBeConsidered (bool $obligationsToBeConsidered)
 
 updateTimestamp ()
 
 getTestPresentationConfig ()
 
- Public Member Functions inherited from ilObjQuestionScoringAdjustable
 saveAdditionalQuestionDataToDb ()
 Saves a record to the question types additional data table. More...
 
- Public Member Functions inherited from ilObjAnswerScoringAdjustable
 saveAnswerSpecificDataToDb ()
 Saves the answer specific records into a question types answer table. More...
 
- Public Member Functions inherited from iQuestionCondition
 getUserQuestionResult ($active_id, $pass)
 Get the user solution for a question by active_id and the test pass. More...
 

Data Fields

 $maxchars
 
- Data Fields inherited from assQuestion
const TRIM_PATTERN = '/^[\p{C}\p{Z}]+|[\p{C}\p{Z}]+$/u'
 
const ADDITIONAL_CONTENT_EDITING_MODE_RTE = 'default'
 
const ADDITIONAL_CONTENT_EDITING_MODE_IPE = 'pageobject'
 
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

 isValidNumericSubmitValue ($submittedValue)
 
 savePreviewData (ilAssQuestionPreviewSession $previewSession)
 
- Protected Member Functions inherited from assQuestion
 getQuestionAction ()
 
 isNonEmptyItemListPostSubmission (string $postSubmissionFieldname)
 
 log (int $active_id, string $langVar)
 
 savePreviewData (ilAssQuestionPreviewSession $previewSession)
 
 deletePageOfQuestion (int $question_id)
 
 onDuplicate (int $originalParentId, int $originalQuestionId, int $duplicateParentId, int $duplicateQuestionId)
 
 beforeSyncWithOriginal (int $origQuestionId, int $dupQuestionId, int $origParentObjId, int $dupParentObjId)
 
 afterSyncWithOriginal (int $origQuestionId, int $dupQuestionId, int $origParentObjId, int $dupParentObjId)
 
 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 ()
 
 syncSuggestedSolutions (int $target_question_id, int $target_obj_id)
 
 duplicateSuggestedSolutionFiles (int $parent_id, int $question_id)
 Duplicates the files of a suggested solution if the question is duplicated. More...
 
 syncSuggestedSolutionFiles (int $target_question_id, int $target_obj_id)
 
 copySuggestedSolutionFiles (int $source_questionpool_id, int $source_question_id)
 
 copySuggestedSolutions (int $target_question_id)
 
 ensureNonNegativePoints ($points)
 
 purifyAndPrepareTextAreaOutput (string $content)
 
 getRTETextWithMediaObjects ()
 
 getSelfAssessmentFormatter ()
 
 lmMigrateQuestionTypeGenericContent (ilAssSelfAssessmentMigrator $migrator)
 
 lmMigrateQuestionTypeSpecificContent (ilAssSelfAssessmentMigrator $migrator)
 
 duplicateQuestionHints (int $originalQuestionId, int $duplicateQuestionId)
 
 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 ()
 build basic test question configuration instance More...
 
 getSuggestedSolutionsRepo ()
 
 loadSuggestedSolutions ()
 

Protected Attributes

 $lower_limit
 
 $upper_limit
 
- Protected Attributes inherited from assQuestion
const HAS_SPECIFIC_FEEDBACK = true
 
ILIAS TestQuestionPool QuestionInfoService $questioninfo
 
ILIAS Test TestParticipantInfoService $testParticipantInfo
 
ILIAS HTTP Services $http
 
ILIAS Refinery Factory $refinery
 
ILIAS TestQuestionPool QuestionFilesService $questionFilesService
 
ILIAS DI LoggingServices $ilLog
 
int $id
 
string $title
 
string $comment
 
string $owner
 
string $author
 
int $thumb_size
 
string $question
 The question text. More...
 
float $points
 The maximum available points for the question. More...
 
bool $shuffle
 Indicates whether the answers will be shuffled or not. More...
 
int $test_id
 The database id of a test in which the question is contained. More...
 
int $obj_id = 0
 Object id of the container object. More...
 
 $ilias
 
ilGlobalPageTemplate $tpl
 
ilLanguage $lng
 
ilDBInterface $db
 
Container $dic
 
array $suggested_solutions
 
int $original_id = null
 
 $page
 
string $external_id = null
 
ilAssQuestionProcessLocker $processLocker
 
 $step
 
 $lastChange
 
Transformation $shuffler
 
ilTestQuestionConfig $testQuestionConfig
 
ilAssQuestionLifecycle $lifecycle
 
ilObjUser $current_user
 
SkillUsageService $skillUsageService
 
assQuestionSuggestedSolutionsDatabaseRepository $suggestedsolution_repo = null
 

Additional Inherited Members

- Static Public Member Functions inherited from assQuestion
static setForcePassResultUpdateEnabled (bool $forcePassResultsUpdateEnabled)
 
static isForcePassResultUpdateEnabled ()
 
static _getSuggestedSolutionOutput (int $question_id)
 
static _getReachedPoints (int $active_id, int $question_id, int $pass)
 
static logAction (string $logtext, int $active_id, int $question_id)
 
static isFileAvailable (string $file)
 
static saveOriginalId (int $questionId, int $originalId)
 
static resetOriginalId (int $questionId)
 
static _getInternalLinkHref (string $target="")
 
static instantiateQuestion (int $question_id)
 
static _getSolutionMaxPass (int $question_id, int $active_id)
 Returns the maximum pass a users question solution. More...
 
static _isWriteable (int $question_id, int $user_id)
 
static _setReachedPoints (int $active_id, int $question_id, float $points, float $maxpoints, int $pass, bool $manualscoring, bool $obligationsEnabled, ?int $test_id=null)
 Sets the points, a learner has reached answering the question Additionally objective results are updated. More...
 
static _needsManualScoring (int $question_id)
 
static getFeedbackClassNameByQuestionType (string $questionType)
 
static instantiateQuestionGUI (int $a_question_id)
 
static _questionExistsInTest (int $question_id, int $test_id)
 
static lookupParentObjId (int $questionId)
 
static isObligationPossible (int $questionId)
 
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 $forcePassResultsUpdateEnabled = false
 
static $imageSourceFixReplaceMap
 

Detailed Description

This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.

ILIAS is licensed with the GPL-3.0, see https://www.gnu.org/licenses/gpl-3.0.en.html You should have received a copy of said license along with the source code, too.

If this is not the case or you just want to try ILIAS, you'll find us at: https://www.ilias.de https://github.com/ILIAS-eLearning Class for numeric questions

assNumeric is a class for numeric questions. To solve a numeric question, a learner has to enter a numerical value in a defined range.

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
Nina Gharib nina@.nosp@m.wgse.nosp@m.rve.d.nosp@m.e
Björn Heyser bheys.nosp@m.er@d.nosp@m.ataba.nosp@m.y.de
Maximilian Becker mbeck.nosp@m.er@d.nosp@m.ataba.nosp@m.y.de
Version
$Id$

Definition at line 36 of file class.assNumeric.php.

Constructor & Destructor Documentation

◆ __construct()

assNumeric::__construct (   $title = "",
  $comment = "",
  $author = "",
  $owner = -1,
  $question = "" 
)

assNumeric constructor

The constructor takes possible arguments an creates an instance of the assNumeric object.

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 numeric question

Definition at line 55 of file class.assNumeric.php.

References assQuestion\$author, assQuestion\$comment, assQuestion\$owner, assQuestion\$question, assQuestion\$title, and ILIAS\MetaData\Repository\Validation\Data\__construct().

61  {
63  $this->maxchars = 6;
64  }
__construct(VocabulariesInterface $vocabularies)
string $question
The question text.
+ Here is the call graph for this function:

Member Function Documentation

◆ calculateReachedPointsFromPreviewSession()

assNumeric::calculateReachedPointsFromPreviewSession ( ilAssQuestionPreviewSession  $previewSession)

Definition at line 317 of file class.assNumeric.php.

References $data, $DIC, $ilDB, assQuestion\$points, assQuestion\calculateReachedPoints(), contains(), assQuestion\deductHintPointsFromReachedPoints(), assQuestion\ensureNonNegativePoints(), assQuestion\getCurrentSolutionResultSet(), ilAssQuestionPreviewSession\getParticipantsSolution(), assQuestion\getPoints(), and assQuestion\getSolutionMaxPass().

318  {
319  $points = 0;
320  if ($this->contains($previewSession->getParticipantsSolution())) {
321  $points = $this->getPoints();
322  }
323 
324  $reachedPoints = $this->deductHintPointsFromReachedPoints($previewSession, $points);
325 
326  return $this->ensureNonNegativePoints($reachedPoints);
327  }
ensureNonNegativePoints($points)
float $points
The maximum available points for the question.
deductHintPointsFromReachedPoints(ilAssQuestionPreviewSession $previewSession, $reachedPoints)
contains($value)
Checks for a given value within the range.
+ Here is the call graph for this function:

◆ contains()

assNumeric::contains (   $value)

Checks for a given value within the range.

See also
$upperlimit
$lowerlimit
Parameters
double$valueThe value to check
Returns
boolean TRUE if the value is in the range, FALSE otherwise

Definition at line 380 of file class.assNumeric.php.

References getUpperLimit().

Referenced by calculateReachedPointsFromPreviewSession().

380  : bool
381  {
382  $eval = new EvalMath();
383  $eval->suppress_errors = true;
384  $result = $eval->e($value);
385  if (($result === false) || ($result === true)) {
386  return false;
387  }
388 
389  if (($result >= $eval->e($this->getLowerLimit())) && ($result <= $eval->e($this->getUpperLimit()))) {
390  return true;
391  }
392  return false;
393  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ copyObject()

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

Copies an assNumeric object.

Parameters
integer$target_questionpool_id
string$title
Returns
void|integer Id of the clone or nothing.

Definition at line 227 of file class.assNumeric.php.

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

228  {
229  if ($this->id <= 0) {
230  // The question has not been saved. It cannot be duplicated
231  return;
232  }
233  // duplicate the question in database
234  $clone = $this;
235 
236  $original_id = $this->questioninfo->getOriginalId($this->id);
237  $clone->id = -1;
238  $source_questionpool_id = $this->getObjId();
239  $clone->setObjId($target_questionpool_id);
240  if ($title) {
241  $clone->setTitle($title);
242  }
243  $clone->saveToDb();
244 
245  // copy question page content
246  $clone->copyPageOfQuestion($original_id);
247  // copy XHTML media objects
248  $clone->copyXHTMLMediaObjectsOfQuestion($original_id);
249 
250  $clone->onCopy($source_questionpool_id, $original_id, $clone->getObjId(), $clone->getId());
251 
252  return $clone->id;
253  }
+ Here is the call graph for this function:

◆ createNewOriginalFromThisDuplicate()

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

Definition at line 255 of file class.assNumeric.php.

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

255  : int
256  {
257  if ($this->getId() <= 0) {
258  throw new RuntimeException('The question has not been saved. It cannot be duplicated');
259  }
260 
261  $sourceQuestionId = $this->id;
262  $sourceParentId = $this->getObjId();
263 
264  // duplicate the question in database
265  $clone = $this;
266  $clone->id = -1;
267 
268  $clone->setObjId($targetParentId);
269 
270  if ($targetQuestionTitle) {
271  $clone->setTitle($targetQuestionTitle);
272  }
273 
274  $clone->saveToDb();
275  // copy question page content
276  $clone->copyPageOfQuestion($sourceQuestionId);
277  // copy XHTML media objects
278  $clone->copyXHTMLMediaObjectsOfQuestion($sourceQuestionId);
279 
280  $clone->onCopy($sourceParentId, $sourceQuestionId, $clone->getObjId(), $clone->getId());
281 
282  return $clone->id;
283  }
+ Here is the call graph for this function:

◆ duplicate()

assNumeric::duplicate ( bool  $for_test = true,
string  $title = "",
string  $author = "",
int  $owner = -1,
  $testObjId = null 
)

Duplicates an assNumericQuestion.

Parameters
bool$for_test
string$title
string$author
string$owner
integer | null$testObjId
Returns
void|integer Id of the clone or nothing.

Definition at line 173 of file class.assNumeric.php.

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

173  : int
174  {
175  if ($this->id <= 0) {
176  // The question has not been saved. It cannot be duplicated
177  return -1;
178  }
179  // duplicate the question in database
180  $this_id = $this->getId();
181  $thisObjId = $this->getObjId();
182 
183  $clone = $this;
184 
185  $original_id = $this->questioninfo->getOriginalId($this->id);
186  $clone->id = -1;
187 
188  if ((int) $testObjId > 0) {
189  $clone->setObjId($testObjId);
190  }
191 
192  if ($title) {
193  $clone->setTitle($title);
194  }
195 
196  if ($author) {
197  $clone->setAuthor($author);
198  }
199  if ($owner) {
200  $clone->setOwner($owner);
201  }
202 
203  if ($for_test) {
204  $clone->saveToDb($original_id);
205  } else {
206  $clone->saveToDb();
207  }
208 
209  // copy question page content
210  $clone->copyPageOfQuestion($this_id);
211  // copy XHTML media objects
212  $clone->copyXHTMLMediaObjectsOfQuestion($this_id);
213 
214  $clone->onDuplicate($thisObjId, $this_id, $clone->getObjId(), $clone->getId());
215 
216  return $clone->id;
217  }
+ Here is the call graph for this function:

◆ getAdditionalTableName()

assNumeric::getAdditionalTableName ( )

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

Returns
string The additional table name

Definition at line 599 of file class.assNumeric.php.

Referenced by savePreviewData(), and saveToDb().

599  : string
600  {
601  return "qpl_qst_numeric";
602  }
+ Here is the caller graph for this function:

◆ getAnswerTableName()

assNumeric::getAnswerTableName ( )

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

723  {
724  return '';
725  }

◆ getAvailableAnswerOptions()

assNumeric::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 714 of file class.assNumeric.php.

References getLowerLimit(), and getUpperLimit().

715  {
716  return array(
717  "lower" => $this->getLowerLimit(),
718  "upper" => $this->getUpperLimit()
719  );
720  }
+ Here is the call graph for this function:

◆ getExpressionTypes()

◆ getLowerLimit()

assNumeric::getLowerLimit ( )

Definition at line 285 of file class.assNumeric.php.

References $lower_limit.

Referenced by getAvailableAnswerOptions(), and savePreviewData().

286  {
287  return $this->lower_limit;
288  }
+ Here is the caller graph for this function:

◆ getMaxChars()

assNumeric::getMaxChars ( )

Returns the maximum number of characters for the numeric input field.

Returns
integer The maximum number of characters

Definition at line 579 of file class.assNumeric.php.

References $maxchars.

Referenced by savePreviewData().

580  {
581  return $this->maxchars;
582  }
+ Here is the caller graph for this function:

◆ getMaximumPoints()

assNumeric::getMaximumPoints ( )

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

See also
$points

Definition at line 312 of file class.assNumeric.php.

References assQuestion\getPoints().

Referenced by getExpressionTypes(), and isComplete().

312  : float
313  {
314  return $this->getPoints();
315  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getOperators()

assNumeric::getOperators (   $expression)

Get all available operations for a specific question.

Parameters
$expression

Implements iQuestionCondition.

Definition at line 645 of file class.assNumeric.php.

References ilOperatorsExpressionMapping\getOperatorsByExpression().

645  : array
646  {
648  }
+ Here is the call graph for this function:

◆ getQuestionType()

assNumeric::getQuestionType ( )

Returns the question type of the question.

Returns
integer The question type of the question

Definition at line 569 of file class.assNumeric.php.

569  : string
570  {
571  return "assNumeric";
572  }

◆ getRTETextWithMediaObjects()

assNumeric::getRTETextWithMediaObjects ( )

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

Definition at line 608 of file class.assNumeric.php.

608  : string
609  {
610  return parent::getRTETextWithMediaObjects();
611  }

◆ getSolutionSubmit()

assNumeric::getSolutionSubmit ( )

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

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

418  : string
419  {
420  return trim(str_replace(",", ".", $_POST["numeric_result"]));
421  }
+ Here is the caller graph for this function:

◆ getUpperLimit()

assNumeric::getUpperLimit ( )

Definition at line 290 of file class.assNumeric.php.

References $upper_limit.

Referenced by contains(), getAvailableAnswerOptions(), and savePreviewData().

291  {
292  return $this->upper_limit;
293  }
+ Here is the caller graph for this function:

◆ isComplete()

assNumeric::isComplete ( )

Returns true, if a numeric question is complete for use.

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

Definition at line 71 of file class.assNumeric.php.

References getMaximumPoints().

71  : bool
72  {
73  if (
74  strlen($this->title)
75  && $this->author
76  && $this->question
77  && $this->getMaximumPoints() > 0
78  ) {
79  return true;
80  }
81  return false;
82  }
getMaximumPoints()
Returns the maximum points, a learner can reach answering the question.
+ Here is the call graph for this function:

◆ isValidNumericSubmitValue()

assNumeric::isValidNumericSubmitValue (   $submittedValue)
protected

Definition at line 395 of file class.assNumeric.php.

Referenced by validateSolutionSubmit().

395  : bool
396  {
397  if (is_numeric($submittedValue)) {
398  return true;
399  }
400 
401  if (preg_match('/^[-+]{0,1}\d+\/\d+$/', $submittedValue)) {
402  return true;
403  }
404 
405  return false;
406  }
+ Here is the caller graph for this function:

◆ isValidSolutionSubmit()

assNumeric::isValidSolutionSubmit (   $numeric_solution)

Definition at line 423 of file class.assNumeric.php.

References $DIC, $ilDB, ilObjAssessmentFolder\_enabledAssessmentLogging(), ilObjAssessmentFolder\_getLogLanguage(), ilObjTest\_getPass(), assQuestion\getCurrentSolutionResultSet(), assQuestion\getId(), assQuestion\getProcessLocker(), getSolutionSubmit(), ILIAS\Repository\lng(), assQuestion\logAction(), assQuestion\removeSolutionRecordById(), assQuestion\saveCurrentSolution(), assQuestion\saveWorkingData(), and assQuestion\updateCurrentSolution().

423  : bool
424  {
425  $math = new EvalMath();
426  $math->suppress_errors = true;
427  $result = $math->evaluate($numeric_solution);
428 
429  return !(
430  ($result === false || $result === true) && strlen($numeric_solution) > 0
431  );
432  }
+ Here is the call graph for this function:

◆ savePreviewData()

assNumeric::savePreviewData ( ilAssQuestionPreviewSession  $previewSession)
protected

◆ saveToDb()

assNumeric::saveToDb (   $original_id = "")

Saves a assNumeric object to a database.

Parameters
string$original_id

Definition at line 89 of file class.assNumeric.php.

References $data, $DIC, Vendor\Package\$e, $ilDB, assQuestion\$original_id, ilRTE\_replaceMediaObjectImageSrc(), getAdditionalTableName(), ilAssQuestionLifecycle\getDraftInstance(), ilAssQuestionLifecycle\getInstance(), assQuestion\loadFromDb(), ilObjQuestionScoringAdjustable\saveAdditionalQuestionDataToDb(), ilObjAnswerScoringAdjustable\saveAnswerSpecificDataToDb(), assQuestion\saveQuestionDataToDb(), assQuestion\setAdditionalContentEditingMode(), assQuestion\setAuthor(), assQuestion\setComment(), assQuestion\setId(), assQuestion\setLifecycle(), setLowerLimit(), setMaxChars(), assQuestion\setNrOfTries(), assQuestion\setObjId(), assQuestion\setOriginalId(), assQuestion\setOwner(), assQuestion\setPoints(), assQuestion\setQuestion(), assQuestion\setTitle(), and setUpperLimit().

89  : void
90  {
91  if ($original_id == "") {
92  $this->saveQuestionDataToDb();
93  } else {
95  }
96 
99  parent::saveToDb($original_id);
100  }
saveAdditionalQuestionDataToDb()
Saves a record to the question types additional data table.
saveAnswerSpecificDataToDb()
Saves the answer specific records into a question types answer table.
saveQuestionDataToDb(int $original_id=-1)
+ Here is the call graph for this function:

◆ setExportDetailsXLSX()

assNumeric::setExportDetailsXLSX ( ilAssExcelFormatHelper  $worksheet,
int  $startrow,
int  $col,
int  $active_id,
int  $pass 
)

{}

Definition at line 616 of file class.assNumeric.php.

References ilExcel\getColumnCoord(), assQuestion\getSolutionValues(), ILIAS\Repository\lng(), ilExcel\setBold(), and ilAssExcelFormatHelper\setCell().

616  : int
617  {
618  parent::setExportDetailsXLSX($worksheet, $startrow, $col, $active_id, $pass);
619 
620  $solutions = $this->getSolutionValues($active_id, $pass);
621 
622  $i = 1;
623  $worksheet->setCell($startrow + $i, $col, $this->lng->txt("result"));
624  $worksheet->setBold($worksheet->getColumnCoord($col) . ($startrow + $i));
625 
626  $worksheet->setBold($worksheet->getColumnCoord($col) . ($startrow + $i));
627  if (array_key_exists(0, $solutions) &&
628  array_key_exists('value1', $solutions[0]) &&
629  strlen($solutions[0]["value1"])) {
630  $worksheet->setCell($startrow + $i, $col + 2, $solutions[0]["value1"]);
631  }
632  $i++;
633 
634  return $startrow + $i + 1;
635  }
getSolutionValues($active_id, $pass=null, bool $authorized=true)
Loads solutions of a given user from the database an returns it.
getColumnCoord(int $a_col)
Get column "name" from number.
setCell($a_row, $a_col, $a_value, $datatype=null)
setBold(string $a_coords)
Set cell(s) to bold.
+ Here is the call graph for this function:

◆ setLowerLimit()

assNumeric::setLowerLimit (   $a_limit)

Definition at line 295 of file class.assNumeric.php.

Referenced by saveToDb().

295  : void
296  {
297  $a_limit = str_replace(',', '.', $a_limit);
298  $this->lower_limit = $a_limit;
299  }
+ Here is the caller graph for this function:

◆ setMaxChars()

assNumeric::setMaxChars (   $maxchars)

Sets the maximum number of characters for the numeric input field.

Parameters
integer$maxcharsThe maximum number of characters

Definition at line 589 of file class.assNumeric.php.

References $maxchars.

Referenced by saveToDb().

589  : void
590  {
591  $this->maxchars = $maxchars;
592  }
+ Here is the caller graph for this function:

◆ setUpperLimit()

assNumeric::setUpperLimit (   $a_limit)

Definition at line 301 of file class.assNumeric.php.

Referenced by saveToDb().

301  : void
302  {
303  $a_limit = str_replace(',', '.', $a_limit);
304  $this->upper_limit = $a_limit;
305  }
+ Here is the caller graph for this function:

◆ validateSolutionSubmit()

assNumeric::validateSolutionSubmit ( )

Implements assQuestionInterface.

Definition at line 408 of file class.assNumeric.php.

References getSolutionSubmit(), isValidNumericSubmitValue(), and ILIAS\Repository\lng().

408  : bool
409  {
410  if (strlen($this->getSolutionSubmit()) && !$this->isValidNumericSubmitValue($this->getSolutionSubmit())) {
411  $this->tpl->setOnScreenMessage('failure', $this->lng->txt("err_no_numeric_value"), true);
412  return false;
413  }
414 
415  return true;
416  }
isValidNumericSubmitValue($submittedValue)
+ Here is the call graph for this function:

Field Documentation

◆ $lower_limit

assNumeric::$lower_limit
protected

Definition at line 38 of file class.assNumeric.php.

Referenced by getLowerLimit().

◆ $maxchars

assNumeric::$maxchars

Definition at line 42 of file class.assNumeric.php.

Referenced by getMaxChars(), and setMaxChars().

◆ $upper_limit

assNumeric::$upper_limit
protected

Definition at line 39 of file class.assNumeric.php.

Referenced by getUpperLimit().


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