ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
class.ilTestScoring.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3
24{
26 protected $test;
27
29 protected $testGUI;
30
33
34 public function __construct(ilObjTest $test)
35 {
36 $this->test = $test;
37 $this->preserve_manual_scores = false;
38
39 require_once './Modules/Test/classes/class.ilObjTestGUI.php';
40 $this->testGUI = new ilObjTestGUI();
41 }
42
47 {
48 $this->preserve_manual_scores = $preserve_manual_scores;
49 }
50
54 public function getPreserveManualScores()
55 {
57 }
58
59 public function recalculateSolutions()
60 {
61 $participants = $this->test->getCompleteEvaluationData(false)->getParticipants();
62 if (is_array($participants))
63 {
64 require_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
65 foreach ($participants as $active_id => $userdata)
66 {
67 if (is_object($userdata) && is_array($userdata->getPasses()))
68 {
69 $this->recalculatePasses( $userdata, $active_id );
70 }
72 }
73 }
74 }
75
80 public function recalculatePasses($userdata, $active_id)
81 {
82 require_once './Modules/Test/classes/class.ilTestEvaluationGUI.php'; // Below!
83 require_once './Modules/Test/classes/class.ilTestPDFGenerator.php';
84 require_once './Modules/Test/classes/class.ilTestArchiver.php';
85
86 $passes = $userdata->getPasses();
87 foreach ($passes as $pass => $passdata)
88 {
89 if (is_object( $passdata ))
90 {
91 $this->recalculatePass( $passdata, $active_id, $pass );
92 if ($this->test->getEnableArchiving())
93 {
94 // requires out of the loop!
95 $test_evaluation_gui = new ilTestEvaluationGUI($this->test);
96 $result_array = $this->test->getTestResult($active_id, $pass);
97 $overview = $test_evaluation_gui->getPassListOfAnswers($result_array, $active_id, $pass, true, false, false, true);
98 $filename = ilUtil::getWebspaceDir() . '/assessment/scores-'.$this->test->getId() . '-' . $active_id . '-' . $pass . '.pdf';
100 $archiver = new ilTestArchiver($this->test->getId());
101 $archiver->handInTestResult($active_id, $pass, $filename);
102 unlink($filename);
103 }
104 }
105 }
106 }
107
113 public function recalculatePass($passdata, $active_id, $pass)
114 {
115 $questions = $passdata->getAnsweredQuestions();
116 if (is_array( $questions ))
117 {
118 foreach ($questions as $questiondata)
119 {
120 $question_gui = $this->test->createQuestionGUI( "", $questiondata['id'] );
121 $this->recalculateQuestionScore( $question_gui, $active_id, $pass, $questiondata );
122 }
123 }
124
125 }
126
133 public function recalculateQuestionScore($question_gui, $active_id, $pass, $questiondata)
134 {
136 if (is_object( $question_gui ))
137 {
138 $reached = $question_gui->object->calculateReachedPoints( $active_id, $pass );
139 $actual_reached = $question_gui->object->adjustReachedPointsByScoringOptions($reached, $active_id, $pass);
140
141 if ($this->preserve_manual_scores == true && $questiondata['manual'] == '1')
142 {
143 // Do we need processing here?
144 }
145 else
146 {
148 $questiondata['id'],
149 $actual_reached,
150 $question_gui->object->getMaximumPoints(),
151 $pass,
152 false,
153 true
154 );
155 }
156 }
157 }
158
162 public function calculateBestSolutionForTest()
163 {
164 $solution = '';
165 foreach ($this->test->getAllQuestions() as $question)
166 {
168 $question_gui = $this->test->createQuestionGUI("", $question['question_id'] );
169 $solution .= $question_gui->getSolutionOutput(0, null, true, true, false, false, true, false);
170 }
171
172 return $solution;
173 }
174}
$filename
Definition: buildRTE.php:89
_updateTestResultCache($active_id, ilAssQuestionProcessLocker $processLocker=null)
@TODO Move this to a proper place.
_setReachedPoints($active_id, $question_id, $points, $maxpoints, $pass, $manualscoring, $obligationsEnabled)
Sets the points, a learner has reached answering the question Additionally objective results are upda...
Class ilObjTestGUI.
Class ilTestArchiver.
Output class for assessment test evaluation.
static generatePDF($pdf_output, $output_mode, $filename=null)
Class ilTestScoring.
setPreserveManualScores( $preserve_manual_scores)
recalculatePasses($userdata, $active_id)
recalculatePass($passdata, $active_id, $pass)
__construct(ilObjTest $test)
static getWebspaceDir($mode="filesystem")
get webspace directory