24 include_once
"./Modules/Test/classes/inc.AssessmentConstants.php";
51 $this->mark_steps = array();
70 $txt_failed_short =
"failed",
71 $txt_failed_official =
"failed",
72 $percentage_failed = 0,
74 $txt_passed_short =
"passed",
75 $txt_passed_official =
"passed",
76 $percentage_passed = 50,
81 $this->
addMarkStep($txt_failed_short, $txt_failed_official, $percentage_failed, $failed_passed);
82 $this->
addMarkStep($txt_passed_short, $txt_passed_official, $percentage_passed, $passed_passed);
103 include_once
"./Modules/Test/classes/class.assMark.php";
104 $mark =
new ASS_Mark($txt_short, $txt_official, $percentage, $passed);
105 array_push($this->mark_steps, $mark);
120 include_once
"./Modules/Test/classes/class.ilObjAssessmentFolder.php";
123 $result = $ilDB->queryF(
"SELECT * FROM tst_mark WHERE test_fi = %s ORDER BY minimum_level",
131 $oldmarks[
$row[
"minimum_level"]] =
$row;
136 if (!$test_id)
return;
138 $affectedRows = $ilDB->manipulateF(
"DELETE FROM tst_mark WHERE test_fi = %s",
142 if (count($this->mark_steps) == 0)
return;
145 foreach ($this->mark_steps as
$key => $value)
147 $next_id = $ilDB->nextId(
'tst_mark');
148 $affectedRows = $ilDB->manipulateF(
"INSERT INTO tst_mark (mark_id, test_fi, short_name, official_name, minimum_level, passed, tstamp) VALUES (%s, %s, %s, %s, %s, %s, %s)",
149 array(
'integer',
'integer',
'text',
'text',
'float',
'text',
'integer'),
153 $value->getShortName(),
154 $value->getOfficialName(),
155 $value->getMinimumLevel(),
163 $result = $ilDB->queryF(
"SELECT * FROM tst_mark WHERE test_fi = %s ORDER BY minimum_level",
172 $newmarks[
$row[
"minimum_level"]] =
$row;
175 foreach ($oldmarks as $level =>
$row)
177 if (array_key_exists($level, $newmarks))
179 $difffields = array();
182 if (strcmp($value, $newmarks[$level][
$key]) != 0)
190 array_push($difffields,
"$key: $value => " .$newmarks[$level][$key]);
195 if (count($difffields))
209 foreach ($newmarks as $level =>
$row)
211 if (!array_key_exists($level, $oldmarks))
233 if (!$test_id)
return;
234 $result = $ilDB->queryF(
"SELECT * FROM tst_mark WHERE test_fi = %s ORDER BY minimum_level",
255 $this->mark_steps = array();
266 function level_sort($a, $b)
268 if ($a->getMinimumLevel() == $b->getMinimumLevel())
270 $res = strcmp($a->getShortName(), $b->getShortName());
273 return strcmp($a->getOfficialName(), $b->getOfficialName());
280 return ($a->getMinimumLevel() < $b->getMinimumLevel()) ? -1 : 1;
282 usort($this->mark_steps,
'level_sort');
294 if ($index < 0)
return;
295 if (count($this->mark_steps) < 1)
return;
296 if ($index >= count($this->mark_steps))
return;
297 unset($this->mark_steps[$index]);
298 $this->mark_steps = array_values($this->mark_steps);
310 foreach ($indexes as
$key => $index)
312 if (!(($index < 0) or (count($this->mark_steps) < 1)))
314 unset($this->mark_steps[$index]);
317 $this->mark_steps = array_values($this->mark_steps);
330 for ($i = count($this->mark_steps) - 1; $i >= 0; $i--)
332 if ($percentage >= $this->mark_steps[$i]->getMinimumLevel())
334 return $this->mark_steps[$i];
352 $result = $ilDB->queryF(
"SELECT * FROM tst_mark WHERE test_fi = %s ORDER BY minimum_level DESC",
358 if ($percentage >=
$row[
"minimum_level"])
378 $result = $ilDB->queryF(
"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",
384 if ($percentage >=
$row[
"minimum_level"])
404 $result = $ilDB->queryF(
"SELECT tst_mark.* FROM tst_active, tst_mark, tst_tests WHERE tst_mark.test_fi = tst_tests.test_id AND tst_tests.test_id = tst_active.test_fi AND tst_active.active_id = %s ORDER BY minimum_level DESC",
410 if ($percentage >=
$row[
"minimum_level"])
427 $minimum_percentage = 100;
429 for ($i = 0; $i < count($this->mark_steps); $i++)
431 if ($this->mark_steps[$i]->getMinimumLevel() < $minimum_percentage)
433 $minimum_percentage = $this->mark_steps[$i]->getMinimumLevel();
435 if ($this->mark_steps[$i]->getPassed())
440 if ($minimum_percentage != 0)
442 return "min_percentage_ne_0";
446 return "no_passed_mark";
461 include_once
"./Modules/Test/classes/class.ilObjAssessmentFolder.php";