This commit is contained in:
kindlm
2015-06-10 19:50:22 +02:00
39 changed files with 1342 additions and 199 deletions
+3 -2
View File
@@ -342,7 +342,8 @@ class akte extends basis_db
{
$qry = "SELECT
akte_id, person_id, dokument_kurzbz, mimetype, erstelltam, gedruckt,
titel, bezeichnung, updateamum, insertamum, updatevon, insertvon, uid
titel, bezeichnung, updateamum, insertamum, updatevon, insertvon, uid,
dms_id,nachgereicht,anmerkung,titel_intern,anmerkung_intern
FROM public.tbl_akte WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER);
$qry.=" AND dokument_kurzbz IN ('Lebenslf','Motivat','LearnAgr')";
@@ -372,7 +373,7 @@ class akte extends basis_db
$akten->nachgereicht = $this->db_parse_bool($row->nachgereicht);
$akten->anmerkung = $row->anmerkung;
$akten->titel_intern = $row->titel_intern;
$akten->anmerkung_intern = $row->anmerkung_inter;
$akten->anmerkung_intern = $row->anmerkung_intern;
$this->result[] = $akten;
}
+35
View File
@@ -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;
}
}
}
+1
View File
@@ -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);
/**
+78
View File
@@ -156,6 +156,8 @@ class lehrstunde extends basis_db
$sql_query='UPDATE '.$stpl_table;
$sql_query.=" SET datum=".$this->db_add_param($this->datum).", stunde=".$this->db_add_param($this->stunde);
$sql_query.=", ort_kurzbz=".$this->db_add_param($this->ort_kurzbz).", mitarbeiter_uid=".$this->db_add_param($this->lektor_uid);
if($this->unr!='')
$sql_query.=", unr=".$this->db_add_param($this->unr);
$sql_query.=", updateamum=now(), updatevon=".$this->db_add_param($uid);
$sql_query.=" WHERE $stpl_id=".$this->db_add_param($this->stundenplan_id);
@@ -889,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;
}
}
?>
+37
View File
@@ -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);
}
}
}
}
?>
+18
View File
@@ -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;
}
}
?>
+74
View File
@@ -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;
}
}
}
+64 -61
View File
@@ -273,76 +273,79 @@ function checkZeilenUmbruch()
checkZeilenUmbruch();
$eintraegeprozeile++;
echo '<td class="tdvertical" align="center">';
if(CIS_LEHRVERANSTALTUNG_LEISTUNGSUEBERSICHT_ANZEIGEN || $is_lector)
{
if($angemeldet || $is_lector)
echo '<img class="lv" src="../../../skin/images/button_listen.png"><br>';
$eintraegeprozeile++;
echo '<td class="tdvertical" align="center">';
if((CIS_LEHRVERANSTALTUNG_LEISTUNGSUEBERSICHT_ANZEIGEN && $angemeldet) || $is_lector)
echo '<img class="lv" src="../../../skin/images/button_listen.png"><br>';
if($is_lector)
{
//Anwesenheitsliste
echo "<b><a href='anwesenheitsliste.php?stg_kz=$studiengang_kz&sem=$semester&lvid=$lvid&stsem=$angezeigtes_stsem' class='Item'>".$p->t('lehre/anwesenheitsUndNotenlisten')."</a></b><br>";
}
if($is_lector)
{
//Anwesenheitsliste
echo "<b><a href='anwesenheitsliste.php?stg_kz=$studiengang_kz&sem=$semester&lvid=$lvid&stsem=$angezeigtes_stsem' class='Item'>".$p->t('lehre/anwesenheitsUndNotenlisten')."</a></b><br>";
}
//Leistungsuebersicht
$dir_name=$DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/leistung';
//Leistungsuebersicht
$dir_name=$DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/leistung';
$dest_dir = @dir($dir_name);
if(!@is_dir($dest_dir->path))
{
if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz)))
$dest_dir = @dir($dir_name);
if(!@is_dir($dest_dir->path))
{
exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz)));
exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz)));
}
if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester))
{
exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester));
exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester));
}
if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name)))
{
exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name)));
exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name)));
}
if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/leistung'))
{
exec('mkdir -m 775 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/leistung'));
exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/leistung'));
}
}
if($dest_dir)
{
$dir_empty = true;
while($entry = $dest_dir->read())
{
if($entry != "." && $entry != "..")
if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz)))
{
$dir_empty = false;
break;
exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz)));
exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz)));
}
if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester))
{
exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester));
exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester));
}
if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name)))
{
exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name)));
exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name)));
}
if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/leistung'))
{
exec('mkdir -m 775 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/leistung'));
exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/leistung'));
}
}
}
if($angemeldet || $is_lector)
{
if(isset($dest_dir) && isset($dir_empty) && $dir_empty == false)
{
echo '<a href="'.$dest_dir->path.'" target="_blank">';
echo '<strong>'.$p->t('lehre/leistungsuebersicht').'</strong>';
echo '</a>';
}
else
{
echo '<strong>'.$p->t('lehre/leistungsuebersicht').'</strong>';
}
}
echo '</td>';
if($dest_dir)
{
$dir_empty = true;
while($entry = $dest_dir->read())
{
if($entry != "." && $entry != "..")
{
$dir_empty = false;
break;
}
}
}
if(CIS_LEHRVERANSTALTUNG_LEISTUNGSUEBERSICHT_ANZEIGEN && ($angemeldet || $is_lector))
{
if(isset($dest_dir) && isset($dir_empty) && $dir_empty == false)
{
echo '<a href="'.$dest_dir->path.'" target="_blank">';
echo '<strong>'.$p->t('lehre/leistungsuebersicht').'</strong>';
echo '</a>';
}
else
{
echo '<strong>'.$p->t('lehre/leistungsuebersicht').'</strong>';
}
}
echo '</td>';
}
checkZeilenUmbruch();
//Keine Newsgroups fuer Studiengang '0' (Freifaecher) anzeigen
+8 -4
View File
@@ -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;
}
@@ -1417,9 +1418,12 @@ class wochenplan extends basis_db
if(isset($lktcheck[$lehrstunde->lektor]) && $lktcheck[$lehrstunde->lektor]!=$lehrstunde->unr)
{
$kollision++;
$kollisionsmeldungen[$lehrstunde->unr][]=" LektorIn ".$lehrstunde->lektor; //." ".$lehrstunde->unr."!=".$lktcheck[$lehrstunde->lektor];
$kollisionsmeldungen[$lktcheck[$lehrstunde->lektor]][]=" LektorIn ".$lehrstunde->lektor; //." ".$lehrstunde->unr."!=".$lktcheck[$lehrstunde->lektor];
if(!in_array($lehrstunde->lektor_uid, unserialize(KOLLISIONSFREIE_USER)))
{
$kollision++;
$kollisionsmeldungen[$lehrstunde->unr][]=" LektorIn ".$lehrstunde->lektor; //." ".$lehrstunde->unr."!=".$lktcheck[$lehrstunde->lektor];
$kollisionsmeldungen[$lktcheck[$lehrstunde->lektor]][]=" LektorIn ".$lehrstunde->lektor; //." ".$lehrstunde->unr."!=".$lktcheck[$lehrstunde->lektor];
}
}
else
$lktcheck[$lehrstunde->lektor]=$lehrstunde->unr;
+1 -1
View File
@@ -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')";