Newer
Older
<?php defined('SYSPATH') || die('No direct script access.');
const MARK_UNDEFINED = 'Undefined';
const MARK_F = 'ECTS-F';
const MARK_FX = 'ECTS-FX';
const MARK_E = 'ECTS-E';
const MARK_D = 'ECTS-D';
const MARK_C = 'ECTS-C';
const MARK_B = 'ECTS-B';
const MARK_A = 'ECTS-A';
/**
* @param $rate int rate of student
* @param $current int current max rate of discipline
* @param $examRate int exam rate of student
* @return string mark name
*/
public static function getECTSMark($rate, $current, $examRate) {
if ($current <= 0)
return self::MARK_UNDEFINED;
if ($examRate !== null && $examRate < 22)
return self::MARK_FX;
return self::compute_mark($rate / $current);
}
private static function compute_mark($percent) {
if ($percent < 0.31) return self::MARK_F;
if ($percent < 0.60) return self::MARK_FX;
if ($percent < 0.65) return self::MARK_E;
if ($percent < 0.71) return self::MARK_D;
if ($percent < 0.85) return self::MARK_C;
if ($percent < 0.95) return self::MARK_B;
return self::MARK_A;
}
public static function createOrUpdate($name, $abbr, $facultyID, $extID=null) {
$sql = 'SELECT `Subject_Create`(:faculty, :name, :abbr, :extID) AS `Num`';
':name' => UTF8::clear($name),
':abbr' => UTF8::clear($abbr),
':extID' => UTF8::clear($extID),
])->execute();
return (int) $res->get('Num');
public static function withExternalID($extID, $name, $abbr, $facultyID) {
$sql = 'SELECT `Subject_GetByExternalID`(:extID) AS `ID`';
$id = DB::query(Database::SELECT, $sql)
->param(':extID', $extID)
->execute()->get('ID');
if ($id == -1) {
$id = self::createOrUpdate($name, $abbr, $facultyID, $extID);
}
return $id;