ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
ilTestOutputGUI Class Reference

Output class for assessment test execution. More...

+ Inheritance diagram for ilTestOutputGUI:
+ Collaboration diagram for ilTestOutputGUI:

Public Member Functions

 executeCommand ()
 Execute Command. More...
 
 saveQuestionSolution ($authorized=true, $force=false)
 saves the user input of a question More...
 
- Public Member Functions inherited from ilTestPlayerAbstractGUI
 __construct ($a_object)
 ilTestOutputGUI constructor More...
 
 saveTagsCmd ()
 Save tags for tagging gui. More...
 
 updateWorkingTime ()
 updates working time and stores state saveresult to see if question has to be stored or not More...
 
 saveQuestionSolution ($authorized=true, $force=false)
 saves the user input of a question More...
 
 suspendTestCmd ()
 
 isMaxProcessingTimeReached ()
 Checks wheather the maximum processing time is reached or not. More...
 
 setAnonymousIdCmd ()
 Sets a session variable with the test access code for an anonymous test user. More...
 
 getLockParameter ()
 
 displayAccessCodeCmd ()
 
 accessCodeConfirmedCmd ()
 
 handleUserSettings ()
 Handles some form parameters on starting and resuming a test. More...
 
 redirectAfterAutosaveCmd ()
 
 autosaveCmd ()
 
 toggleSideListCmd ()
 Toggle side list. More...
 
 finishTestCmd ($requires_confirmation=true)
 
 redirectBackCmd ()
 
 showFinalStatementCmd ()
 
 getKioskHead ()
 
 checkOnlineTestAccess ()
 check access restrictions like client ip, partipating user etc. More...
 
 isTestAccessible ()
 test accessible returns true if the user can perform the test More...
 
 isNrOfTriesReached ()
 nr of tries exceeded More...
 
 maxProcessingTimeReached ()
 Outputs a message when the maximum processing time is reached. More...
 
 confirmSubmitAnswers ()
 confirm submit results if confirm then results are submitted and the screen will be redirected to the startpage of the test @access public More...
 
 outProcessingTime ($active_id)
 
 outQuestionSummaryCmd ($fullpage=true, $contextFinishTest=false, $obligationsNotAnswered=false, $obligationsFilter=false)
 Output of a summary of all test questions for test participants. More...
 
 outQuestionSummaryWithObligationsInfoCmd ()
 
 outObligationsOnlySummaryCmd ()
 
 showMaximumAllowedUsersReachedMessage ()
 
 backFromFinishingCmd ()
 
 outCorrectSolution ()
 Creates an output of the solution of an answer compared to the correct solution. More...
 
 showListOfAnswers ($active_id, $pass=NULL, $top_data="", $bottom_data="")
 Creates an output of the list of answers for a test participant during the test (only the actual pass will be shown) More...
 
 getContentBlockName ()
 Returns the name of the current content block (depends on the kiosk mode setting) More...
 
 outUserResultsOverviewCmd ()
 
- Public Member Functions inherited from ilTestServiceGUI
 isContextResultPresentation ()
 
 setContextResultPresentation ($contextResultPresentation)
 
 ilTestServiceGUI (ilObjTest $a_object)
 The constructor takes the test object reference as parameter. More...
 
 setParticipantData ($participantData)
 
 getParticipantData ()
 
 getPassOverviewTableData (ilTestSession $testSession, $passes, $withResults)
 
 setObjectiveOrientedContainer (ilTestObjectiveOrientedContainer $objectiveOrientedContainer)
 
 getObjectiveOrientedContainer ()
 
executeCommand ()
 execute command More...
 
 getCommand ($cmd)
 Retrieves the ilCtrl command. More...
 
 buildPassOverviewTableGUI ($targetGUI, $targetCmd='')
 
 getPassListOfAnswers (&$result_array, $active_id, $pass, $show_solutions=FALSE, $only_answered_questions=FALSE, $show_question_only=FALSE, $show_reached_points=FALSE, $anchorNav=false, ilTestQuestionRelatedObjectivesList $objectivesList=null, ilTestResultHeaderLabelBuilder $testResultHeaderLabelBuilder=null)
 Returns the list of answers of a users test pass. More...
 
 getPassListOfAnswersWithScoring (&$result_array, $active_id, $pass, $show_solutions=FALSE)
 Returns the list of answers of a users test pass and offers a scoring option. More...
 
 getResultsSignature ()
 Returns HTML code for a signature field. More...
 
 getAdditionalUsrDataHtmlAndPopulateWindowTitle ($testSession, $active_id, $overwrite_anonymity=FALSE)
 Returns the user data for a test results output. More...
 
 getCorrectSolutionOutput ($question_id, $active_id, $pass, ilTestQuestionRelatedObjectivesList $objectivesList=null)
 Returns an output of the solution to an answer compared to the correct solution. More...
 
 getResultsOfUserOutput ($testSession, $active_id, $pass, $targetGUI, $show_pass_details=TRUE, $show_answers=TRUE, $show_question_only=FALSE, $show_reached_points=FALSE)
 Output of the pass overview for a test called by a test participant. More...
 
 getResultsHeadUserAndPass ($active_id, $pass)
 Returns the user and pass data for a test results output. More...
 
 getQuestionResultForTestUsers ($question_id, $test_id)
 Creates a HTML representation for the results of a given question in a test. More...
 
 populatePassFinishDate ($tpl, $passFinishDate)
 

Protected Member Functions

 startTestCmd ()
 
 showQuestionCmd ()
 
 editSolutionCmd ()
 
 submitSolutionAndNextCmd ()
 
 submitSolutionCmd ()
 
 discardSolutionCmd ()
 
 skipQuestionCmd ()
 
 nextQuestionCmd ()
 
 previousQuestionCmd ()
 
 isFirstQuestionInSequence ($sequenceElement)
 
 isLastQuestionInSequence ($sequenceElement)
 
 canSaveResult ()
 Returns TRUE if the answers of the current user could be saved. More...
 
 getCurrentQuestionId ()
 
 showInstantResponseCmd ()
 
 handleQuestionActionCmd ()
 
 performTearsAndAngerBrokenConfessionChecks ()
 
 generateRandomTestPassForActiveUser ()
 
 resumePlayerCmd ()
 Resume a test at the last position. More...
 
 isShowingPostponeStatusReguired ($questionId)
 
 adoptUserSolutionsFromPreviousPass ()
 
 populateQuestionOptionalMessage ()
 
 isOptionalQuestionAnsweringConfirmationRequired ($sequenceKey)
 
 isQuestionSummaryFinishTestButtonRequired ()
 
 handleTearsAndAngerNoObjectiveOrientedQuestion ()
 
- Protected Member Functions inherited from ilTestPlayerAbstractGUI
 checkReadAccess ()
 
 checkTestExecutable ()
 
 ensureExistingTestSession (ilTestSession $testSession)
 
 initProcessLocker ($activeId)
 
 canSaveResult ()
 
 determineInlineScoreDisplay ()
 
 populateTestNavigationToolbar (ilTestNavigationToolbarGUI $toolbarGUI)
 
 populateQuestionNavigation ($sequenceElement, $disabled)
 
 populatePreviousButtons ($disabled)
 
 populateNextButtons ($disabled)
 
 populateLowerNextButtonBlock ($disabled)
 
 populateUpperNextButtonBlock ($disabled)
 
 populateLowerPreviousButtonBlock ($disabled)
 
 populateUpperPreviousButtonBlock ($disabled)
 
 populateSpecificFeedbackBlock ($question_gui)
 
 populateGenericFeedbackBlock (assQuestionGUI $question_gui, $solutionCorrect)
 
 populateScoreBlock ($reachedPoints, $maxPoints)
 
 populateSolutionBlock ($solutionoutput)
 
 populateSyntaxStyleBlock ()
 
 populateContentStyleBlock ()
 
 startPlayerCmd ()
 Start a test for the first time. More...
 
 resumePlayerCmd ()
 Resume a test at the last position. More...
 
 initTestCmd ()
 Start a test for the first time after a redirect. More...
 
 getCurrentQuestionId ()
 
 submitIntermediateSolutionCmd ()
 
 markQuestionAndSaveIntermediateCmd ()
 
 markQuestionCmd ()
 Set a question solved. More...
 
 unmarkQuestionAndSaveIntermediateCmd ()
 
 unmarkQuestionCmd ()
 Set a question unsolved. More...
 
 confirmFinishCmd ()
 The final submission of a test was confirmed. More...
 
 performTestPassFinishedTasks ($finishedPass)
 
 afterTestPassFinishedCmd ()
 
 isTestSignRedirectRequired ($activeId, $lastFinishedPass)
 
 archiveParticipantSubmission ( $active, $pass)
 
 backToInfoScreenCmd ()
 
 prepareTestPage ($presentationMode, $sequenceElement, $questionId)
 
 isOptionalQuestionAnsweringConfirmationRequired ($sequenceElement)
 
 isShowingPostponeStatusReguired ($questionId)
 
 showQuestionViewable (assQuestionGUI $questionGui, $formAction, $isQuestionWorkedThrough, $instantResponse)
 
 showQuestionEditable (assQuestionGUI $questionGui, $formAction, $isQuestionWorkedThrough, $instantResponse)
 
 determineSolutionPassIndex (assQuestionGUI $questionGui)
 
 showQuestionCmd ()
 
 editSolutionCmd ()
 
 submitSolutionCmd ()
 
 discardSolutionCmd ()
 
 skipQuestionCmd ()
 
 startTestCmd ()
 
 showSideList ($presentationMode, $currentSequenceElement)
 
 isQuestionSummaryFinishTestButtonRequired ()
 
 showRequestedHintListCmd ()
 Go to requested hint list. More...
 
 confirmHintRequestCmd ()
 Go to hint request confirmation. More...
 
 isFirstQuestionInSequence ($sequenceElement)
 
 isLastQuestionInSequence ($sequenceElement)
 
 handleQuestionActionCmd ()
 
 showInstantResponseCmd ()
 
 nextQuestionCmd ()
 
 previousQuestionCmd ()
 
 prepareSummaryPage ()
 
 initTestPageTemplate ()
 
 populateKioskHead ()
 
 handlePasswordProtectionRedirect ()
 
 isParticipantsAnswerFixed ($questionId)
 
 getIntroductionPageButtonLabel ()
 
 initAssessmentSettings ()
 
 handleSkillTriggering (ilTestSession $testSession)
 
 buildTestPassQuestionList ()
 
 showAnswerOptionalQuestionsConfirmation ()
 
 confirmAnswerOptionalQuestionsCmd ()
 
 cancelAnswerOptionalQuestionsCmd ()
 
 populateHelperGuiContent ($helperGui)
 
 populateCharSelectorIfRequired ()
 
 getTestNavigationToolbarGUI ()
 
 buildReadOnlyStateQuestionNavigationGUI ($questionId)
 
 buildEditableStateQuestionNavigationGUI ($questionId, $charSelectorAvailable)
 
 getFinishTestCommand ()
 
 populateIntermediateSolutionSaver (assQuestionGUI $questionGui)
 
 populateInstantResponseBlocks (assQuestionGUI $questionGui, $authorizedSolution)
 
 getCurrentSequenceElement ()
 
 getSequenceElementParameter ()
 
 getPresentationModeParameter ()
 
 getInstantResponseParameter ()
 
 getNextCommandParameter ()
 
 getNextSequenceParameter ()
 
 getQuestionGuiInstance ($questionId, $fromCache=true)
 
 getQuestionInstance ($questionId, $fromCache=true)
 
 buildQuestionAnswerShuffler ($questionId)
 
 handleTearsAndAngerQuestionIsNull ($questionId, $sequenceElement)
 
 populateMessageContent ($contentHTML)
 
 populateModals ()
 
 populateDiscardSolutionModal ()
 
 populateNavWhileEditModal ()
 
 getQuestionsDefaultPresentationMode ($isQuestionWorkedThrough)
 
- Protected Member Functions inherited from ilTestServiceGUI
 handleTabs ($activeTabId)
 
 isPdfDeliveryRequest ()
 
 getPassDetailsOverviewTableGUI ($result_array, $active_id, $pass, $targetGUI, $targetCMD, $questionDetailsCMD, $questionAnchorNav, ilTestQuestionRelatedObjectivesList $objectivesList=null)
 
 buildPassDetailsOverviewTableGUI ($targetGUI, $targetCMD)
 
 isGradingMessageRequired ()
 
 getGradingMessageBuilder ($activeId)
 
 buildQuestionRelatedObjectivesList (ilLOTestQuestionAdapter $objectivesAdapter, ilTestQuestionSequence $testSequence)
 
 getFilteredTestResult ($active_id, $pass, $considerHiddenQuestions, $considerOptionalQuestions)
 
 populateContent ($content)
 
 buildUserTestResultsToolbarGUI ()
 
 outCorrectSolutionCmd ()
 
 outCorrectSolution ()
 Creates an output of the solution of an answer compared to the correct solution. More...
 

Protected Attributes

 $questionRelatedObjectivesList
 
- Protected Attributes inherited from ilTestPlayerAbstractGUI
 $passwordChecker
 
 $processLocker
 
 $testSession
 
 $assSettings
 
 $testSequence = null
 
- Protected Attributes inherited from ilTestServiceGUI
 $db
 
 $tabs
 
 $objCache
 
 $testSessionFactory = null
 
 $testSequenceFactory = null
 
 $participantData
 

Private Member Functions

 isValidSequenceElement ($sequenceElement)
 

Additional Inherited Members

- Data Fields inherited from ilTestPlayerAbstractGUI
const PRESENTATION_MODE_VIEW = 'view'
 
const PRESENTATION_MODE_EDIT = 'edit'
 
 $ref_id
 
 $saveResult
 
 $sequence
 
 $cmdCtrl
 
 $maxProcessingTimeReached
 
 $endingTimeReached
 
- Data Fields inherited from ilTestServiceGUI
 $object = null
 
 $service = null
 
 $lng
 
 $tpl
 
 $ctrl
 
 $ilias
 
 $tree
 
 $ref_id
 

Detailed Description

Output class for assessment test execution.

The ilTestOutputGUI class creates the output for the ilObjTestGUI class when learners execute a test. This saves some heap space because the ilObjTestGUI class will be much smaller then

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
Maximilian Becker mbeck.nosp@m.er@d.nosp@m.ataba.nosp@m.y.de
Version
$Id$

@inGroup ModulesTest

Definition at line 20 of file class.ilTestOutputGUI.php.

Member Function Documentation

◆ adoptUserSolutionsFromPreviousPass()

ilTestOutputGUI::adoptUserSolutionsFromPreviousPass ( )
protected

Definition at line 774 of file class.ilTestOutputGUI.php.

775 {
776 global $ilDB, $ilUser;
777
778 $assSettings = new ilSetting('assessment');
779
780 include_once ("./Modules/Test/classes/class.ilObjAssessmentFolder.php");
781 $isAssessmentLogEnabled = ilObjAssessmentFolder::_enabledAssessmentLogging();
782
783 require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionUserSolutionAdopter.php';
784 $userSolutionAdopter = new ilAssQuestionUserSolutionAdopter($ilDB, $assSettings, $isAssessmentLogEnabled);
785
786 $userSolutionAdopter->setUserId($ilUser->getId());
787 $userSolutionAdopter->setActiveId($this->testSession->getActiveId());
788 $userSolutionAdopter->setTargetPass($this->testSequence->getPass());
789 $userSolutionAdopter->setQuestionIds($this->testSequence->getOptionalQuestions());
790
791 $userSolutionAdopter->perform();
792 }
_enabledAssessmentLogging()
check wether assessment logging is enabled or not
ILIAS Setting Class.
global $ilDB
global $ilUser
Definition: imgupload.php:15

References ilTestPlayerAbstractGUI\$assSettings, $ilDB, $ilUser, and ilObjAssessmentFolder\_enabledAssessmentLogging().

Referenced by startTestCmd().

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

◆ canSaveResult()

ilTestOutputGUI::canSaveResult ( )
protected

Returns TRUE if the answers of the current user could be saved.

Returns
boolean TRUE if the answers could be saved, FALSE otherwise

Reimplemented from ilTestPlayerAbstractGUI.

Definition at line 544 of file class.ilTestOutputGUI.php.

545 {
546 return !$this->object->endingTimeReached() && !$this->isMaxProcessingTimeReached() && !$this->isNrOfTriesReached();
547 }
isMaxProcessingTimeReached()
Checks wheather the maximum processing time is reached or not.

References ilTestPlayerAbstractGUI\isMaxProcessingTimeReached(), and ilTestPlayerAbstractGUI\isNrOfTriesReached().

Referenced by saveQuestionSolution().

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

◆ discardSolutionCmd()

ilTestOutputGUI::discardSolutionCmd ( )
protected

Reimplemented from ilTestPlayerAbstractGUI.

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

455 {
456 $currentSequenceElement = $this->getCurrentSequenceElement();
457
458 $currentQuestionOBJ = $this->getQuestionInstance(
459 $this->testSequence->getQuestionForSequence($currentSequenceElement)
460 );
461
462 $currentQuestionOBJ->resetUsersAnswer(
463 $this->testSession->getActiveId(), $this->testSession->getPass()
464 );
465
466 $this->ctrl->saveParameter($this, 'sequence');
467
468 $this->ctrl->setParameter($this, 'pmode', ilTestPlayerAbstractGUI::PRESENTATION_MODE_VIEW);
469
470 $this->ctrl->redirect($this, ilTestPlayerCommands::SHOW_QUESTION);
471 }
getQuestionInstance($questionId, $fromCache=true)

References ilTestPlayerAbstractGUI\getCurrentSequenceElement(), ilTestPlayerAbstractGUI\getQuestionInstance(), ilTestPlayerAbstractGUI\PRESENTATION_MODE_VIEW, and ilTestPlayerCommands\SHOW_QUESTION.

+ Here is the call graph for this function:

◆ editSolutionCmd()

ilTestOutputGUI::editSolutionCmd ( )
protected

Reimplemented from ilTestPlayerAbstractGUI.

Definition at line 377 of file class.ilTestOutputGUI.php.

378 {
379 $this->ctrl->setParameter($this, 'pmode', ilTestPlayerAbstractGUI::PRESENTATION_MODE_EDIT);
380 $this->ctrl->redirect($this, ilTestPlayerCommands::SHOW_QUESTION);
381 }

References ilTestPlayerAbstractGUI\PRESENTATION_MODE_EDIT, and ilTestPlayerCommands\SHOW_QUESTION.

◆ executeCommand()

ilTestOutputGUI::executeCommand ( )

Execute Command.

Reimplemented from ilTestServiceGUI.

Definition at line 30 of file class.ilTestOutputGUI.php.

31 {
32 global $ilDB, $ilPluginAdmin, $lng, $ilTabs;
33
34 $this->checkReadAccess();
35
36 $ilTabs->clearTargets();
37
38 $cmd = $this->ctrl->getCmd();
39 $next_class = $this->ctrl->getNextClass($this);
40
41 $this->ctrl->saveParameter($this, "sequence");
42 $this->ctrl->saveParameter($this, "pmode");
43 $this->ctrl->saveParameter($this, "active_id");
44
46
47 $testSessionFactory = new ilTestSessionFactory($this->object);
48 $this->testSession = $testSessionFactory->getSession($_GET['active_id']);
49
50 $this->ensureExistingTestSession($this->testSession);
51
52 $this->initProcessLocker($this->testSession->getActiveId());
53
54 $testSequenceFactory = new ilTestSequenceFactory($ilDB, $lng, $ilPluginAdmin, $this->object);
55 $this->testSequence = $testSequenceFactory->getSequenceByTestSession($this->testSession);
56 $this->testSequence->loadFromDb();
57 $this->testSequence->loadQuestions();
58
59 require_once 'Modules/Test/classes/class.ilTestQuestionRelatedObjectivesList.php';
60 $this->questionRelatedObjectivesList = new ilTestQuestionRelatedObjectivesList();
61
62 include_once 'Services/jQuery/classes/class.iljQueryUtil.php';
64 include_once "./Services/YUI/classes/class.ilYuiUtil.php";
66
68
69 $cmd = $this->getCommand($cmd);
70
71 switch($next_class)
72 {
73 case 'ilassquestionpagegui':
74
75 $this->checkTestExecutable();
76
77 $questionId = $this->testSequence->getQuestionForSequence($this->getCurrentSequenceElement());
78
79 require_once "./Modules/TestQuestionPool/classes/class.ilAssQuestionPageGUI.php";
80 $page_gui = new ilAssQuestionPageGUI($questionId);
81 $ret = $this->ctrl->forwardCommand($page_gui);
82 break;
83
84 case 'iltestsubmissionreviewgui':
85
86 $this->checkTestExecutable();
87
88 require_once './Modules/Test/classes/class.ilTestSubmissionReviewGUI.php';
89 $gui = new ilTestSubmissionReviewGUI($this, $this->object, $this->testSession);
90 $gui->setObjectiveOrientedContainer($this->getObjectiveOrientedContainer());
91 $ret = $this->ctrl->forwardCommand($gui);
92 break;
93
94 case 'ilassquestionhintrequestgui':
95
96 $this->checkTestExecutable();
97
98 $questionGUI = $this->object->createQuestionGUI(
99 "", $this->testSequence->getQuestionForSequence($this->getCurrentSequenceElement())
100 );
101
102 require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionHintTracking.php';
103 $questionHintTracking = new ilAssQuestionHintTracking(
104 $questionGUI->object->getId(), $this->testSession->getActiveId(), $this->testSession->getPass()
105 );
106
107 require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionHintRequestGUI.php';
108 $gui = new ilAssQuestionHintRequestGUI($this, ilTestPlayerCommands::SHOW_QUESTION, $questionGUI, $questionHintTracking);
109
110 $ret = $this->ctrl->forwardCommand($gui);
111
112 break;
113
114 case 'iltestsignaturegui':
115
116 $this->checkTestExecutable();
117
118 require_once './Modules/Test/classes/class.ilTestSignatureGUI.php';
119 $gui = new ilTestSignatureGUI($this);
120 $ret = $this->ctrl->forwardCommand($gui);
121 break;
122
123 case 'iltestpasswordprotectiongui':
124
125 $this->checkTestExecutable();
126
127 require_once 'Modules/Test/classes/class.ilTestPasswordProtectionGUI.php';
128 $gui = new ilTestPasswordProtectionGUI($this->ctrl, $this->tpl, $this->lng, $this, $this->passwordChecker);
129 $ret = $this->ctrl->forwardCommand($gui);
130 break;
131
132 default:
133
135 {
136 $this->checkTestExecutable();
137 }
138
139 $cmd .= 'Cmd';
140 $ret =& $this->$cmd();
141 break;
142 }
143 return $ret;
144 }
$_GET["client_id"]
Question page GUI class.
ensureExistingTestSession(ilTestSession $testSession)
getCommand($cmd)
Retrieves the ilCtrl command.
Signature Plugin Class.
Class ilTestSubmissionReviewGUI.
static initConnectionWithAnimation()
Init YUI Connection module.
static initjQuery($a_tpl=null)
Init jQuery.
$cmd
Definition: sahs_server.php:35

References $_GET, $cmd, $ilDB, ilTestServiceGUI\$lng, $ret, ilTestServiceGUI\$testSequenceFactory, ilTestServiceGUI\$testSessionFactory, ilTestPlayerAbstractGUI\checkReadAccess(), ilTestPlayerAbstractGUI\checkTestExecutable(), ilTestPlayerAbstractGUI\ensureExistingTestSession(), ilTestServiceGUI\getCommand(), ilTestPlayerAbstractGUI\getCurrentSequenceElement(), ilTestServiceGUI\getObjectiveOrientedContainer(), ilTestPlayerAbstractGUI\handlePasswordProtectionRedirect(), ilTestPlayerAbstractGUI\initAssessmentSettings(), ilYuiUtil\initConnectionWithAnimation(), iljQueryUtil\initjQuery(), ilTestPlayerAbstractGUI\initProcessLocker(), ilTestPlayerCommands\isTestExecutionCommand(), and ilTestPlayerCommands\SHOW_QUESTION.

+ Here is the call graph for this function:

◆ generateRandomTestPassForActiveUser()

ilTestOutputGUI::generateRandomTestPassForActiveUser ( )
protected

Definition at line 688 of file class.ilTestOutputGUI.php.

689 {
690 global $tree, $ilDB, $ilPluginAdmin;
691
692 require_once 'Modules/Test/classes/class.ilTestRandomQuestionSetConfig.php';
693 $questionSetConfig = new ilTestRandomQuestionSetConfig($tree, $ilDB, $ilPluginAdmin, $this->object);
694 $questionSetConfig->loadFromDb();
695
696 require_once 'Modules/Test/classes/class.ilTestRandomQuestionSetSourcePoolDefinitionFactory.php';
697 $sourcePoolDefinitionFactory = new ilTestRandomQuestionSetSourcePoolDefinitionFactory($ilDB, $this->object);
698
699 require_once 'Modules/Test/classes/class.ilTestRandomQuestionSetSourcePoolDefinitionList.php';
700 $sourcePoolDefinitionList = new ilTestRandomQuestionSetSourcePoolDefinitionList($ilDB, $this->object, $sourcePoolDefinitionFactory);
701 $sourcePoolDefinitionList->loadDefinitions();
702
703 $this->processLocker->requestRandomPassBuildLock($sourcePoolDefinitionList->hasTaxonomyFilters());
704
706 {
707 require_once 'Modules/Test/classes/class.ilTestRandomQuestionSetStagingPoolQuestionList.php';
708 $stagingPoolQuestionList = new ilTestRandomQuestionSetStagingPoolQuestionList($ilDB, $ilPluginAdmin);
709
710 require_once 'Modules/Test/classes/class.ilTestRandomQuestionSetBuilder.php';
711 $questionSetBuilder = ilTestRandomQuestionSetBuilder::getInstance($ilDB, $this->object, $questionSetConfig, $sourcePoolDefinitionList, $stagingPoolQuestionList);
712
713 $questionSetBuilder->performBuild($this->testSession);
714 }
715
716 $this->processLocker->releaseRandomPassBuildLock();
717 }
static getInstance(ilDB $db, ilObjTest $testOBJ, ilTestRandomQuestionSetConfig $questionSetConfig, ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList, ilTestRandomQuestionSetStagingPoolQuestionList $stagingPoolQuestionList)

References $ilDB, ilTestServiceGUI\$tree, ilTestRandomQuestionSetBuilder\getInstance(), and performTearsAndAngerBrokenConfessionChecks().

Referenced by resumePlayerCmd(), and startTestCmd().

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

◆ getCurrentQuestionId()

ilTestOutputGUI::getCurrentQuestionId ( )
protected
Returns
integer

Reimplemented from ilTestPlayerAbstractGUI.

Definition at line 552 of file class.ilTestOutputGUI.php.

553 {
554 return $this->testSequence->getQuestionForSequence($_GET["sequence"]);
555 }

References $_GET.

◆ handleQuestionActionCmd()

ilTestOutputGUI::handleQuestionActionCmd ( )
protected

Reimplemented from ilTestPlayerAbstractGUI.

Definition at line 638 of file class.ilTestOutputGUI.php.

639 {
640 $questionId = $this->testSequence->getQuestionForSequence(
642 );
643
644 if( !$this->isParticipantsAnswerFixed($questionId) )
645 {
646 $this->updateWorkingTime();
647 $this->saveQuestionSolution(false);
648 }
649
650 $this->ctrl->redirect($this, ilTestPlayerCommands::SHOW_QUESTION);
651 }
saveQuestionSolution($authorized=true, $force=false)
saves the user input of a question
updateWorkingTime()
updates working time and stores state saveresult to see if question has to be stored or not

References ilTestPlayerAbstractGUI\getCurrentSequenceElement(), ilTestPlayerAbstractGUI\isParticipantsAnswerFixed(), saveQuestionSolution(), ilTestPlayerCommands\SHOW_QUESTION, and ilTestPlayerAbstractGUI\updateWorkingTime().

+ Here is the call graph for this function:

◆ handleTearsAndAngerNoObjectiveOrientedQuestion()

ilTestOutputGUI::handleTearsAndAngerNoObjectiveOrientedQuestion ( )
protected

Definition at line 818 of file class.ilTestOutputGUI.php.

819 {
820 ilUtil::sendFailure(sprintf($this->lng->txt('tst_objective_oriented_test_pass_without_questions'), $this->object->getTitle()), true);
821
822 $this->backToInfoScreenCmd();
823 }
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.

References ilTestPlayerAbstractGUI\backToInfoScreenCmd(), and ilUtil\sendFailure().

Referenced by showQuestionCmd().

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

◆ isFirstQuestionInSequence()

ilTestOutputGUI::isFirstQuestionInSequence (   $sequenceElement)
protected

Reimplemented from ilTestPlayerAbstractGUI.

Definition at line 529 of file class.ilTestOutputGUI.php.

530 {
531 return $sequenceElement == $this->testSequence->getFirstSequence();
532 }

◆ isLastQuestionInSequence()

ilTestOutputGUI::isLastQuestionInSequence (   $sequenceElement)
protected

Reimplemented from ilTestPlayerAbstractGUI.

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

535 {
536 return $sequenceElement == $this->testSequence->getLastSequence();
537 }

◆ isOptionalQuestionAnsweringConfirmationRequired()

ilTestOutputGUI::isOptionalQuestionAnsweringConfirmationRequired (   $sequenceKey)
protected

Reimplemented from ilTestPlayerAbstractGUI.

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

797 {
798 if( $this->testSequence->isAnsweringOptionalQuestionsConfirmed() )
799 {
800 return false;
801 }
802
803 $questionId = $this->testSequence->getQuestionForSequence($sequenceKey);
804
805 if( !$this->testSequence->isQuestionOptional($questionId) )
806 {
807 return false;
808 }
809
810 return true;
811 }

◆ isQuestionSummaryFinishTestButtonRequired()

ilTestOutputGUI::isQuestionSummaryFinishTestButtonRequired ( )
protected

Reimplemented from ilTestPlayerAbstractGUI.

Definition at line 813 of file class.ilTestOutputGUI.php.

814 {
815 return true;
816 }

◆ isShowingPostponeStatusReguired()

ilTestOutputGUI::isShowingPostponeStatusReguired (   $questionId)
protected

Reimplemented from ilTestPlayerAbstractGUI.

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

770 {
771 return $this->testSequence->isPostponedQuestion($questionId);
772 }

◆ isValidSequenceElement()

ilTestOutputGUI::isValidSequenceElement (   $sequenceElement)
private

Definition at line 223 of file class.ilTestOutputGUI.php.

224 {
225 if( $sequenceElement === false )
226 {
227 return false;
228 }
229
230 if( $sequenceElement < 1 )
231 {
232 return false;
233 }
234
235 if( !$this->testSequence->getPositionOfSequence($sequenceElement) )
236 {
237 return false;
238 }
239
240 return true;
241 }

Referenced by nextQuestionCmd(), previousQuestionCmd(), showQuestionCmd(), skipQuestionCmd(), and submitSolutionAndNextCmd().

+ Here is the caller graph for this function:

◆ nextQuestionCmd()

ilTestOutputGUI::nextQuestionCmd ( )
protected

Reimplemented from ilTestPlayerAbstractGUI.

Definition at line 495 of file class.ilTestOutputGUI.php.

496 {
497 $sequenceElement = $this->testSequence->getNextSequence(
499 );
500
501 if(!$this->isValidSequenceElement($sequenceElement))
502 {
503 $sequenceElement = $this->testSequence->getFirstSequence();
504 }
505
506 $this->ctrl->setParameter($this, 'sequence', $sequenceElement);
507 $this->ctrl->setParameter($this, 'pmode', '');
508
509 $this->ctrl->redirect($this, ilTestPlayerCommands::SHOW_QUESTION);
510 }
isValidSequenceElement($sequenceElement)

References ilTestPlayerAbstractGUI\getCurrentSequenceElement(), isValidSequenceElement(), and ilTestPlayerCommands\SHOW_QUESTION.

+ Here is the call graph for this function:

◆ performTearsAndAngerBrokenConfessionChecks()

ilTestOutputGUI::performTearsAndAngerBrokenConfessionChecks ( )
protected

Definition at line 653 of file class.ilTestOutputGUI.php.

654 {
655 if ($this->testSession->getActiveId() > 0)
656 {
657 if ($this->testSequence->hasRandomQuestionsForPass($this->testSession->getActiveId(), $this->testSession->getPass()) > 0)
658 {
659 // Something went wrong. Maybe the user pressed the start button twice
660 // Questions already exist so there is no need to create new questions
661
662 global $ilLog, $ilUser;
663
664 $ilLog->write(
665 __METHOD__.' Random Questions allready exists for user '.
666 $ilUser->getId().' in test '.$this->object->getTestId()
667 );
668
669 return true;
670 }
671 }
672 else
673 {
674 // This may not happen! If it happens, raise a fatal error...
675
676 global $ilLog, $ilUser;
677
678 $ilLog->write(__METHOD__.' '.sprintf(
679 $this->lng->txt("error_random_question_generation"), $ilUser->getId(), $this->object->getTestId()
680 ));
681
682 return true;
683 };
684
685 return false;
686 }

References $ilLog, and $ilUser.

Referenced by generateRandomTestPassForActiveUser().

+ Here is the caller graph for this function:

◆ populateQuestionOptionalMessage()

ilTestOutputGUI::populateQuestionOptionalMessage ( )
abstractprotected

Reimplemented in ilTestPlayerFixedQuestionSetGUI, and ilTestPlayerRandomQuestionSetGUI.

Referenced by showQuestionCmd().

+ Here is the caller graph for this function:

◆ previousQuestionCmd()

ilTestOutputGUI::previousQuestionCmd ( )
protected

Reimplemented from ilTestPlayerAbstractGUI.

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

513 {
514 $sequenceElement = $this->testSequence->getPreviousSequence(
516 );
517
518 if(!$this->isValidSequenceElement($sequenceElement))
519 {
520 $sequenceElement = $this->testSequence->getLastSequence();
521 }
522
523 $this->ctrl->setParameter($this, 'sequence', $sequenceElement);
524 $this->ctrl->setParameter($this, 'pmode', '');
525
526 $this->ctrl->redirect($this, ilTestPlayerCommands::SHOW_QUESTION);
527 }

References ilTestPlayerAbstractGUI\getCurrentSequenceElement(), isValidSequenceElement(), and ilTestPlayerCommands\SHOW_QUESTION.

+ Here is the call graph for this function:

◆ resumePlayerCmd()

ilTestOutputGUI::resumePlayerCmd ( )
protected

Resume a test at the last position.

Reimplemented from ilTestPlayerAbstractGUI.

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

723 {
724 $this->handleUserSettings();
725
726 $active_id = $this->testSession->getActiveId();
727 $this->ctrl->setParameter($this, "active_id", $active_id);
728
729 $active_time_id = $this->object->startWorkingTime($active_id, $this->testSession->getPass());
730 $_SESSION["active_time_id"] = $active_time_id;
731 $_SESSION['tst_pass_finish'] = 0;
732
733 if ($this->object->isRandomTest())
734 {
735 if (!$this->testSequence->hasRandomQuestionsForPass($active_id, $this->testSession->getPass()))
736 {
737 // create a new set of random questions
739 }
740 }
741
742 $shuffle = $this->object->getShuffleQuestions();
743 if ($this->object->isRandomTest())
744 {
745 $shuffle = FALSE;
746 }
747
748 assQuestion::_updateTestPassResults(
749 $active_id, $this->testSession->getPass(), $this->object->areObligationsEnabled(), null, $this->object->id
750 );
751
752 // ensure existing test sequence
753 if( !$this->testSequence->hasSequence() )
754 {
755 $this->testSequence->createNewSequence($this->object->getQuestionCount(), $shuffle);
756 $this->testSequence->saveToDb();
757 }
758
759 if ($this->object->getListOfQuestionsStart())
760 {
761 $this->ctrl->redirect($this, ilTestPlayerCommands::QUESTION_SUMMARY);
762 }
763
764 $this->ctrl->setParameter($this, 'sequence', $this->testSession->getLastSequence());
765 $this->ctrl->setParameter($this, 'pmode', '');
766 $this->ctrl->redirect($this, ilTestPlayerCommands::SHOW_QUESTION);
767 }
$_SESSION["AccountId"]
handleUserSettings()
Handles some form parameters on starting and resuming a test.

References $_SESSION, generateRandomTestPassForActiveUser(), ilTestPlayerAbstractGUI\handleUserSettings(), ilTestPlayerCommands\QUESTION_SUMMARY, and ilTestPlayerCommands\SHOW_QUESTION.

+ Here is the call graph for this function:

◆ saveQuestionSolution()

ilTestOutputGUI::saveQuestionSolution (   $authorized = true,
  $force = false 
)

saves the user input of a question

Reimplemented from ilTestPlayerAbstractGUI.

Definition at line 560 of file class.ilTestOutputGUI.php.

561 {
562 $this->updateWorkingTime();
563 $this->saveResult = FALSE;
564 if (!$force)
565 {
566 $formtimestamp = $_POST["formtimestamp"];
567 if (strlen($formtimestamp) == 0) $formtimestamp = $_GET["formtimestamp"];
568 if ($formtimestamp != $_SESSION["formtimestamp"])
569 {
570 $_SESSION["formtimestamp"] = $formtimestamp;
571 }
572 else
573 {
574 return FALSE;
575 }
576 }
577 // save question solution
578 if ($this->canSaveResult() || $force)
579 {
580 // but only if the ending time is not reached
581 $q_id = $this->testSequence->getQuestionForSequence($_GET["sequence"]);
582 if (is_numeric($q_id) && (int)$q_id)
583 {
584 $questionOBJ = $this->getQuestionInstance($q_id);
585 $pass = NULL;
586 $active_id = $this->testSession->getActiveId();
587 if ($this->object->isRandomTest())
588 {
589 $pass = $this->object->_getPass($active_id);
590 }
591 $this->saveResult = $questionOBJ->persistWorkingState(
592 $active_id, $pass, $this->object->areObligationsEnabled(), $authorized
593 );
594
595 if( $authorized && $this->testSession->isObjectiveOriented() )
596 {
597 require_once 'Modules/Course/classes/Objectives/class.ilLOTestQuestionAdapter.php';
598 $objectivesAdapter = ilLOTestQuestionAdapter::getInstance($this->testSession);
599 $objectivesAdapter->updateQuestionResult($this->testSession, $questionOBJ);
600 }
601
602 if( $authorized && $this->object->isSkillServiceToBeConsidered() )
603 {
604 $this->handleSkillTriggering($this->testSession);
605 }
606 }
607 }
608
609 if ($this->saveResult == FALSE)
610 {
611 $this->ctrl->setParameter($this, "save_error", "1");
612 $_SESSION["previouspost"] = $_POST;
613 }
614
615 return $this->saveResult;
616 }
static getInstance(ilTestSession $a_test_session)
canSaveResult()
Returns TRUE if the answers of the current user could be saved.
handleSkillTriggering(ilTestSession $testSession)
$_POST['username']
Definition: cron.php:12

References $_GET, $_POST, $_SESSION, $pass, ilTestPlayerAbstractGUI\$saveResult, canSaveResult(), ilLOTestQuestionAdapter\getInstance(), ilTestPlayerAbstractGUI\getQuestionInstance(), ilTestPlayerAbstractGUI\handleSkillTriggering(), and ilTestPlayerAbstractGUI\updateWorkingTime().

Referenced by handleQuestionActionCmd(), showInstantResponseCmd(), submitSolutionAndNextCmd(), and submitSolutionCmd().

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

◆ showInstantResponseCmd()

ilTestOutputGUI::showInstantResponseCmd ( )
protected

Reimplemented from ilTestPlayerAbstractGUI.

Definition at line 618 of file class.ilTestOutputGUI.php.

619 {
620 $questionId = $this->testSequence->getQuestionForSequence(
622 );
623
624 if( !$this->isParticipantsAnswerFixed($questionId) )
625 {
627 $this->object->isInstantFeedbackAnswerFixationEnabled()
628 );
629
630 $this->testSequence->setQuestionChecked($questionId);
631 $this->testSequence->saveToDb();
632 }
633
634 $this->ctrl->setParameter($this, 'instresp', 1);
635 $this->ctrl->redirect($this, ilTestPlayerCommands::SHOW_QUESTION);
636 }

References ilTestPlayerAbstractGUI\getCurrentSequenceElement(), ilTestPlayerAbstractGUI\isParticipantsAnswerFixed(), saveQuestionSolution(), and ilTestPlayerCommands\SHOW_QUESTION.

+ Here is the call graph for this function:

◆ showQuestionCmd()

ilTestOutputGUI::showQuestionCmd ( )
protected

Reimplemented from ilTestPlayerAbstractGUI.

Definition at line 243 of file class.ilTestOutputGUI.php.

244 {
245 $_SESSION['tst_pass_finish'] = 0;
246
247 $_SESSION["active_time_id"]= $this->object->startWorkingTime(
248 $this->testSession->getActiveId(), $this->testSession->getPass()
249 );
250
251 $sequenceElement = $this->getCurrentSequenceElement();
252
253 if( !$this->isValidSequenceElement($sequenceElement) )
254 {
255 $sequenceElement = $this->testSequence->getFirstSequence();
256 }
257
258 $this->testSession->setLastSequence($sequenceElement);
259 $this->testSession->saveToDb();
260
261
262 $questionId = $this->testSequence->getQuestionForSequence($sequenceElement);
263
264 if( !(int)$questionId && $this->testSession->isObjectiveOriented() )
265 {
267 }
268
269 $isQuestionWorkedThrough = assQuestion::_isWorkedThrough(
270 $this->testSession->getActiveId(), $questionId, $this->testSession->getPass()
271 );
272 $missingQuestionResultExists = assQuestion::missingResultRecordExists(
273 $this->testSession->getActiveId(), $this->testSession->getPass(),
274 $this->testSequence->getOrderedSequenceQuestions()
275 );
276
277 $presentationMode = $this->getPresentationModeParameter();
278 $instantResponse = $this->getInstantResponseParameter();
279
280 if( !$presentationMode )
281 {
282 $presentationMode = $this->getQuestionsDefaultPresentationMode($isQuestionWorkedThrough);
283 }
284
285 if( $this->isParticipantsAnswerFixed($questionId) )
286 {
288 $instantResponse = true;
289 }
290
291 $questionGui = $this->getQuestionGuiInstance($questionId);
292
293 if( !($questionGui instanceof assQuestionGUI) )
294 {
295 $this->handleTearsAndAngerQuestionIsNull($questionId, $sequenceElement);
296 }
297
298 $questionGui->setSequenceNumber($this->testSequence->getPositionOfSequence($sequenceElement));
299 $questionGui->setQuestionCount($this->testSequence->getUserQuestionCount());
300
301 require_once 'Modules/Test/classes/class.ilTestQuestionHeaderBlockBuilder.php';
302 $headerBlockBuilder = new ilTestQuestionHeaderBlockBuilder($this->lng);
303 $headerBlockBuilder->setHeaderMode($this->object->getTitleOutput());
304 $headerBlockBuilder->setQuestionTitle($questionGui->object->getTitle());
305 $headerBlockBuilder->setQuestionPoints($questionGui->object->getPoints());
306 $headerBlockBuilder->setQuestionPosition($this->testSequence->getPositionOfSequence($sequenceElement));
307 $headerBlockBuilder->setQuestionCount($this->testSequence->getUserQuestionCount());
308 $headerBlockBuilder->setQuestionPostponed($this->testSequence->isPostponedQuestion($questionId));
309 $headerBlockBuilder->setQuestionObligatory(
310 $this->object->areObligationsEnabled() && ilObjTest::isQuestionObligatory($questionGui->object->getId())
311 );
312 if( $this->testSession->isObjectiveOriented() )
313 {
314 require_once 'Modules/Course/classes/Objectives/class.ilLOTestQuestionAdapter.php';
315 $objectivesAdapter = ilLOTestQuestionAdapter::getInstance($this->testSession);
316 $objectivesAdapter->buildQuestionRelatedObjectiveList($this->testSequence, $this->questionRelatedObjectivesList);
317 $this->questionRelatedObjectivesList->loadObjectivesTitles();
318
319 $objectivesString = $this->questionRelatedObjectivesList->getQuestionRelatedObjectiveTitles($questionId);
320 $headerBlockBuilder->setQuestionRelatedObjectives($objectivesString);
321 }
322 $questionGui->setQuestionHeaderBlockBuilder($headerBlockBuilder);
323
324 $this->prepareTestPage($presentationMode, $sequenceElement, $questionId);
325
326 $navigationToolbarGUI = $this->getTestNavigationToolbarGUI();
327 $navigationToolbarGUI->setFinishTestButtonEnabled(true);
328
329 $this->ctrl->setParameter($this, 'sequence', $sequenceElement);
330 $this->ctrl->setParameter($this, 'pmode', $presentationMode);
331 $formAction = $this->ctrl->getFormAction($this, ilTestPlayerCommands::SUBMIT_INTERMEDIATE_SOLUTION);
332
333 switch($presentationMode)
334 {
336
337 $navigationToolbarGUI->setDisabledStateEnabled(true);
338
339 $this->showQuestionEditable($questionGui, $formAction, $isQuestionWorkedThrough, $instantResponse);
340
341 break;
342
344
345 $navigationToolbarGUI->setFinishTestButtonPrimary(!$missingQuestionResultExists);
346
347 if( $this->testSequence->isQuestionOptional($questionGui->object->getId()) )
348 {
350 }
351
352 $this->showQuestionViewable($questionGui, $formAction, $isQuestionWorkedThrough, $instantResponse);
353
354 break;
355
356 default:
357
358 require_once 'Modules/Test/exceptions/class.ilTestException.php';
359 throw new ilTestException('no presentation mode given');
360 }
361
362 $navigationToolbarGUI->build();
363 $this->populateTestNavigationToolbar($navigationToolbarGUI);
364
366 $sequenceElement, $presentationMode == ilTestPlayerAbstractGUI::PRESENTATION_MODE_EDIT
367 );
368
369 if ($instantResponse)
370 {
372 $questionGui, $presentationMode == ilTestPlayerAbstractGUI::PRESENTATION_MODE_VIEW
373 );
374 }
375 }
Basic GUI class for assessment questions.
static missingResultRecordExists($activeId, $pass, $questionIds)
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 ...
static isQuestionObligatory($question_id)
checks wether the question with given id is marked as obligatory or not
Base Exception for all Exceptions relating to Modules/Test.
populateQuestionOptionalMessage()
populateQuestionNavigation($sequenceElement, $disabled)
prepareTestPage($presentationMode, $sequenceElement, $questionId)
handleTearsAndAngerQuestionIsNull($questionId, $sequenceElement)
showQuestionEditable(assQuestionGUI $questionGui, $formAction, $isQuestionWorkedThrough, $instantResponse)
getQuestionGuiInstance($questionId, $fromCache=true)
populateInstantResponseBlocks(assQuestionGUI $questionGui, $authorizedSolution)
getQuestionsDefaultPresentationMode($isQuestionWorkedThrough)
populateTestNavigationToolbar(ilTestNavigationToolbarGUI $toolbarGUI)
showQuestionViewable(assQuestionGUI $questionGui, $formAction, $isQuestionWorkedThrough, $instantResponse)

References $_SESSION, assQuestion\_isWorkedThrough(), ilTestPlayerAbstractGUI\getCurrentSequenceElement(), ilLOTestQuestionAdapter\getInstance(), ilTestPlayerAbstractGUI\getInstantResponseParameter(), ilTestPlayerAbstractGUI\getPresentationModeParameter(), ilTestPlayerAbstractGUI\getQuestionGuiInstance(), ilTestPlayerAbstractGUI\getQuestionsDefaultPresentationMode(), ilTestPlayerAbstractGUI\getTestNavigationToolbarGUI(), handleTearsAndAngerNoObjectiveOrientedQuestion(), ilTestPlayerAbstractGUI\handleTearsAndAngerQuestionIsNull(), ilTestPlayerAbstractGUI\isParticipantsAnswerFixed(), ilObjTest\isQuestionObligatory(), isValidSequenceElement(), assQuestion\missingResultRecordExists(), ilTestPlayerAbstractGUI\populateInstantResponseBlocks(), ilTestPlayerAbstractGUI\populateQuestionNavigation(), populateQuestionOptionalMessage(), ilTestPlayerAbstractGUI\populateTestNavigationToolbar(), ilTestPlayerAbstractGUI\prepareTestPage(), ilTestPlayerAbstractGUI\PRESENTATION_MODE_EDIT, ilTestPlayerAbstractGUI\PRESENTATION_MODE_VIEW, ilTestPlayerAbstractGUI\showQuestionEditable(), ilTestPlayerAbstractGUI\showQuestionViewable(), and ilTestPlayerCommands\SUBMIT_INTERMEDIATE_SOLUTION.

+ Here is the call graph for this function:

◆ skipQuestionCmd()

ilTestOutputGUI::skipQuestionCmd ( )
protected

Reimplemented from ilTestPlayerAbstractGUI.

Definition at line 473 of file class.ilTestOutputGUI.php.

474 {
475 $curSequenceElement = $this->getCurrentSequenceElement();
476 $nextSequenceElement = $this->testSequence->getNextSequence($curSequenceElement);
477
478 if(!$this->isValidSequenceElement($nextSequenceElement))
479 {
480 $nextSequenceElement = $this->testSequence->getFirstSequence();
481 }
482
483 if( $this->object->isPostponingEnabled() )
484 {
485 $this->testSequence->postponeSequence($curSequenceElement);
486 $this->testSequence->saveToDb();
487 }
488
489 $this->ctrl->setParameter($this, 'sequence', $nextSequenceElement);
490 $this->ctrl->setParameter($this, 'pmode', '');
491
492 $this->ctrl->redirect($this, ilTestPlayerCommands::SHOW_QUESTION);
493 }

References ilTestPlayerAbstractGUI\getCurrentSequenceElement(), isValidSequenceElement(), and ilTestPlayerCommands\SHOW_QUESTION.

+ Here is the call graph for this function:

◆ startTestCmd()

ilTestOutputGUI::startTestCmd ( )
protected

Reimplemented from ilTestPlayerAbstractGUI.

Definition at line 146 of file class.ilTestOutputGUI.php.

147 {
148 global $ilUser;
149
150 $_SESSION['tst_pass_finish'] = 0;
151
152 // ensure existing test session
153 $this->testSession->setUserId($ilUser->getId());
154 $this->testSession->setAnonymousId($_SESSION["tst_access_code"][$this->object->getTestId()]);
155 $this->testSession->setObjectiveOrientedContainerId($this->getObjectiveOrientedContainer()->getObjId());
156 $this->testSession->saveToDb();
157
158 $active_id = $this->testSession->getActiveId();
159 $this->ctrl->setParameter($this, "active_id", $active_id);
160
161 $shuffle = $this->object->getShuffleQuestions();
162 if ($this->object->isRandomTest())
163 {
165
166 $this->object->loadQuestions();
167 $shuffle = FALSE; // shuffle is already done during the creation of the random questions
168 }
169
170 assQuestion::_updateTestPassResults(
171 $active_id, $this->testSession->getPass(), $this->object->areObligationsEnabled(), null, $this->object->id
172 );
173
174 // ensure existing test sequence
175 if( !$this->testSequence->hasSequence() )
176 {
177 $this->testSequence->createNewSequence($this->object->getQuestionCount(), $shuffle);
178 $this->testSequence->saveToDb();
179 }
180
181 $this->testSequence->loadFromDb();
182 $this->testSequence->loadQuestions();
183
184 if( $this->testSession->isObjectiveOriented() )
185 {
186 require_once 'Modules/Course/classes/Objectives/class.ilLOTestQuestionAdapter.php';
187 $objectivesAdapter = ilLOTestQuestionAdapter::getInstance($this->testSession);
188
189 $objectivesAdapter->notifyTestStart($this->testSession, $this->object->getId());
190 $objectivesAdapter->prepareTestPass($this->testSession, $this->testSequence);
191
192 $objectivesAdapter->buildQuestionRelatedObjectiveList(
193 $this->testSequence, $this->questionRelatedObjectivesList
194 );
195
196 if( $this->testSequence->hasOptionalQuestions() )
197 {
199
200 $this->testSequence->reorderOptionalQuestionsToSequenceEnd();
201 $this->testSequence->saveToDb();
202 }
203 }
204
205 $active_time_id = $this->object->startWorkingTime(
206 $this->testSession->getActiveId(), $this->testSession->getPass()
207 );
208 $_SESSION["active_time_id"] = $active_time_id;
209
210 $sequenceElement = $this->testSequence->getFirstSequence();
211
212 $this->ctrl->setParameter($this, 'sequence', $sequenceElement);
213 $this->ctrl->setParameter($this, 'pmode', '');
214
215 if ($this->object->getListOfQuestionsStart())
216 {
217 $this->ctrl->redirect($this, ilTestPlayerCommands::QUESTION_SUMMARY);
218 }
219
220 $this->ctrl->redirect($this, ilTestPlayerCommands::SHOW_QUESTION);
221 }

References $_SESSION, $ilUser, adoptUserSolutionsFromPreviousPass(), generateRandomTestPassForActiveUser(), ilLOTestQuestionAdapter\getInstance(), ilTestServiceGUI\getObjectiveOrientedContainer(), ilTestPlayerCommands\QUESTION_SUMMARY, and ilTestPlayerCommands\SHOW_QUESTION.

+ Here is the call graph for this function:

◆ submitSolutionAndNextCmd()

ilTestOutputGUI::submitSolutionAndNextCmd ( )
protected

Definition at line 383 of file class.ilTestOutputGUI.php.

384 {
385 if( $this->object->isForceInstantFeedbackEnabled() )
386 {
387 return $this->submitSolutionCmd();
388 }
389
390 if( $this->saveQuestionSolution(true, false) )
391 {
392 $questionId = $this->testSequence->getQuestionForSequence(
394 );
395
396 $this->getQuestionInstance($questionId)->removeIntermediateSolution(
397 $this->testSession->getActiveId(), $this->testSession->getPass()
398 );
399
400 $nextSequenceElement = $this->testSequence->getNextSequence($this->getCurrentSequenceElement());
401
402 if(!$this->isValidSequenceElement($nextSequenceElement))
403 {
404 $nextSequenceElement = $this->testSequence->getFirstSequence();
405 }
406
407 $this->testSession->setLastSequence($nextSequenceElement);
408 $this->testSession->saveToDb();
409
410 $this->ctrl->setParameter($this, 'sequence', $nextSequenceElement);
411 $this->ctrl->setParameter($this, 'pmode', '');
412 }
413
414 $this->ctrl->redirect($this, ilTestPlayerCommands::SHOW_QUESTION);
415 }

References ilTestPlayerAbstractGUI\getCurrentSequenceElement(), ilTestPlayerAbstractGUI\getQuestionInstance(), isValidSequenceElement(), saveQuestionSolution(), ilTestPlayerCommands\SHOW_QUESTION, and submitSolutionCmd().

+ Here is the call graph for this function:

◆ submitSolutionCmd()

ilTestOutputGUI::submitSolutionCmd ( )
protected

Reimplemented from ilTestPlayerAbstractGUI.

Definition at line 417 of file class.ilTestOutputGUI.php.

418 {
419 if( $this->saveQuestionSolution(true, false) )
420 {
421 $questionId = $this->testSequence->getQuestionForSequence(
423 );
424
425 $this->getQuestionInstance($questionId)->removeIntermediateSolution(
426 $this->testSession->getActiveId(), $this->testSession->getPass()
427 );
428
429 if( $this->object->isForceInstantFeedbackEnabled() )
430 {
431 $this->ctrl->setParameter($this, 'instresp', 1);
432
433 $this->testSequence->setQuestionChecked($questionId);
434 $this->testSequence->saveToDb();
435 }
436
437 if( $this->getNextCommandParameter() )
438 {
439 if( $this->getNextSequenceParameter() )
440 {
441 $this->ctrl->setParameter($this, 'sequence', $this->getNextSequenceParameter());
442 $this->ctrl->setParameter($this, 'pmode', '');
443 }
444
445 $this->ctrl->redirect($this, $this->getNextCommandParameter());
446 }
447
448 $this->ctrl->setParameter($this, 'pmode', ilTestPlayerAbstractGUI::PRESENTATION_MODE_VIEW);
449 }
450
451 $this->ctrl->redirect($this, ilTestPlayerCommands::SHOW_QUESTION);
452 }

References ilTestPlayerAbstractGUI\getCurrentSequenceElement(), ilTestPlayerAbstractGUI\getNextCommandParameter(), ilTestPlayerAbstractGUI\getNextSequenceParameter(), ilTestPlayerAbstractGUI\getQuestionInstance(), ilTestPlayerAbstractGUI\PRESENTATION_MODE_VIEW, saveQuestionSolution(), and ilTestPlayerCommands\SHOW_QUESTION.

Referenced by submitSolutionAndNextCmd().

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

Field Documentation

◆ $questionRelatedObjectivesList

ilTestOutputGUI::$questionRelatedObjectivesList
protected

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


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