ILIAS  release_4-4 Revision
All Data Structures Namespaces Files Functions Variables Modules Pages
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  {
147  assQuestion::_setReachedPoints( $active_id,
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 }
Class ilObjTestGUI.
recalculatePass($passdata, $active_id, $pass)
Output class for assessment test evaluation.
__construct(ilObjTest $test)
Class ilTestScoring.
$filename
Definition: buildRTE.php:89
Class ilTestArchiver.
setPreserveManualScores( $preserve_manual_scores)
static generatePDF($pdf_output, $output_mode, $filename=null)
_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...
_updateTestResultCache($active_id, ilAssQuestionProcessLocker $processLocker=null)
Move this to a proper place.
static getWebspaceDir($mode="filesystem")
get webspace directory
recalculatePasses($userdata, $active_id)
handInTestResult($active_fi, $pass, $pdf_path)
Hands in an individual test result for a pass.