ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
ASS_MarkSchema Class Reference

A class defining mark schemas for assessment test objects. More...

+ Collaboration diagram for ASS_MarkSchema:

Public Member Functions

 __construct ()
 ASS_MarkSchema constructor. More...
 
 createSimpleSchema ( $txt_failed_short="failed", $txt_failed_official="failed", $percentage_failed=0, $failed_passed=0, $txt_passed_short="passed", $txt_passed_official="passed", $percentage_passed=50, $passed_passed=1)
 Creates a simple mark schema for two mark steps: failed and passed. More...
 
 addMarkStep ($txt_short="", $txt_official="", $percentage=0, $passed=0)
 Adds a mark step to the mark schema. More...
 
 saveToDb ($test_id)
 Saves an ASS_MarkSchema object to a database. More...
 
 loadFromDb ($test_id)
 Loads an ASS_MarkSchema object from a database. More...
 
 flush ()
 Empties the mark schema and removes all mark steps. More...
 
 sort ()
 Sorts the mark schema using the minimum level values. More...
 
 deleteMarkStep ($index=0)
 Deletes the mark step with a given index. More...
 
 deleteMarkSteps ($indexes)
 Deletes multiple mark steps using their index positions. More...
 
 getMatchingMark ($percentage)
 Returns the matching mark for a given percentage. More...
 
 checkMarks ()
 Check the marks for consistency. More...
 
 getMarkSteps ()
 
 setMarkSteps ($mark_steps)
 

Static Public Member Functions

static _getMatchingMark ($test_id, $percentage)
 Returns the matching mark for a given percentage. More...
 
static _getMatchingMarkFromObjId ($a_obj_id, $percentage)
 Returns the matching mark for a given percentage. More...
 

Data Fields

 $mark_steps
 

Detailed Description

A class defining mark schemas for assessment test objects.

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

Definition at line 16 of file class.assMarkSchema.php.

Constructor & Destructor Documentation

◆ __construct()

ASS_MarkSchema::__construct ( )

ASS_MarkSchema constructor.

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

Returns
ASS_MarkSchema

Definition at line 28 of file class.assMarkSchema.php.

References array.

29  {
30  $this->mark_steps = array();
31  }
Create styles array
The data for the language used.

Member Function Documentation

◆ _getMatchingMark()

static ASS_MarkSchema::_getMatchingMark (   $test_id,
  $percentage 
)
static

Returns the matching mark for a given percentage.

See also
$mark_steps
Parameters
integer$test_idThe database id of the test.
double$percentageA percentage value between 0 and 100.
Returns
mixed The mark object, if a matching mark was found, false otherwise.

PhpAssignmentInConditionInspection

Definition at line 315 of file class.assMarkSchema.php.

References $ilDB, $result, $row, and array.

316  {
317  global $ilDB;
318  $result = $ilDB->queryF(
319  "SELECT * FROM tst_mark WHERE test_fi = %s ORDER BY minimum_level DESC",
320  array('integer'),
321  array($test_id)
322  );
323 
325  while ($row = $ilDB->fetchAssoc($result)) {
326  if ($percentage >= $row["minimum_level"]) {
327  return $row;
328  }
329  }
330  return false;
331  }
$result
Create styles array
The data for the language used.
global $ilDB

◆ _getMatchingMarkFromObjId()

static ASS_MarkSchema::_getMatchingMarkFromObjId (   $a_obj_id,
  $percentage 
)
static

Returns the matching mark for a given percentage.

See also
$mark_steps
Parameters
integer$a_obj_idThe database id of the test.
double$percentageA percentage value between 0 and 100.
Returns
mixed The mark object, if a matching mark was found, false otherwise.

Definition at line 343 of file class.assMarkSchema.php.

References $ilDB, $result, $row, and array.

Referenced by ilObjTestAccess\_isPassed(), and ilObjTestAccess\isFailed().

344  {
345  global $ilDB;
346  $result = $ilDB->queryF(
347  "SELECT tst_mark.* FROM tst_mark, tst_tests WHERE tst_mark.test_fi = tst_tests.test_id AND tst_tests.obj_fi = %s ORDER BY minimum_level DESC",
348  array('integer'),
349  array($a_obj_id)
350  );
351  while ($row = $ilDB->fetchAssoc($result)) {
352  if ($percentage >= $row["minimum_level"]) {
353  return $row;
354  }
355  }
356  return false;
357  }
$result
Create styles array
The data for the language used.
global $ilDB
+ Here is the caller graph for this function:

◆ addMarkStep()

ASS_MarkSchema::addMarkStep (   $txt_short = "",
  $txt_official = "",
  $percentage = 0,
  $passed = 0 
)

Adds a mark step to the mark schema.

A new ASS_Mark object will be created and stored in the $mark_steps array.

See also
$mark_steps
Parameters
string$txt_shortThe short text of the mark.
string$txt_officialThe official text of the mark.
float | integer$percentageThe minimum percentage level reaching the mark.
integer$passedThe passed status of the mark (0 = failed, 1 = passed).

Definition at line 74 of file class.assMarkSchema.php.

Referenced by createSimpleSchema(), and loadFromDb().

75  {
76  require_once './Modules/Test/classes/class.assMark.php';
77  $mark = new ASS_Mark($txt_short, $txt_official, $percentage, $passed);
78  array_push($this->mark_steps, $mark);
79  }
A class defining marks for assessment test objects.
+ Here is the caller graph for this function:

◆ checkMarks()

ASS_MarkSchema::checkMarks ( )

Check the marks for consistency.

See also
$mark_steps
Returns
bool|string true if the check succeeds, als a text string containing a language string for an error message

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

References $i.

396  {
397  $minimum_percentage = 100;
398  $passed = 0;
399  for ($i = 0; $i < count($this->mark_steps); $i++) {
400  if ($this->mark_steps[$i]->getMinimumLevel() < $minimum_percentage) {
401  $minimum_percentage = $this->mark_steps[$i]->getMinimumLevel();
402  }
403  if ($this->mark_steps[$i]->getPassed()) {
404  $passed++;
405  }
406  }
407 
408  if ($minimum_percentage != 0) {
409  return "min_percentage_ne_0";
410  }
411 
412  if ($passed == 0) {
413  return "no_passed_mark";
414  }
415  return true;
416  }
$i
Definition: disco.tpl.php:19

◆ createSimpleSchema()

ASS_MarkSchema::createSimpleSchema (   $txt_failed_short = "failed",
  $txt_failed_official = "failed",
  $percentage_failed = 0,
  $failed_passed = 0,
  $txt_passed_short = "passed",
  $txt_passed_official = "passed",
  $percentage_passed = 50,
  $passed_passed = 1 
)

Creates a simple mark schema for two mark steps: failed and passed.

See also
$mark_steps
Parameters
string$txt_failed_shortThe short text of the failed mark.
string$txt_failed_officialThe official text of the failed mark.
float | int$percentage_failedThe minimum percentage level reaching the failed mark.
integer$failed_passedIndicates the passed status of the failed mark (0 = failed, 1 = passed).
string$txt_passed_shortThe short text of the passed mark.
string$txt_passed_officialThe official text of the passed mark.
float | int$percentage_passedThe minimum percentage level reaching the passed mark.
integer$passed_passedIndicates the passed status of the passed mark (0 = failed, 1 = passed).

Definition at line 48 of file class.assMarkSchema.php.

References addMarkStep(), and flush().

57  {
58  $this->flush();
59  $this->addMarkStep($txt_failed_short, $txt_failed_official, $percentage_failed, $failed_passed);
60  $this->addMarkStep($txt_passed_short, $txt_passed_official, $percentage_passed, $passed_passed);
61  }
flush()
Empties the mark schema and removes all mark steps.
addMarkStep($txt_short="", $txt_official="", $percentage=0, $passed=0)
Adds a mark step to the mark schema.
+ Here is the call graph for this function:

◆ deleteMarkStep()

ASS_MarkSchema::deleteMarkStep (   $index = 0)

Deletes the mark step with a given index.

See also
$mark_steps
Parameters
integer$indexThe index of the mark step to delete.

Definition at line 252 of file class.assMarkSchema.php.

References $index.

253  {
254  if ($index < 0) {
255  return;
256  }
257  if (count($this->mark_steps) < 1) {
258  return;
259  }
260  if ($index >= count($this->mark_steps)) {
261  return;
262  }
263  unset($this->mark_steps[$index]);
264  $this->mark_steps = array_values($this->mark_steps);
265  }
$index
Definition: metadata.php:60

◆ deleteMarkSteps()

ASS_MarkSchema::deleteMarkSteps (   $indexes)

Deletes multiple mark steps using their index positions.

See also
$mark_steps
Parameters
array$indexesAn array with all the index positions to delete.

Definition at line 274 of file class.assMarkSchema.php.

References $index, and $key.

275  {
276  foreach ($indexes as $key => $index) {
277  if (!(($index < 0) or (count($this->mark_steps) < 1))) {
278  unset($this->mark_steps[$index]);
279  }
280  }
281  $this->mark_steps = array_values($this->mark_steps);
282  }
$index
Definition: metadata.php:60
$key
Definition: croninfo.php:18

◆ flush()

ASS_MarkSchema::flush ( )

Empties the mark schema and removes all mark steps.

See also
$mark_steps

Definition at line 218 of file class.assMarkSchema.php.

References array.

Referenced by createSimpleSchema().

219  {
220  $this->mark_steps = array();
221  }
Create styles array
The data for the language used.
+ Here is the caller graph for this function:

◆ getMarkSteps()

ASS_MarkSchema::getMarkSteps ( )
Returns
ASS_Mark[]

Definition at line 421 of file class.assMarkSchema.php.

References $mark_steps.

422  {
423  return $this->mark_steps;
424  }

◆ getMatchingMark()

ASS_MarkSchema::getMatchingMark (   $percentage)

Returns the matching mark for a given percentage.

See also
$mark_steps
Parameters
double$percentageA percentage value between 0 and 100.
Returns
ASS_Mark|bool The mark object, if a matching mark was found, false otherwise.

Definition at line 293 of file class.assMarkSchema.php.

References $i.

294  {
295  for ($i = count($this->mark_steps) - 1; $i >= 0; $i--) {
296  $curMinLevel = $this->mark_steps[$i]->getMinimumLevel();
297 
298  if ($percentage > $curMinLevel || (string) $percentage == (string) $curMinLevel) { // >= does NOT work since PHP is a fucking female float pig !!!!
299  return $this->mark_steps[$i];
300  }
301  }
302  return false;
303  }
$i
Definition: disco.tpl.php:19

◆ loadFromDb()

ASS_MarkSchema::loadFromDb (   $test_id)

Loads an ASS_MarkSchema object from a database.

Parameters
integer$test_idA unique key which defines the test in the database.

PhpAssignmentInConditionInspection

Definition at line 193 of file class.assMarkSchema.php.

References $data, $ilDB, $result, addMarkStep(), and array.

194  {
195  global $ilDB;
196 
197  if (!$test_id) {
198  return;
199  }
200  $result = $ilDB->queryF(
201  "SELECT * FROM tst_mark WHERE test_fi = %s ORDER BY minimum_level",
202  array('integer'),
203  array($test_id)
204  );
205  if ($result->numRows() > 0) {
207  while ($data = $ilDB->fetchAssoc($result)) {
208  $this->addMarkStep($data["short_name"], $data["official_name"], $data["minimum_level"], $data["passed"]);
209  }
210  }
211  }
$result
addMarkStep($txt_short="", $txt_official="", $percentage=0, $passed=0)
Adds a mark step to the mark schema.
Create styles array
The data for the language used.
global $ilDB
+ Here is the call graph for this function:

◆ saveToDb()

ASS_MarkSchema::saveToDb (   $test_id)

Saves an ASS_MarkSchema object to a database.

Parameters
integer$test_idThe database id of the related test.

PhpAssignmentInConditionInspection

PhpAssignmentInConditionInspection

Definition at line 86 of file class.assMarkSchema.php.

References $ilDB, $key, $lng, $result, $row, ilObjAssessmentFolder\_enabledAssessmentLogging(), ilObjAssessmentFolder\_getLogLanguage(), array, and time.

87  {
88  global $lng;
89  global $ilDB;
90 
91  $oldmarks = array();
92  include_once "./Modules/Test/classes/class.ilObjAssessmentFolder.php";
94  $result = $ilDB->queryF(
95  "SELECT * FROM tst_mark WHERE test_fi = %s ORDER BY minimum_level",
96  array('integer'),
97  array($test_id)
98  );
99  if ($result->numRows()) {
101  while ($row = $ilDB->fetchAssoc($result)) {
102  $oldmarks[$row["minimum_level"]] = $row;
103  }
104  }
105  }
106 
107  if (!$test_id) {
108  return;
109  }
110  // Delete all entries
111  $ilDB->manipulateF(
112  "DELETE FROM tst_mark WHERE test_fi = %s",
113  array('integer'),
114  array($test_id)
115  );
116  if (count($this->mark_steps) == 0) {
117  return;
118  }
119 
120  // Write new datasets
121  foreach ($this->mark_steps as $key => $value) {
122  $next_id = $ilDB->nextId('tst_mark');
123  $ilDB->manipulateF(
124  "INSERT INTO tst_mark (mark_id, test_fi, short_name, official_name, minimum_level, passed, tstamp) VALUES (%s, %s, %s, %s, %s, %s, %s)",
125  array('integer','integer','text','text','float','text','integer'),
126  array(
127  $next_id,
128  $test_id,
129  $value->getShortName(),
130  $value->getOfficialName(),
131  $value->getMinimumLevel(),
132  $value->getPassed(),
133  time()
134  )
135  );
136  }
138  $result = $ilDB->queryF(
139  "SELECT * FROM tst_mark WHERE test_fi = %s ORDER BY minimum_level",
140  array('integer'),
141  array($test_id)
142  );
143  $newmarks = array();
144  if ($result->numRows()) {
146  while ($row = $ilDB->fetchAssoc($result)) {
147  $newmarks[$row["minimum_level"]] = $row;
148  }
149  }
150  foreach ($oldmarks as $level => $row) {
151  if (array_key_exists($level, $newmarks)) {
152  $difffields = array();
153  foreach ($row as $key => $value) {
154  if (strcmp($value, $newmarks[$level][$key]) != 0) {
155  switch ($key) {
156  case "mark_id":
157  case "tstamp":
158  break;
159  default:
160  array_push($difffields, "$key: $value => " . $newmarks[$level][$key]);
161  break;
162  }
163  }
164  }
165  if (count($difffields)) {
166  $this->logAction($test_id, $lng->txtlng("assessment", "log_mark_changed", ilObjAssessmentFolder::_getLogLanguage()) . ": " . join($difffields, ", "));
167  }
168  } else {
169  $this->logAction($test_id, $lng->txtlng("assessment", "log_mark_removed", ilObjAssessmentFolder::_getLogLanguage()) . ": " .
170  $lng->txtlng("assessment", "tst_mark_minimum_level", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["minimum_level"] . ", " .
171  $lng->txtlng("assessment", "tst_mark_short_form", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["short_name"] . ", " .
172  $lng->txtlng("assessment", "tst_mark_official_form", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["official_name"] . ", " .
173  $lng->txtlng("assessment", "tst_mark_passed", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["passed"]);
174  }
175  }
176  foreach ($newmarks as $level => $row) {
177  if (!array_key_exists($level, $oldmarks)) {
178  $this->logAction($test_id, $lng->txtlng("assessment", "log_mark_added", ilObjAssessmentFolder::_getLogLanguage()) . ": " .
179  $lng->txtlng("assessment", "tst_mark_minimum_level", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["minimum_level"] . ", " .
180  $lng->txtlng("assessment", "tst_mark_short_form", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["short_name"] . ", " .
181  $lng->txtlng("assessment", "tst_mark_official_form", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["official_name"] . ", " .
182  $lng->txtlng("assessment", "tst_mark_passed", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["passed"]);
183  }
184  }
185  }
186  }
$result
static _getLogLanguage()
retrieve the log language for assessment logging
static _enabledAssessmentLogging()
check wether assessment logging is enabled or not
Create styles array
The data for the language used.
global $lng
Definition: privfeed.php:17
global $ilDB
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
$key
Definition: croninfo.php:18
+ Here is the call graph for this function:

◆ setMarkSteps()

ASS_MarkSchema::setMarkSteps (   $mark_steps)
Parameters
ASS_Mark[]$mark_steps

Definition at line 429 of file class.assMarkSchema.php.

References $_GET, $ilUser, $mark_steps, ilObjAssessmentFolder\_addLog(), and ilObjTest\_getObjectIDFromTestID().

430  {
431  $this->mark_steps = $mark_steps;
432  }
+ Here is the call graph for this function:

◆ sort()

ASS_MarkSchema::sort ( )

Sorts the mark schema using the minimum level values.

See also
$mark_steps

Definition at line 228 of file class.assMarkSchema.php.

References $res.

229  {
230  function level_sort($a, $b)
231  {
232  if ($a->getMinimumLevel() == $b->getMinimumLevel()) {
233  $res = strcmp($a->getShortName(), $b->getShortName());
234  if ($res == 0) {
235  return strcmp($a->getOfficialName(), $b->getOfficialName());
236  } else {
237  return $res;
238  }
239  }
240  return ($a->getMinimumLevel() < $b->getMinimumLevel()) ? -1 : 1;
241  }
242  usort($this->mark_steps, 'level_sort');
243  }
foreach($_POST as $key=> $value) $res

Field Documentation

◆ $mark_steps

ASS_MarkSchema::$mark_steps

Definition at line 19 of file class.assMarkSchema.php.

Referenced by getMarkSteps(), and setMarkSteps().


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