A class defining mark schemas for assessment test objects. More...
Public Member Functions | |
| ASS_MarkSchema () | |
| ASS_MarkSchema constructor. | |
| create_simple_schema ($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. | |
| add_mark_step ($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. | |
| delete_mark_step ($index=0) | |
| Deletes a mark step. | |
| delete_mark_steps ($indexes) | |
| Deletes multiple mark steps. | |
| get_matching_mark ($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 37 of file class.assMarkSchema.php.
| ASS_MarkSchema::add_mark_step | ( | $ | 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 create_simple_schema(), and loadFromDb().
{
$mark = new ASS_Mark($txt_short, $txt_official, $percentage, $passed);
array_push($this->mark_steps, $mark);
}
Here is the caller graph for this function:| 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]->get_minimum_level() < $minimum_percentage)
{
$minimum_percentage = $this->mark_steps[$i]->get_minimum_level();
}
if ($this->mark_steps[$i]->get_passed())
{
$passed++;
}
}
if ($minimum_percentage != 0)
{
return "min_percentage_ne_0";
}
if ($passed == 0)
{
return "no_passed_mark";
}
return true;
}
| ASS_MarkSchema::create_simple_schema | ( | $ | 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 add_mark_step(), and flush().
{
$this->flush();
$this->add_mark_step($txt_failed_short, $txt_failed_official, $percentage_failed, $failed_passed);
$this->add_mark_step($txt_passed_short, $txt_passed_official, $percentage_passed, $passed_passed);
}
Here is the call graph for this function:| ASS_MarkSchema::delete_mark_step | ( | $ | 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::delete_mark_steps | ( | $ | 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.
{
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 create_simple_schema().
{
$this->mark_steps = array();
}
Here is the caller graph for this function:| ASS_MarkSchema::get_matching_mark | ( | $ | 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]->get_minimum_level()) {
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 238 of file class.assMarkSchema.php.
References $data, $ilias, $query, $result, and add_mark_step().
{
global $ilias;
$db =& $ilias->db->db;
if (!$test_id) return;
$query = sprintf("SELECT * FROM tst_mark WHERE test_fi = %s ORDER BY minimum_level",
$db->quote($test_id)
);
$result = $db->query($query);
if (strcmp(strtolower(get_class($result)), db_result) == 0) {
while ($data = $result->fetchRow(DB_FETCHMODE_OBJECT)) {
$this->add_mark_step($data->short_name, $data->official_name, $data->minimum_level, $data->passed);
}
}
}
Here is the call graph for this function:| 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 $ilUser, 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);
}
Here is the call graph for this function:
Here is the caller graph for this function:| 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 124 of file class.assMarkSchema.php.
References $ilias, $lng, $query, $result, $row, ilObjAssessmentFolder::_enabledAssessmentLogging(), ilObjAssessmentFolder::_getLogLanguage(), and logAction().
{
global $ilias, $lng;
$db =& $ilias->db->db;
$oldmarks = array();
if (ilObjAssessmentFolder::_enabledAssessmentLogging())
{
$query = sprintf("SELECT * FROM tst_mark WHERE test_fi = %s ORDER BY minimum_level",
$db->quote($test_id)
);
$result = $db->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",
$db->quote($test_id)
);
$result = $db->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)",
$db->quote($test_id),
$db->quote($value->get_short_name()),
$db->quote($value->get_official_name()),
$db->quote($value->get_minimum_level()),
$db->quote(sprintf("%d", $value->get_passed()))
);
$result = $db->query($query);
if ($result == DB_OK) {
}
}
include_once ("./classes/class.ilObjAssessmentFolder.php");
if (ilObjAssessmentFolder::_enabledAssessmentLogging())
{
$query = sprintf("SELECT * FROM tst_mark WHERE test_fi = %s ORDER BY minimum_level",
$db->quote($test_id)
);
$result = $db->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"]);
}
}
}
}
Here is the call graph for this function:| 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->get_minimum_level() == $b->get_minimum_level()) {
$res = strcmp($a->get_short_name(), $b->get_short_name());
if ($res == 0) {
return strcmp($a->get_official_name(), $b->get_official_name());
} else {
return $res;
}
}
return ($a->get_minimum_level() < $b->get_minimum_level()) ? -1 : 1;
}
usort($this->mark_steps, 'level_sort');
}
| ASS_MarkSchema::$mark_steps |
Definition at line 45 of file class.assMarkSchema.php.
1.7.1