diff --git a/cis/private/profile/urlaubsfreigabe.php b/cis/private/profile/urlaubsfreigabe.php index 032006e4b..a1ef58b4d 100644 --- a/cis/private/profile/urlaubsfreigabe.php +++ b/cis/private/profile/urlaubsfreigabe.php @@ -24,6 +24,9 @@ require_once('../../config.inc.php'); require_once('../../../include/functions.inc.php'); require_once('../../../include/datum.class.php'); require_once('../../../include/zeitsperre.class.php'); +require_once('../../../include/person.class.php'); +require_once('../../../include/benutzer.class.php'); +require_once('../../../include/mitarbeiter.class.php'); if(!$conn = pg_pconnect(CONN_STRING)) die('Fehler beim Connecten zur Datenbank'); @@ -69,56 +72,18 @@ echo '
'; //Untergebene holen -$qry = "SELECT * FROM public.tbl_benutzerfunktion WHERE (funktion_kurzbz='fbl' OR funktion_kurzbz='stgl') AND uid='".addslashes($user)."'"; +$mitarbeiter = new mitarbeiter($conn); +$mitarbeiter->getUntergebene($user); -if($result = pg_query($conn, $qry)) -{ - $institut=''; - $stge=''; - while($row = pg_fetch_object($result)) - { - if($row->funktion_kurzbz=='fbl') - { - if($institut!='') - $institut.=','; - - $institut.="'".addslashes($row->fachbereich_kurzbz)."'"; - } - elseif($row->funktion_kurzbz=='stgl') - { - if($stge!='') - $stge.=','; - $stge.="'".$row->studiengang_kz."'"; - } - - } -} - -$qry = "SELECT distinct uid FROM public.tbl_benutzerfunktion WHERE funktion_kurzbz='Institut' AND (false "; - -if($institut!='') - $qry.=" OR fachbereich_kurzbz in($institut)"; -if($stge!='') - $qry.=" OR studiengang_kz in($stge)"; - -$qry.=")"; - -$untergebene=''; -if($result = pg_query($conn, $qry)) -{ - - - while($row = pg_fetch_object($result)) - { - if($untergebene!='') - $untergebene.=','; - $untergebene.="'".addslashes($row->uid)."'"; - } -} - -if($untergebene=='') +if(count($mitarbeiter->untergebene)==0) die('Es sind Ihnen keine Mitarbeiter zugeteilt für die sie den Urlaub freigeben dürfen'); - +$untergebene = ''; +foreach ($mitarbeiter->untergebene as $row) +{ + if($untergebene!='') + $untergebene.=','; + $untergebene .= "'".$row."'"; +} $qry = "SELECT * FROM public.tbl_person JOIN public.tbl_benutzer USING(person_id) WHERE uid in($untergebene)"; $mitarbeiter = array(); diff --git a/cis/private/profile/urlaubstool.php b/cis/private/profile/urlaubstool.php index 56a6139d4..158732e2d 100644 --- a/cis/private/profile/urlaubstool.php +++ b/cis/private/profile/urlaubstool.php @@ -65,19 +65,6 @@ $t=getdate(); $uid = get_uid(); $taste=0; -function getVorgesetzten($uid) -{ - global $conn; - $qry = "SELECT CASE WHEN fachbereich_kurzbz is not null THEN (SELECT uid FROM public.tbl_benutzerfunktion WHERE fachbereich_kurzbz=a.fachbereich_kurzbz AND funktion_kurzbz='fbl' LIMIT 1) - WHEN studiengang_kz is not null THEN (SELECT uid FROM public.tbl_benutzerfunktion WHERE studiengang_kz=a.studiengang_kz AND funktion_kurzbz='stgl' LIMIT 1) - ELSE '' - END as vorgesetzter - FROM public.tbl_benutzerfunktion a WHERE funktion_kurzbz='Institut' AND uid='$uid'"; - $result = pg_query($conn, $qry); - $row = pg_fetch_object($result); - return (isset($row->vorgesetzter)?$row->vorgesetzter:''); -} - $ma= new mitarbeiter($conn); for($i=0;$i<6;$i++) { @@ -240,7 +227,7 @@ if(isset($_GET['speichern']) && isset($_GET['wtag'])) $to.=$vg.'@'.DOMAIN; } } - //$to = 'ruhan@technikum-wien.at'; + //$to = 'oesi@technikum-wien.at'; $benutzer = new benutzer($conn); $benutzer->load($uid); $message = "Dies ist eine automatische Mail! \n". diff --git a/include/mitarbeiter.class.php b/include/mitarbeiter.class.php index 426d1b3f4..3f2529712 100644 --- a/include/mitarbeiter.class.php +++ b/include/mitarbeiter.class.php @@ -44,6 +44,7 @@ class mitarbeiter extends benutzer var $anmerkung; var $bismelden; var $vorgesetzte=array(); + var $untergebene=array(); // ************************************************************************* // * Konstruktor - Uebergibt die Connection und laedt optional einen Mitarbeiter @@ -879,7 +880,6 @@ class mitarbeiter extends benutzer */ function getVorgesetzte($uid=null) { - global $conn; $return=false; if (is_null($uid)) $uid=$this->uid; @@ -889,7 +889,7 @@ class mitarbeiter extends benutzer ELSE '' END as vorgesetzter FROM public.tbl_benutzerfunktion a WHERE funktion_kurzbz='Institut' AND uid='$uid'"; - $result = pg_query($conn, $qry); + $result = pg_query($this->conn, $qry); while($row = pg_fetch_object($result)) { if ($row->vorgesetzter!='') @@ -898,6 +898,9 @@ class mitarbeiter extends benutzer $return=true; } } + + $this->vorgesetzte = array_unique($this->vorgesetzte); + if ($return) return $return; // Suche nach Assistenz @@ -906,7 +909,7 @@ class mitarbeiter extends benutzer ELSE '' END as vorgesetzter FROM public.tbl_benutzerfunktion a WHERE funktion_kurzbz='ass' AND uid='$uid'"; - $result = pg_query($conn, $qry); + $result = pg_query($this->conn, $qry); while($row = pg_fetch_object($result)) { if ($row->vorgesetzter!='') @@ -915,7 +918,72 @@ class mitarbeiter extends benutzer $return=true; } } + $this->vorgesetzte = array_unique($this->vorgesetzte); return $return; } + + // ************************ + // * gibt die UIDs der Untergebenen zurück + // ************************ + function getUntergebene($uid=null) + { + if (is_null($uid)) + $uid=$this->uid; + + //Alle Studiengänge und Fachbereiche holen bei denen die Person die Leitung hat + $qry = "SELECT * FROM public.tbl_benutzerfunktion + WHERE (funktion_kurzbz='fbl' OR funktion_kurzbz='stgl') AND uid='".addslashes($uid)."'"; + + if($result = pg_query($this->conn, $qry)) + { + $institut=''; + $stge=''; + while($row = pg_fetch_object($result)) + { + if($row->funktion_kurzbz=='fbl') + { + if($institut!='') + $institut.=','; + + $institut.="'".addslashes($row->fachbereich_kurzbz)."'"; + } + elseif($row->funktion_kurzbz=='stgl') + { + if($stge!='') + $stge.=','; + $stge.="'".$row->studiengang_kz."'"; + } + + } + } + + //Alle Personen holen die diesen Studiengaengen/Fachbereichen untergeordnet sind + $qry = "SELECT distinct uid FROM public.tbl_benutzerfunktion WHERE (funktion_kurzbz='Institut' AND (false "; + + if($institut!='') + $qry.=" OR fachbereich_kurzbz in($institut)"; + if($stge!='') + $qry.=" OR studiengang_kz in($stge)"; + + $qry.=")) "; + + if($stge!='') + $qry.=" OR (funktion_kurzbz='ass' AND studiengang_kz in($stge))"; + + if($result = pg_query($this->conn, $qry)) + { + while($row = pg_fetch_object($result)) + { + $this->untergebene[]=$row->uid; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Ermitteln der Untergebenen'; + return false; + } + + } } ?> \ No newline at end of file diff --git a/vilesci/lehre/lvplanwartung.php b/vilesci/lehre/lvplanwartung.php index f3c7fbde6..f2df9a140 100644 --- a/vilesci/lehre/lvplanwartung.php +++ b/vilesci/lehre/lvplanwartung.php @@ -23,6 +23,7 @@ require_once('../config.inc.php'); require_once('../../include/studiengang.class.php'); require_once('../../include/functions.inc.php'); +require_once('../../include/studiensemester.class.php'); if(!$conn=pg_pconnect(CONN_STRING)) die("Konnte Verbindung zur Datenbank nicht herstellen"); @@ -105,15 +106,17 @@ if (isset($_GET['insert'])) } } -$where=" studiensemester_kurzbz='SS2008'"; -if ($semester>0) +$stsem_obj = new studiensemester($conn); +$studiensemester = $stsem_obj->getNearest(); +$where=" studiensemester_kurzbz='".$studiensemester."'"; +if (isset($semester) && $semester>0) $where.=" AND semester=$semester"; if ($stg_kz>0) $where.=" AND studiengang_kz='$stg_kz'"; if(!is_numeric($stg_kz)) $stg_kz=0; -if(!is_numeric($semester)) +if(!isset($semester) || !is_numeric($semester)) $semester=0;