A class defining mark schemas for assessment test objects. More...
Public Member Functions | |
ASS_MarkSchema () | |
ASS_MarkSchema constructor. | |
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. | |
addMarkStep ($txt_short="", $txt_official="", $percentage=0, $passed=0) | |
Adds a mark step to the mark schema. | |
saveToDb ($test_id) | |
Saves a ASS_MarkSchema object to a database. | |
loadFromDb ($test_id) | |
Loads a ASS_MarkSchema object from a database. | |
flush () | |
Empties the mark schema and removes all mark steps. | |
sort () | |
Sorts the mark schema using the minimum level values. | |
deleteMarkStep ($index=0) | |
Deletes a mark step. | |
deleteMarkSteps ($indexes) | |
Deletes multiple mark steps. | |
getMatchingMark ($percentage) | |
Returns the matching mark for a given percentage. | |
checkMarks () | |
Check the marks for consistency. | |
logAction ($test_id, $logtext="") | |
Logs an action into the Test&Assessment log. | |
Data Fields | |
$mark_steps |
A class defining mark schemas for assessment test objects.
A class defining mark schemas for assessment test objects
class.assMarkSchema.php Assessment
Definition at line 36 of file class.assMarkSchema.php.
ASS_MarkSchema::addMarkStep | ( | $ | txt_short = "" , |
|
$ | txt_official = "" , |
|||
$ | percentage = 0 , |
|||
$ | passed = 0 | |||
) |
Adds a mark step to the mark schema.
Adds a mark step to the mark schema. A new ASS_Mark object will be created and stored in the $mark_steps array.
string | $txt_short The short text of the mark | |
string | $txt_official The official text of the mark | |
double | $percentage The minimum percentage level reaching the mark | |
integer | $passed The passed status of the mark (0 = failed, 1 = passed) public |
Definition at line 105 of file class.assMarkSchema.php.
Referenced by createSimpleSchema(), and loadFromDb().
{ include_once "./assessment/classes/class.assMark.php"; $mark = new ASS_Mark($txt_short, $txt_official, $percentage, $passed); array_push($this->mark_steps, $mark); }
ASS_MarkSchema::ASS_MarkSchema | ( | ) |
ASS_MarkSchema constructor.
The constructor takes possible arguments an creates an instance of the ASS_MarkSchema object.
public
Definition at line 54 of file class.assMarkSchema.php.
{ $this->mark_steps = array(); }
ASS_MarkSchema::checkMarks | ( | ) |
Check the marks for consistency.
Check the marks for consistency
Definition at line 355 of file class.assMarkSchema.php.
{ $minimum_percentage = 100; $passed = 0; for ($i = 0; $i < count($this->mark_steps); $i++) { if ($this->mark_steps[$i]->getMinimumLevel() < $minimum_percentage) { $minimum_percentage = $this->mark_steps[$i]->getMinimumLevel(); } if ($this->mark_steps[$i]->getPassed()) { $passed++; } } if ($minimum_percentage != 0) { return "min_percentage_ne_0"; } if ($passed == 0) { return "no_passed_mark"; } return true; }
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.
Creates a simple mark schema for two mark steps: failed an passed.
string | $txt_failed_short The short text of the failed mark | |
string | $txt_failed_official The official text of the failed mark | |
double | $percentage_failed The minimum percentage level reaching the failed mark | |
integer | $failed_passed Indicates the passed status of the failed mark (0 = failed, 1 = passed) | |
string | $txt_passed_short The short text of the passed mark | |
string | $txt_passed_official The official text of the passed mark | |
double | $percentage_passed The minimum percentage level reaching the passed mark | |
integer | $passed_passed Indicates the passed status of the passed mark (0 = failed, 1 = passed) public |
Definition at line 76 of file class.assMarkSchema.php.
References addMarkStep(), and flush().
{ $this->flush(); $this->addMarkStep($txt_failed_short, $txt_failed_official, $percentage_failed, $failed_passed); $this->addMarkStep($txt_passed_short, $txt_passed_official, $percentage_passed, $passed_passed); }
ASS_MarkSchema::deleteMarkStep | ( | $ | index = 0 |
) |
Deletes a mark step.
Deletes the mark step with a given index.
integer | $index The index of the mark step to delete public |
Definition at line 301 of file class.assMarkSchema.php.
{ if ($index < 0) return; if (count($this->mark_steps) < 1) return; if ($index >= count($this->mark_steps)) return; unset($this->mark_steps[$index]); $this->mark_steps = array_values($this->mark_steps); }
ASS_MarkSchema::deleteMarkSteps | ( | $ | indexes | ) |
Deletes multiple mark steps.
Deletes multiple mark steps using their index positions.
array | $indexes An array with all the index positions to delete public |
Definition at line 318 of file class.assMarkSchema.php.
References $key.
{ foreach ($indexes as $key => $index) { if (!(($index < 0) or (count($this->mark_steps) < 1))) { unset($this->mark_steps[$index]); } } $this->mark_steps = array_values($this->mark_steps); }
ASS_MarkSchema::flush | ( | ) |
Empties the mark schema and removes all mark steps.
Empties the mark schema and removes all mark steps
public
Definition at line 264 of file class.assMarkSchema.php.
Referenced by createSimpleSchema().
{ $this->mark_steps = array(); }
ASS_MarkSchema::getMatchingMark | ( | $ | percentage | ) |
Returns the matching mark for a given percentage.
Returns the matching mark for a given percentage
double | $percentage A percentage value between 0 and 100 |
Definition at line 337 of file class.assMarkSchema.php.
{ for ($i = count($this->mark_steps) - 1; $i >= 0; $i--) { if ($percentage >= $this->mark_steps[$i]->getMinimumLevel()) { return $this->mark_steps[$i]; } } return false; }
ASS_MarkSchema::loadFromDb | ( | $ | test_id | ) |
Loads a ASS_MarkSchema object from a database.
Loads a ASS_MarkSchema object from a database (experimental)
integer | $test_id A unique key which defines the test in the database public |
Definition at line 239 of file class.assMarkSchema.php.
References $data, $query, $result, and addMarkStep().
{ global $ilDB; if (!$test_id) return; $query = sprintf("SELECT * FROM tst_mark WHERE test_fi = %s ORDER BY minimum_level", $ilDB->quote($test_id) ); $result = $ilDB->query($query); if (strcmp(strtolower(get_class($result)), db_result) == 0) { while ($data = $result->fetchRow(DB_FETCHMODE_OBJECT)) { $this->addMarkStep($data->short_name, $data->official_name, $data->minimum_level, $data->passed); } } }
ASS_MarkSchema::logAction | ( | $ | test_id, | |
$ | logtext = "" | |||
) |
Logs an action into the Test&Assessment log.
Logs an action into the Test&Assessment log
integer | $test_id The database id of the test | |
string | $logtext The log text public |
Definition at line 389 of file class.assMarkSchema.php.
References $_GET, ilObjAssessmentFolder::_addLog(), and ilObjTest::_getObjectIDFromTestID().
Referenced by saveToDb().
{ global $ilUser; include_once "./classes/class.ilObjAssessmentFolder.php"; ilObjAssessmentFolder::_addLog($ilUser->id, ilObjTest::_getObjectIDFromTestID($test_id), $logtext, "", "", TRUE, $_GET["ref_id"]); }
ASS_MarkSchema::saveToDb | ( | $ | test_id | ) |
Saves a ASS_MarkSchema object to a database.
Saves a ASS_MarkSchema object to a database (experimental)
integer | $test_id The database id of the related test public |
Definition at line 125 of file class.assMarkSchema.php.
References $key, $lng, $query, $result, $row, ilObjAssessmentFolder::_enabledAssessmentLogging(), ilObjAssessmentFolder::_getLogLanguage(), and logAction().
{ global $lng; global $ilDB; $oldmarks = array(); include_once "./classes/class.ilObjAssessmentFolder.php"; if (ilObjAssessmentFolder::_enabledAssessmentLogging()) { $query = sprintf("SELECT * FROM tst_mark WHERE test_fi = %s ORDER BY minimum_level", $ilDB->quote($test_id) ); $result = $ilDB->query($query); if ($result->numRows()) { while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC)) { $oldmarks[$row["minimum_level"]] = $row; } } } if (!$test_id) return; // Delete all entries $query = sprintf("DELETE FROM tst_mark WHERE test_fi = %s", $ilDB->quote($test_id) ); $result = $ilDB->query($query); if (count($this->mark_steps) == 0) return; // Write new datasets foreach ($this->mark_steps as $key => $value) { $query = sprintf("INSERT INTO tst_mark (mark_id, test_fi, short_name, official_name, minimum_level, passed, TIMESTAMP) VALUES (NULL, %s, %s, %s, %s, %s, NULL)", $ilDB->quote($test_id), $ilDB->quote($value->getShortName()), $ilDB->quote($value->getOfficialName()), $ilDB->quote($value->getMinimumLevel()), $ilDB->quote(sprintf("%d", $value->getPassed())) ); $result = $ilDB->query($query); if ($result == DB_OK) { } } if (ilObjAssessmentFolder::_enabledAssessmentLogging()) { $query = sprintf("SELECT * FROM tst_mark WHERE test_fi = %s ORDER BY minimum_level", $ilDB->quote($test_id) ); $result = $ilDB->query($query); $newmarks = array(); if ($result->numRows()) { while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC)) { $newmarks[$row["minimum_level"]] = $row; } } foreach ($oldmarks as $level => $row) { if (array_key_exists($level, $newmarks)) { $difffields = array(); foreach ($row as $key => $value) { if (strcmp($value, $newmarks[$level][$key]) != 0) { switch ($key) { case "mark_id": case "TIMESTAMP": break; default: array_push($difffields, "$key: $value => " .$newmarks[$level][$key]); break; } } } if (count($difffields)) { $this->logAction($test_id, $lng->txtlng("assessment", "log_mark_changed", ilObjAssessmentFolder::_getLogLanguage()) . ": " . join($difffields, ", ")); } } else { $this->logAction($test_id, $lng->txtlng("assessment", "log_mark_removed", ilObjAssessmentFolder::_getLogLanguage()) . ": " . $lng->txtlng("assessment", "tst_mark_minimum_level", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["minimum_level"] . ", " . $lng->txtlng("assessment", "tst_mark_short_form", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["short_name"] . ", " . $lng->txtlng("assessment", "tst_mark_official_form", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["official_name"] . ", " . $lng->txtlng("assessment", "tst_mark_passed", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["passed"]); } } foreach ($newmarks as $level => $row) { if (!array_key_exists($level, $oldmarks)) { $this->logAction($test_id, $lng->txtlng("assessment", "log_mark_added", ilObjAssessmentFolder::_getLogLanguage()) . ": " . $lng->txtlng("assessment", "tst_mark_minimum_level", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["minimum_level"] . ", " . $lng->txtlng("assessment", "tst_mark_short_form", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["short_name"] . ", " . $lng->txtlng("assessment", "tst_mark_official_form", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["official_name"] . ", " . $lng->txtlng("assessment", "tst_mark_passed", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["passed"]); } } } }
ASS_MarkSchema::sort | ( | ) |
Sorts the mark schema using the minimum level values.
Sorts the mark schema using the minimum level values
public
Definition at line 276 of file class.assMarkSchema.php.
References $res.
{ function level_sort($a, $b) { if ($a->getMinimumLevel() == $b->getMinimumLevel()) { $res = strcmp($a->getShortName(), $b->getShortName()); if ($res == 0) { return strcmp($a->getOfficialName(), $b->getOfficialName()); } else { return $res; } } return ($a->getMinimumLevel() < $b->getMinimumLevel()) ? -1 : 1; } usort($this->mark_steps, 'level_sort'); }
ASS_MarkSchema::$mark_steps |
Definition at line 45 of file class.assMarkSchema.php.