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 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$

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.

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

Referenced by startTestCmd().

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  }
ILIAS Setting Class.
_enabledAssessmentLogging()
check wether assessment logging is enabled or not
global $ilUser
Definition: imgupload.php:15
global $ilDB
+ 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

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

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

Referenced by saveQuestionSolution().

545  {
546  return !$this->object->endingTimeReached() && !$this->isMaxProcessingTimeReached() && !$this->isNrOfTriesReached();
547  }
isMaxProcessingTimeReached()
Checks wheather the maximum processing time is reached or not.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ discardSolutionCmd()

ilTestOutputGUI::discardSolutionCmd ( )
protected

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

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

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)
+ Here is the call graph for this function:

◆ editSolutionCmd()

ilTestOutputGUI::editSolutionCmd ( )
protected

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

References ilTestPlayerAbstractGUI\PRESENTATION_MODE_EDIT, and ilTestPlayerCommands\SHOW_QUESTION.

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

◆ executeCommand()

ilTestOutputGUI::executeCommand ( )

Execute Command.

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

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.

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 
45  $this->initAssessmentSettings();
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  }
Signature Plugin Class.
$_GET["client_id"]
$cmd
Definition: sahs_server.php:35
Question page GUI class.
ensureExistingTestSession(ilTestSession $testSession)
Class ilTestSubmissionReviewGUI.
getCommand($cmd)
Retrieves the ilCtrl command.
global $ilDB
static initjQuery($a_tpl=null)
Init jQuery.
static initConnectionWithAnimation()
Init YUI Connection module.
+ Here is the call graph for this function:

◆ generateRandomTestPassForActiveUser()

ilTestOutputGUI::generateRandomTestPassForActiveUser ( )
protected

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

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

Referenced by resumePlayerCmd(), and startTestCmd().

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)
global $ilDB
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getCurrentQuestionId()

ilTestOutputGUI::getCurrentQuestionId ( )
protected
Returns
integer

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

References $_GET.

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

◆ handleQuestionActionCmd()

ilTestOutputGUI::handleQuestionActionCmd ( )
protected

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

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

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  }
updateWorkingTime()
updates working time and stores state saveresult to see if question has to be stored or not ...
saveQuestionSolution($authorized=true, $force=false)
saves the user input of a question
+ Here is the call graph for this function:

◆ handleTearsAndAngerNoObjectiveOrientedQuestion()

ilTestOutputGUI::handleTearsAndAngerNoObjectiveOrientedQuestion ( )
protected

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

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

Referenced by showQuestionCmd().

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.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isFirstQuestionInSequence()

ilTestOutputGUI::isFirstQuestionInSequence (   $sequenceElement)
protected

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

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

◆ isLastQuestionInSequence()

ilTestOutputGUI::isLastQuestionInSequence (   $sequenceElement)
protected

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

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

◆ isOptionalQuestionAnsweringConfirmationRequired()

ilTestOutputGUI::isOptionalQuestionAnsweringConfirmationRequired (   $sequenceKey)
protected

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

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

814  {
815  return true;
816  }

◆ isShowingPostponeStatusReguired()

ilTestOutputGUI::isShowingPostponeStatusReguired (   $questionId)
protected

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.

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

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  }
+ Here is the caller graph for this function:

◆ nextQuestionCmd()

ilTestOutputGUI::nextQuestionCmd ( )
protected

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

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

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)
+ Here is the call graph for this function:

◆ performTearsAndAngerBrokenConfessionChecks()

ilTestOutputGUI::performTearsAndAngerBrokenConfessionChecks ( )
protected

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

References $ilLog, and $ilUser.

Referenced by generateRandomTestPassForActiveUser().

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  }
global $ilUser
Definition: imgupload.php:15
+ Here is the caller graph for this function:

◆ populateQuestionOptionalMessage()

ilTestOutputGUI::populateQuestionOptionalMessage ( )
abstractprotected

Referenced by adoptUserSolutionsFromPreviousPass(), and showQuestionCmd().

+ Here is the caller graph for this function:

◆ previousQuestionCmd()

ilTestOutputGUI::previousQuestionCmd ( )
protected

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

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

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  }
isValidSequenceElement($sequenceElement)
+ Here is the call graph for this function:

◆ resumePlayerCmd()

ilTestOutputGUI::resumePlayerCmd ( )
protected

Resume a test at the last position.

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

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

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.
+ Here is the call graph for this function:

◆ saveQuestionSolution()

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

saves the user input of a question

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

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

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

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  }
$_POST['username']
Definition: cron.php:12
$_SESSION["AccountId"]
$_GET["client_id"]
updateWorkingTime()
updates working time and stores state saveresult to see if question has to be stored or not ...
static getInstance(ilTestSession $a_test_session)
handleSkillTriggering(ilTestSession $testSession)
getQuestionInstance($questionId, $fromCache=true)
canSaveResult()
Returns TRUE if the answers of the current user could be saved.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ showInstantResponseCmd()

ilTestOutputGUI::showInstantResponseCmd ( )
protected

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

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

619  {
620  $questionId = $this->testSequence->getQuestionForSequence(
622  );
623 
624  if( !$this->isParticipantsAnswerFixed($questionId) )
625  {
626  $this->saveQuestionSolution(
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  }
saveQuestionSolution($authorized=true, $force=false)
saves the user input of a question
+ Here is the call graph for this function:

◆ showQuestionCmd()

ilTestOutputGUI::showQuestionCmd ( )
protected

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

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.

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  }
isValidSequenceElement($sequenceElement)
populateQuestionOptionalMessage()
$_SESSION["AccountId"]
showQuestionEditable(assQuestionGUI $questionGui, $formAction, $isQuestionWorkedThrough, $instantResponse)
Base Exception for all Exceptions relating to Modules/Test.
prepareTestPage($presentationMode, $sequenceElement, $questionId)
populateInstantResponseBlocks(assQuestionGUI $questionGui, $authorizedSolution)
static isQuestionObligatory($question_id)
checks wether the question with given id is marked as obligatory or not
static getInstance(ilTestSession $a_test_session)
populateTestNavigationToolbar(ilTestNavigationToolbarGUI $toolbarGUI)
Basic GUI class for assessment questions.
showQuestionViewable(assQuestionGUI $questionGui, $formAction, $isQuestionWorkedThrough, $instantResponse)
populateQuestionNavigation($sequenceElement, $disabled)
getQuestionGuiInstance($questionId, $fromCache=true)
getQuestionsDefaultPresentationMode($isQuestionWorkedThrough)
handleTearsAndAngerQuestionIsNull($questionId, $sequenceElement)
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 missingResultRecordExists($activeId, $pass, $questionIds)
+ Here is the call graph for this function:

◆ skipQuestionCmd()

ilTestOutputGUI::skipQuestionCmd ( )
protected

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

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

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  }
isValidSequenceElement($sequenceElement)
+ Here is the call graph for this function:

◆ startTestCmd()

ilTestOutputGUI::startTestCmd ( )
protected

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

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

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  }
$_SESSION["AccountId"]
static getInstance(ilTestSession $a_test_session)
global $ilUser
Definition: imgupload.php:15
+ Here is the call graph for this function:

◆ submitSolutionAndNextCmd()

ilTestOutputGUI::submitSolutionAndNextCmd ( )
protected

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

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

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  }
isValidSequenceElement($sequenceElement)
saveQuestionSolution($authorized=true, $force=false)
saves the user input of a question
getQuestionInstance($questionId, $fromCache=true)
+ Here is the call graph for this function:

◆ submitSolutionCmd()

ilTestOutputGUI::submitSolutionCmd ( )
protected

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

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

Referenced by submitSolutionAndNextCmd().

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  }
saveQuestionSolution($authorized=true, $force=false)
saves the user input of a question
getQuestionInstance($questionId, $fromCache=true)
+ 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: