Merge branch 'master' into feature-40953/LV-Template_Uebersichtsseite

# Conflicts:
#	system/phrasesupdate.php
This commit is contained in:
Cris
2024-08-21 13:46:41 +02:00
114 changed files with 21645 additions and 296 deletions
@@ -11,4 +11,34 @@ class Lehrverband_model extends DB_Model
$this->dbTable = 'public.tbl_lehrverband';
$this->pk = array('gruppe', 'verband', 'semester', 'studiengang_kz');
}
/**
* Gets the maximum possible semester for one or more Studiengaenge.
* If there are more than one Studiengang each maximum is calculated and
* the smallest result is returned.
*
* @param array $studiengang_kzs
*
* @return stdClass
*/
public function getMaxSemester($studiengang_kzs)
{
$sqls = [];
foreach ($studiengang_kzs as $studiengang_kz) {
$this->addSelect('MAX(semester) AS maxsem');
$this->db->where('studiengang_kz', $studiengang_kz);
$sqls[] = $this->db->get_compiled_select($this->dbTable);
}
$this->addSelect('MIN(a.maxsem) AS maxsem');
$dbTable = $this->dbTable;
$this->dbTable = '(' . implode(' UNION ', $sqls) . ') AS a';
$result = $this->load();
$this->dbTable = $dbTable;
return $result;
}
}
@@ -11,4 +11,29 @@ class Standort_model extends DB_Model
$this->dbTable = 'public.tbl_standort';
$this->pk = 'standort_id';
}
public function searchStandorte($filter)
{
$filter = strtoLower($filter);
$qry = "
SELECT
s.kurzbz, s.standort_id
FROM
public.tbl_standort s
WHERE
lower (s.kurzbz) LIKE '%". $this->db->escape_like_str($filter)."%'
OR
lower (s.bezeichnung) LIKE '%". $this->db->escape_like_str($filter)."%'";
return $this->execQuery($qry);
}
public function getStandorteByFirma($firma_id)
{
$this->addSelect("DISTINCT ON (standort_id) bezeichnung, standort_id");
return $this->loadWhere(array("firma_id" => $firma_id));
}
}
@@ -106,4 +106,32 @@ class Studienplan_model extends DB_Model
'tbl_studienplan_lehrveranstaltung.semester' => $semester
));
}
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
]);
}
}
@@ -13,35 +13,35 @@ class Studiensemester_model extends DB_Model
$this->hasSequence = false;
}
/**
* Get actual Studiensemester.
*
* @return array
*/
public function getAkt()
{
return $this->loadWhere(array(
'start <= ' => 'NOW()',
'ende >= ' => 'NOW()'
)
);
}
/**
* Get actual Studiensemester.
*
* @return array
*/
public function getAkt()
{
return $this->loadWhere(array(
'start <= ' => 'NOW()',
'ende >= ' => 'NOW()'
)
);
}
// Get next study semester
public function getNext()
{
$query = '
SELECT *
FROM
public.tbl_studiensemester
WHERE
start > now()
ORDER BY start
LIMIT 1;
';
{
$query = '
SELECT *
FROM
public.tbl_studiensemester
WHERE
start > now()
ORDER BY start
LIMIT 1;
';
return $this->execQuery($query);
}
return $this->execQuery($query);
}
/**
* getLastOrAktSemester
@@ -182,10 +182,10 @@ class Studiensemester_model extends DB_Model
return success(array());
$query = "
SELECT *
FROM public.tbl_studiensemester
WHERE ( ?::date < ende AND ?::date > start )
ORDER BY start DESC";
SELECT *
FROM public.tbl_studiensemester
WHERE ( ?::date < ende AND ?::date > start )
ORDER BY start DESC";
return $this->execQuery($query, array($from, $to));
}
@@ -200,7 +200,7 @@ class Studiensemester_model extends DB_Model
{
$query = "SELECT studiensemester_kurzbz, start, ende FROM public.vw_studiensemester
WHERE studiensemester_kurzbz <> ?
ORDER BY delta, start LIMIT 1";
ORDER BY delta, start LIMIT 1";
return $this->execQuery($query, array($studiensemester_kurzbz));
}
@@ -211,7 +211,46 @@ class Studiensemester_model extends DB_Model
FROM public.tbl_studiensemester
WHERE start >= NOW() OR (start <= NOW() AND ende >= NOW())
ORDER BY start';
return $this->execQuery($query);
}
/**
* Liefert ausgehend von heutigen Datum $plus studiensemester in die Zukunft und $minus Studiensemester in die Vergangenheit
*
* @param integer $plus Optional. Wieviele Studiensemester in die Zukunft sollen ausgegeben werden. Wenn NULL werden alle zukuenftigen geliefert.
* @param integer $minus Optional. Wieviele Studiensemester in die Vergangenheit sollen ausgegeben werden. Wenn NULL werden alle vergangenen geliefert.
*
* @return stdClass
*/
public function addPlusMinus($plus = null, $minus = null)
{
$this->addSelect($this->pk);
$this->addOrder('ende');
if ($plus)
$this->addLimit($plus);
$this->db->where('start >= NOW()', null, false);
$plus = $this->db->get_compiled_select($this->dbTable);
$this->addSelect($this->pk);
$this->addOrder('start', 'DESC');
if ($minus)
$this->addLimit($minus);
$this->db->where('start <= NOW()', null, false);
$minus = $this->db->get_compiled_select($this->dbTable);
$this->db->where_in($this->pk, '(' . $plus . ') UNION (' . $minus . ')', false);
}
/**
* Holt letzen zwei Ziffern des Studienjahres von Studiensemester, z.B. 24 für WS2024 und SS2025
* @param studiensemester_kurzbz
* @return string Studienjahr Nummer
*/
public function getStudienjahrNumberFromStudiensemester($studiensemester_kurzbz)
{
$studienjahrNumber = mb_substr($studiensemester_kurzbz, 4, 2);
if (is_numeric($studienjahrNumber) && mb_substr($studiensemester_kurzbz, 0, 2) == 'SS') (int)$studienjahrNumber -= 1;
return $studienjahrNumber;
}
}