mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
173 lines
5.4 KiB
PHP
173 lines
5.4 KiB
PHP
<?php
|
|
|
|
class Studienplan_model extends DB_Model
|
|
{
|
|
/**
|
|
* Constructor
|
|
*/
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->dbTable = "lehre.tbl_studienplan";
|
|
$this->pk = "studienplan_id";
|
|
}
|
|
|
|
public function getStudienplaene($studiengang_kz)
|
|
{
|
|
$this->addJoin("lehre.tbl_studienordnung", "studienordnung_id");
|
|
|
|
return $this->loadWhere(array("studiengang_kz" => $studiengang_kz));
|
|
}
|
|
|
|
public function getStudienplaeneBySemester($studiengang_kz, $studiensemester_kurzbz, $ausbildungssemester = null, $orgform_kurzbz = null, $sprache = null)
|
|
{
|
|
$this->addJoin("lehre.tbl_studienordnung", "studienordnung_id");
|
|
$this->addJoin("lehre.tbl_studienplan_semester", "studienplan_id");
|
|
|
|
$whereArray = array(
|
|
"tbl_studienplan.aktiv" => "TRUE",
|
|
"tbl_studienordnung.studiengang_kz" => $studiengang_kz,
|
|
"tbl_studienplan_semester.studiensemester_kurzbz" => $studiensemester_kurzbz
|
|
);
|
|
|
|
if(!is_null($ausbildungssemester))
|
|
{
|
|
$whereArray["tbl_studienplan_semester.semester"] = $ausbildungssemester;
|
|
}
|
|
|
|
if(!is_null($orgform_kurzbz))
|
|
{
|
|
$whereArray["orgform_kurzbz"] = $orgform_kurzbz;
|
|
}
|
|
|
|
if(!is_null($sprache))
|
|
{
|
|
$whereArray["tbl_studienplan.sprache"] = $sprache;
|
|
}
|
|
|
|
return $this->loadWhere($whereArray);
|
|
}
|
|
|
|
public function getStudienplanLehrveranstaltung($studienplan_id, $semester)
|
|
{
|
|
$this->addJoin('lehre.tbl_studienplan_lehrveranstaltung', 'studienplan_id');
|
|
$this->addJoin('lehre.tbl_lehrveranstaltung', 'lehrveranstaltung_id');
|
|
$this->addOrder('tbl_lehrveranstaltung.sort');
|
|
|
|
return $this->loadWhere(array(
|
|
'studienplan_id' => $studienplan_id,
|
|
'tbl_studienplan_lehrveranstaltung.semester' => $semester
|
|
));
|
|
}
|
|
|
|
public function getStudienplanLehrveranstaltungForPrestudent($studienplan_id, $semester, $prestudent_id)
|
|
{
|
|
$lang = 'SELECT index FROM public.tbl_sprache WHERE sprache=' . $this->escape(getUserLanguage());
|
|
$sql = 'SELECT student_uid FROM public.tbl_student WHERE prestudent_id=' . $this->escape($prestudent_id);
|
|
|
|
$this->addSelect($this->dbTable . '.*');
|
|
$this->addSelect('lv.*');
|
|
$this->addSelect('COALESCE(n.bezeichnung_mehrsprachig[(' . $lang . ')], NULL) AS note');
|
|
$this->addSelect('n.positiv');
|
|
$this->addSelect('lehre.tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id');
|
|
$this->addSelect('lehre.tbl_studienplan_lehrveranstaltung.sort plan_sort');
|
|
$this->addSelect('lehre.tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent');
|
|
|
|
$this->addJoin('lehre.tbl_studienplan_lehrveranstaltung', 'studienplan_id');
|
|
$this->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id');
|
|
// NOTE(chris): last offizell note
|
|
$this->addJoin('(
|
|
SELECT z.*
|
|
FROM lehre.tbl_zeugnisnote z
|
|
LEFT JOIN public.tbl_studiensemester zs
|
|
USING(studiensemester_kurzbz)
|
|
JOIN (
|
|
SELECT zi.lehrveranstaltung_id, zi.student_uid, MAX(zis.start) AS start
|
|
FROM lehre.tbl_zeugnisnote zi
|
|
LEFT JOIN lehre.tbl_note zin
|
|
USING(note)
|
|
LEFT JOIN public.tbl_studiensemester zis
|
|
USING(studiensemester_kurzbz)
|
|
WHERE zin.aktiv AND zin.offiziell
|
|
GROUP BY zi.lehrveranstaltung_id, zi.student_uid
|
|
) zx
|
|
ON (
|
|
z.lehrveranstaltung_id=zx.lehrveranstaltung_id
|
|
AND z.student_uid=zx.student_uid
|
|
AND zs.start = zx.start
|
|
)) zn', 'zn.lehrveranstaltung_id=lv.lehrveranstaltung_id AND zn.student_uid=( ' . $sql . ')', 'LEFT');
|
|
$this->addJoin('lehre.tbl_note n', 'n.note=zn.note', 'LEFT');
|
|
|
|
$this->addOrder('lehre.tbl_studienplan_lehrveranstaltung.sort');
|
|
$this->addOrder('lv.sort');
|
|
|
|
return $this->loadWhere(array(
|
|
'studienplan_id' => $studienplan_id,
|
|
'tbl_studienplan_lehrveranstaltung.semester' => $semester
|
|
));
|
|
}
|
|
|
|
// Deprecated
|
|
// im Lehrveranstaltung_model vorhanden
|
|
public function getAllOesForLv($lehrveranstaltung_id)
|
|
{
|
|
$this->addDistinct('oe_kurzbz');
|
|
|
|
$this->addJoin('lehre.tbl_studienplan_lehrveranstaltung lv', 'studienplan_id');
|
|
$this->addJoin('lehre.tbl_studienordnung', 'studienordnung_id');
|
|
$this->addJoin('public.tbl_studiengang', 'studiengang_kz');
|
|
|
|
return $this->loadWhere([
|
|
'lv.lehrveranstaltung_id' => $lehrveranstaltung_id
|
|
]);
|
|
}
|
|
|
|
public function getStudienplaeneByPrestudents($prestudent_id)
|
|
{
|
|
$this->addDistinct();
|
|
$this->addSelect($this->dbTable . '.*');
|
|
$this->addSelect('sem.start AS start_stsem');
|
|
$this->addJoin('lehre.tbl_studienordnung o', 'studienordnung_id');
|
|
$this->addJoin('public.tbl_prestudent p', 'studiengang_kz');
|
|
$this->addJoin('public.tbl_studiensemester sem', 'sem.studiensemester_kurzbz = o.gueltigvon', 'LEFT');
|
|
$this->addOrder('sem.start');
|
|
|
|
return $this->loadWhere([
|
|
'prestudent_id' => $prestudent_id
|
|
]);
|
|
}
|
|
|
|
public function loadStudienplanLehrveranstaltung($lv_id)
|
|
{
|
|
$qry = "SELECT studienplan_lehrveranstaltung_id,
|
|
semester,
|
|
pflicht,
|
|
studienplan_id,
|
|
koordinator,
|
|
studienplan_lehrveranstaltung_id_parent,
|
|
lehrveranstaltung_id,
|
|
insertamum,
|
|
insertvon,
|
|
updateamum,
|
|
updatevon,
|
|
sort,
|
|
curriculum,
|
|
export
|
|
FROM lehre.tbl_studienplan_lehrveranstaltung WHERE studienplan_lehrveranstaltung_id = ? ";
|
|
return $this->execReadOnlyQuery($qry, array($lv_id));
|
|
}
|
|
|
|
public function getStudienplaeneForPerson($person_id)
|
|
{
|
|
$this->addDistinct();
|
|
$this->addSelect($this->dbTable . '.*');
|
|
$this->addSelect('ps.*');
|
|
$this->addJoin('public.tbl_prestudentstatus pss', 'studienplan_id');
|
|
$this->addJoin('public.tbl_prestudent ps', 'prestudent_id');
|
|
|
|
return $this->loadWhere([
|
|
'person_id' => $person_id
|
|
]);
|
|
}
|
|
}
|