mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-25 08:34:29 +00:00
Merge branch 'master' of https://github.com/FH-Complete/FHC-Core
Conflicts: system/checksystem.php
This commit is contained in:
@@ -349,4 +349,39 @@ class anwesenheit extends basis_db
|
||||
return 'green';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft ob Anwesenheiten erfasst wurden
|
||||
* @param $lehreinheit_id ID der Lehreinheit
|
||||
* @param $datum Datum
|
||||
* @param $uid UID des Studierenden
|
||||
* @return boolean true wenn vorhanden, sonst false
|
||||
*/
|
||||
public function AnwesenheitExists($lehreinheit_id, $datum, $uid=null)
|
||||
{
|
||||
$qry = "SELECT
|
||||
1
|
||||
FROM
|
||||
campus.tbl_anwesenheit
|
||||
WHERE
|
||||
anwesend=true
|
||||
AND lehreinheit_id=".$this->db_add_param($lehreinheit_id)."
|
||||
AND datum=".$this->db_add_param($datum);
|
||||
|
||||
if($uid!='')
|
||||
$qry.=" AND uid=".$this->db_add_param($uid);
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
if($this->db_num_rows($result)>0)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,6 +65,7 @@ abstract class db extends basis
|
||||
abstract function db_parse_bool($var);
|
||||
abstract function db_implode4SQL($var);
|
||||
abstract function db_getResultJSON($result = null);
|
||||
abstract function db_parse_array($var);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -361,12 +361,12 @@ class infoscreen extends basis_db
|
||||
$qry.="
|
||||
AND (gueltigvon<=now() OR gueltigvon is null)
|
||||
AND (gueltigbis>=now() OR gueltigbis is null)";
|
||||
if($aktuell)
|
||||
if($exklusiv)
|
||||
$qry.="
|
||||
AND CASE WHEN
|
||||
(
|
||||
SELECT count(exklusiv) FROM campus.tbl_infoscreen_content
|
||||
WHERE (infoscreen_id=20 OR infoscreen_id is null)
|
||||
WHERE (infoscreen_id=".$this->db_add_param($infoscreen_id, FHC_INTEGER)." OR infoscreen_id is null)
|
||||
AND (gueltigvon<=now() OR gueltigvon is null)
|
||||
AND (gueltigbis>=now() OR gueltigbis is null)
|
||||
AND exklusiv=true
|
||||
|
||||
@@ -891,6 +891,82 @@ class lehrstunde extends basis_db
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getStundenplanData($db_stpl_table, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null)
|
||||
{
|
||||
|
||||
$qry = "SELECT
|
||||
stpl.datum, min(stpl.stunde) as stundevon, max(stpl.stunde) as stundebis,
|
||||
stpl.lehreinheit_id, lehrfach.bezeichnung as lehrfach_bezeichnung,
|
||||
array_agg(
|
||||
CASE WHEN gruppe_kurzbz is not null THEN gruppe_kurzbz
|
||||
ELSE (SELECT UPPER(typ || kurzbz) FROM public.tbl_studiengang WHERE studiengang_kz=stpl.studiengang_kz) || COALESCE(stpl.semester,'0') || COALESCE(stpl.verband,'') || COALESCE(stpl.gruppe,'')
|
||||
END) as gruppen, array_agg(mitarbeiter_uid) as lektoren,
|
||||
array_agg(ort_kurzbz) as orte
|
||||
FROM
|
||||
lehre.tbl_".$db_stpl_table." as stpl
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id)
|
||||
WHERE ";
|
||||
|
||||
if($lehrveranstaltung_id!='')
|
||||
{
|
||||
$qry.=" lehreinheit_id in(SELECT lehreinheit_id FROM lehre.tbl_lehreinheit
|
||||
WHERE lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id)."
|
||||
AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).")";
|
||||
|
||||
}
|
||||
elseif($lehreinheit_id!='')
|
||||
{
|
||||
$qry.=" lehreinheit_id=".$this->db_add_param($lehreinheit_id);
|
||||
}
|
||||
elseif($mitarbeiter_uid!='')
|
||||
{
|
||||
$qry.=" mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." AND lehreinheit_id IN(
|
||||
SELECT
|
||||
lehreinheit_id
|
||||
FROM
|
||||
lehre.tbl_lehreinheitmitarbeiter
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
WHERE mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).")";
|
||||
}
|
||||
elseif($student_uid!='')
|
||||
{
|
||||
$qry.=" lehreinheit_id in (
|
||||
SELECT
|
||||
lehreinheit_id
|
||||
FROM
|
||||
campus.vw_student_lehrveranstaltung
|
||||
WHERE
|
||||
uid=".$this->db_add_param($student_uid)." AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).")";
|
||||
}
|
||||
else
|
||||
return false;
|
||||
|
||||
$qry.="GROUP BY stpl.datum, stpl.unr, stpl.lehreinheit_id, lehrfach.bezeichnung
|
||||
ORDER BY stpl.datum, min(stpl.stunde), stpl.unr, stpl.lehreinheit_id";
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$obj = new stdClass();
|
||||
|
||||
$obj->datum = $row->datum;
|
||||
$obj->stundevon = $row->stundevon;
|
||||
$obj->stundebis = $row->stundebis;
|
||||
$obj->gruppen = array_unique($this->db_parse_array($row->gruppen));
|
||||
$obj->lektoren = array_unique($this->db_parse_array($row->lektoren));
|
||||
$obj->orte = array_unique($this->db_parse_array($row->orte));
|
||||
$obj->lehrfach_bezeichnung = $row->lehrfach_bezeichnung;
|
||||
$obj->lehreinheit_id = $row->lehreinheit_id;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -724,5 +724,42 @@ class organisationseinheit extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ermittelt die Stundenobergrenze fuer Lektoren
|
||||
* Dabei wird im OE Baum nach oben nach Stundengrenzen gesucht und die niedrigste Stundengrenze ermittelt
|
||||
* @param $oe_kurzbz Organisationseinheit
|
||||
* @param $fixangestellt boolean legt fest ob die Grenze
|
||||
* fuer Freie oder Fixangestellte Lektoren ermittelt werden soll
|
||||
* @return array(oe_kurzbz, numeric Anzahl der Stunden)
|
||||
*/
|
||||
public function getStundengrenze($oe_kurzbz, $fixangestellt=true)
|
||||
{
|
||||
if($fixangestellt)
|
||||
$fixfrei='fix';
|
||||
else
|
||||
$fixfrei='frei';
|
||||
|
||||
$qry = "
|
||||
WITH RECURSIVE oes(oe_kurzbz, oe_parent_kurzbz) as
|
||||
(
|
||||
SELECT oe_kurzbz, oe_parent_kurzbz FROM public.tbl_organisationseinheit
|
||||
WHERE oe_kurzbz=".$this->db_add_param($oe_kurzbz)."
|
||||
UNION ALL
|
||||
SELECT o.oe_kurzbz, o.oe_parent_kurzbz FROM public.tbl_organisationseinheit o, oes
|
||||
WHERE o.oe_kurzbz=oes.oe_parent_kurzbz
|
||||
)
|
||||
SELECT oe_kurzbz, warn_semesterstunden_".$fixfrei." as stunden
|
||||
FROM oes JOIN public.tbl_organisationseinheit USING(oe_kurzbz)
|
||||
ORDER BY warn_semesterstunden_".$fixfrei." asc limit 1";
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object($result))
|
||||
{
|
||||
return array($row->oe_kurzbz, $row->stunden);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -342,5 +342,23 @@ class basis_db extends db
|
||||
}
|
||||
return $string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Erstellt aus einem DB Array ein PHP Array
|
||||
* @param $var DB Result Array Spalte
|
||||
* @return php array
|
||||
*/
|
||||
public function db_parse_array($var)
|
||||
{
|
||||
if ($var == '')
|
||||
return;
|
||||
preg_match_all('/(?<=^\{|,)(([^,"{]*)|\s*"((?:[^"\\\\]|\\\\(?:.|[0-9]+|x[0-9a-f]+))*)"\s*)(,|(?<!^\{)(?=\}$))/i', $var, $matches, PREG_SET_ORDER);
|
||||
$values = array();
|
||||
foreach ($matches as $match)
|
||||
{
|
||||
$values[] = $match[3] != '' ? stripcslashes($match[3]) : (strtolower($match[2]) == 'null' ? null : $match[2]);
|
||||
}
|
||||
return $values;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -798,4 +798,78 @@ class studiengang extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt alle Studiengaenge in einer Organisationseinheit
|
||||
* @param varchar $oe_kurzbz Organisationseinheit
|
||||
* @param boolean $aktiv Wenn true dann werden nur aktive Studiengaenge geliefert
|
||||
* @return boolean
|
||||
*/
|
||||
public function getStudiengaengeFromOe($oe_kurzbz, $aktiv=true)
|
||||
{
|
||||
$qry ="WITH RECURSIVE oes(oe_kurzbz) as
|
||||
(
|
||||
SELECT oe_kurzbz FROM public.tbl_organisationseinheit WHERE oe_kurzbz=".$this->db_add_param($oe_kurzbz)."
|
||||
UNION
|
||||
SELECT tbl_organisationseinheit.oe_kurzbz FROM public.tbl_organisationseinheit JOIN oes ON(oe_parent_kurzbz=oes.oe_kurzbz)
|
||||
)
|
||||
SELECT * FROM public.tbl_studiengang JOIN oes USING(oe_kurzbz) WHERE oe_kurzbz = oes.oe_kurzbz";
|
||||
|
||||
if($aktiv===true)
|
||||
{
|
||||
$qry.=" AND tbl_studiengang.aktiv";
|
||||
}
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new studiengang();
|
||||
|
||||
$obj->studiengang_kz = $row->studiengang_kz;
|
||||
$obj->kurzbz = $row->kurzbz;
|
||||
$obj->kurzbzlang = $row->kurzbzlang;
|
||||
$obj->bezeichnung = $row->bezeichnung;
|
||||
$obj->english = $row->english;
|
||||
$obj->typ = $row->typ;
|
||||
$obj->farbe = $row->farbe;
|
||||
$obj->email = $row->email;
|
||||
$obj->max_semester = $row->max_semester;
|
||||
$obj->max_verband = $row->max_verband;
|
||||
$obj->max_gruppe = $row->max_gruppe;
|
||||
$obj->erhalter_kz = $row->erhalter_kz;
|
||||
$obj->bescheid = $row->bescheid;
|
||||
$obj->bescheidbgbl1 = $row->bescheidbgbl1;
|
||||
$obj->bescheidbgbl2 = $row->bescheidbgbl2;
|
||||
$obj->bescheidgz = $row->bescheidgz;
|
||||
$obj->bescheidvom = $row->bescheidvom;
|
||||
$obj->ext_id = $row->ext_id;
|
||||
$obj->kuerzel = mb_strtoupper($row->typ . $row->kurzbz);
|
||||
$obj->orgform_kurzbz = $row->orgform_kurzbz;
|
||||
$obj->zusatzinfo_html = $row->zusatzinfo_html;
|
||||
$obj->sprache = $row->sprache;
|
||||
$obj->testtool_sprachwahl = $this->db_parse_bool($row->testtool_sprachwahl);
|
||||
$obj->studienplaetze = $row->studienplaetze;
|
||||
$obj->oe_kurzbz = $row->oe_kurzbz;
|
||||
$obj->lgartcode = $row->lgartcode;
|
||||
$obj->telefon = $row->telefon;
|
||||
$obj->titelbescheidvom = $row->titelbescheidvom;
|
||||
$obj->onlinebewerbung = $this->db_parse_bool($row->onlinebewerbung);
|
||||
$obj->moodle = $this->db_parse_bool($row->moodle);
|
||||
$obj->mischform = $this->db_parse_bool($row->mischform);
|
||||
$obj->projektarbeit_note_anzeige = $this->db_parse_bool($row->projektarbeit_note_anzeige);
|
||||
|
||||
$obj->bezeichnung_arr['German'] = $obj->bezeichnung;
|
||||
$obj->bezeichnung_arr['English'] = $obj->english;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler bei der Datenbankabfrage aufgetreten.";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1356,6 +1356,7 @@ class wochenplan extends basis_db
|
||||
$z=0;
|
||||
$reservierung=false;
|
||||
$stundenplan_ids=array();
|
||||
$titel='';
|
||||
|
||||
if(isset($raumcheck))
|
||||
unset($raumcheck);
|
||||
@@ -1401,7 +1402,7 @@ class wochenplan extends basis_db
|
||||
}
|
||||
if(isset($lehrstunde->farbe) && $farbe=='')
|
||||
$farbe=$lehrstunde->farbe;
|
||||
$titel=htmlspecialchars($lehrstunde->titel);
|
||||
$titel.=htmlspecialchars($lehrstunde->titel);
|
||||
$anmerkung=htmlspecialchars($lehrstunde->anmerkung);
|
||||
$tooltip_anmerkung[]=$titel.' '.$anmerkung;
|
||||
}
|
||||
|
||||
@@ -482,7 +482,7 @@ class zeitsperre extends basis_db
|
||||
|
||||
$qry = "select datum::date, freigabevon, zeitsperretyp_kurzbz
|
||||
from (SELECT generate_series(vondatum::timestamp, bisdatum::timestamp, '1 day') as datum, freigabevon, mitarbeiter_uid, zeitsperretyp_kurzbz FROM campus.tbl_zeitsperre where vonstunde is null and bisstunde is null) a
|
||||
where a.mitarbeiter_uid = ".$this->db_add_param($uid)." and datum>(now() - interval '50 Days') and zeitsperretyp_kurzbz in ('Krank','Urlaub', 'ZA', 'DienstV')";
|
||||
where a.mitarbeiter_uid = ".$this->db_add_param($uid)." and datum>(now() - interval '50 Days') and zeitsperretyp_kurzbz in ('Krank','Urlaub', 'ZA', 'DienstV','PflegeU')";
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user