diff --git a/content/statistik/mitarbeiterexport.xls.php b/content/statistik/mitarbeiterexport.xls.php index 31463b29c..502ae281f 100644 --- a/content/statistik/mitarbeiterexport.xls.php +++ b/content/statistik/mitarbeiterexport.xls.php @@ -30,6 +30,7 @@ require_once('../../include/person.class.php'); require_once('../../include/benutzer.class.php'); require_once('../../include/mitarbeiter.class.php'); require_once('../../include/Excel/excel.php'); +require_once('../../include/udf.class.php'); $db = new basis_db(); $user = get_uid(); @@ -43,7 +44,7 @@ else $fix=null; if (isset($_GET['stgl'])) - $stgl = ($_GET['stgl']=='true'?true:false); + $stgl = ($_GET['stgl'] == 'true' ? true : false); else $stgl=null; @@ -72,20 +73,21 @@ if (isset($_GET['zustelladresse'])) else $zustelladresse = null; -//die Spalten die Exportiert werden sollen, werden per GET uebergeben -//spalte1=nachname, spalte2=vorname, spalte3=gebdatum, ... -$anzSpalten=0; -$varname='spalte'.(string)$anzSpalten; +// Die Spalten die Exportiert werden sollen, werden per GET uebergeben +// spalte1=nachname, spalte2=vorname, spalte3=gebdatum, ... +$anzSpalten = 0; +$varname = 'spalte'.(string)$anzSpalten; while (isset($_GET[$varname])) { - $spalte[$anzSpalten]=$_GET[$varname]; + $spalte[$anzSpalten] = $_GET[$varname]; $anzSpalten++; - $varname='spalte'.(string)$anzSpalten; + $varname = 'spalte'.(string)$anzSpalten; } -$zustelladresse=true; + +$zustelladresse = true; // Mitarbeiter holen -$mitarbeiterDAO=new mitarbeiter(); +$mitarbeiterDAO = new mitarbeiter(); $mitarbeiterDAO->getPersonal($fix, $stgl, $fbl, $aktiv, $karenziert, $ausgeschieden, $semester_aktuell); //Sortieren der Eintraege nach Nachname, Vorname @@ -96,105 +98,156 @@ $nachname=array(); $umlaute = array('ö','Ö','ü','Ü','ä','Ä'); $umlauterep = array('o','O','u','U','a','A'); -foreach ($mitarbeiterDAO->result as $key=>$foo) +foreach ($mitarbeiterDAO->result as $key => $foo) { $vorname[$key]=str_replace($umlaute, $umlauterep, $foo->vorname); $nachname[$key]=str_replace($umlaute, $umlauterep, $foo->nachname); } + array_multisort($nachname, SORT_ASC, $vorname, SORT_ASC, $mitarbeiterDAO->result); - // Creating a workbook - $workbook = new Spreadsheet_Excel_Writer(); - $workbook->setVersion(8); - // sending HTTP headers - $workbook->send("Mitarbeiter". "_" . date("d_m_Y") . ".xls"); +// Creating a workbook +$workbook = new Spreadsheet_Excel_Writer(); +$workbook->setVersion(8); +// sending HTTP headers +$workbook->send("Mitarbeiter". "_" . date("d_m_Y") . ".xls"); - // Creating a worksheet - $worksheet =& $workbook->addWorksheet("Mitarbeiter"); - $worksheet->setInputEncoding('utf-8'); +// Creating a worksheet +$worksheet =& $workbook->addWorksheet("Mitarbeiter"); +$worksheet->setInputEncoding('utf-8'); - $format_bold =& $workbook->addFormat(); - $format_bold->setBold(); +$format_bold =& $workbook->addFormat(); +$format_bold->setBold(); - $format_title =& $workbook->addFormat(); - $format_title->setBold(); - // let's merge - $format_title->setAlign('merge'); +$format_title =& $workbook->addFormat(); +$format_title->setBold(); +// let's merge +$format_title->setAlign('merge'); - //Zeilenueberschriften ausgeben - for ($i=0;$i<$anzSpalten;$i++) - $worksheet->write(0,$i,mb_strtoupper(str_replace('_bezeichnung','',$spalte[$i])), $format_bold); - $worksheet->write(0,$i,"STRASSE", $format_bold); - $worksheet->write(0,$i+1,"PLZ", $format_bold); - $worksheet->write(0,$i+2,"ORT", $format_bold); - $worksheet->write(0,$i+3,"FIRMENNAME", $format_bold); +$zeile = 0; - //Maximale Spaltenbreite ermitteln damit sie am Schluss gesetzt werden kann - $j=1; - $maxlength = array(); - for ($i=0;$i<$anzSpalten;$i++) - $maxlength[$i]=mb_strlen(str_replace('_bezeichnung','',$spalte[$i])); - $maxlength[$i]=mb_strlen('STRASSE'); - $maxlength[$i+1]=mb_strlen('PLZ'); - $maxlength[$i+2]=mb_strlen('ORT'); - $maxlength[$i+3]=mb_strlen('FIRMENNAME'); +// Zeilenueberschriften ausgeben +$col = 0; +for ($col = 0; $col < $anzSpalten; $col++) +{ + $worksheet->write($zeile, $col, mb_strtoupper(str_replace('_bezeichnung', '', $spalte[$col])), $format_bold); +} - //Zeilen (Mitarbeiter) ausgeben - foreach ($mitarbeiterDAO->result as $mitarbeiter) +$worksheet->write($zeile, $col, "STRASSE", $format_bold); +$worksheet->write($zeile, ++$col, "PLZ", $format_bold); +$worksheet->write($zeile, ++$col, "ORT", $format_bold); +$worksheet->write($zeile, ++$col, "FIRMENNAME", $format_bold); + +// Maximale Spaltenbreite ermitteln damit sie am Schluss gesetzt werden kann +$maxlength = array(); +for ($col = 0; $col < $anzSpalten; $col++) +{ + $maxlength[$col] = mb_strlen(str_replace('_bezeichnung','',$spalte[$col])); +} + +$maxlength[$col] = mb_strlen('STRASSE'); +$maxlength[++$col] = mb_strlen('PLZ'); +$maxlength[++$col] = mb_strlen('ORT'); +$maxlength[++$col] = mb_strlen('FIRMENNAME'); + +// UDF titles +$udf = new UDF(); +$udfTitlesPerson = $udf->getTitlesPerson(); + +foreach($udfTitlesPerson as $udfTitle) +{ + $worksheet->write($zeile, ++$col, $udfTitle['description'], $format_bold); + $maxlength[$col] = mb_strlen($udfTitle['description']); +} + +$zeile++; + +// Zeilen (Mitarbeiter) ausgeben +foreach ($mitarbeiterDAO->result as $mitarbeiter) +{ + //Spalten ausgeben + for ($col = 0; $col < $anzSpalten; $col++) { - //Spalten ausgeben - for ($i=0;$i<$anzSpalten;$i++) - { - if(is_bool($mitarbeiter->{$spalte[$i]})) - $mitarbeiter->{$spalte[$i]} = ($mitarbeiter->{$spalte[$i]}?'Ja':'Nein'); + if (is_bool($mitarbeiter->{$spalte[$col]})) + $mitarbeiter->{$spalte[$col]} = ($mitarbeiter->{$spalte[$col]} ? 'Ja' : 'Nein'); - if(mb_strlen($mitarbeiter->{$spalte[$i]})>$maxlength[$i]) - $maxlength[$i] = mb_strlen($mitarbeiter->{$spalte[$i]}); - $worksheet->write($j,$i, $mitarbeiter->{$spalte[$i]}); - } + if (mb_strlen($mitarbeiter->{$spalte[$col]}) > $maxlength[$col]) + $maxlength[$col] = mb_strlen($mitarbeiter->{$spalte[$col]}); + $worksheet->write($zeile, $col, $mitarbeiter->{$spalte[$col]}); + } - //Zustelladresse aus der Datenbank holen und dazuhaengen - $qry = "SELECT * FROM public.tbl_adresse WHERE person_id='$mitarbeiter->person_id' AND zustelladresse=true LIMIT 1"; - if($result = $db->db_query($qry)) + //Zustelladresse aus der Datenbank holen und dazuhaengen + $qry = "SELECT * FROM public.tbl_adresse WHERE person_id = '$mitarbeiter->person_id' AND zustelladresse = true LIMIT 1"; + if ($result = $db->db_query($qry)) + { + if ($row = $db->db_fetch_object($result)) { - if($row = $db->db_fetch_object($result)) + if (mb_strlen($row->strasse) > $maxlength[$col]) + $maxlength[$col] = mb_strlen($row->strasse); + $worksheet->write($zeile, $col, $row->strasse); + $col++; + if (mb_strlen($row->plz) > $maxlength[$col]) + $maxlength[$col] = mb_strlen($row->plz); + $worksheet->write($zeile, $col, $row->plz); + $col++; + if (mb_strlen($row->ort) > $maxlength[$col]) + $maxlength[$col] = mb_strlen($row->ort); + $worksheet->write($zeile, $col, $row->ort); + + $col++; + if ($row->firma_id != '') { - if(mb_strlen($row->strasse)>$maxlength[$i]) - $maxlength[$i]=mb_strlen($row->strasse); - $worksheet->write($j,$i, $row->strasse); - if(mb_strlen($row->plz)>$maxlength[$i+1]) - $maxlength[$i+1]=mb_strlen($row->plz); - $worksheet->write($j,$i+1, $row->plz); - if(mb_strlen($row->ort)>$maxlength[$i+2]) - $maxlength[$i+2]=mb_strlen($row->ort); - $worksheet->write($j,$i+2, $row->ort); - - if($row->firma_id!='') + $qry = "SELECT * FROM public.tbl_firma WHERE firma_id = '$row->firma_id'"; + if ($result = $db->db_query($qry)) { - $qry = "SELECT * FROM public.tbl_firma WHERE firma_id='$row->firma_id'"; - if($result = $db->db_query($qry)) + if ($row = $db->db_fetch_object($result)) { - if($row = $db->db_fetch_object($result)) - { - if(mb_strlen($row->name)>$maxlength[$i+3]) - $maxlength[$i+3]=mb_strlen($row->name); - $worksheet->write($j,$i+3, $row->name); - } + if (mb_strlen($row->name) > $maxlength[$col]) + $maxlength[$col] = mb_strlen($row->name); + $worksheet->write($zeile, $col, $row->name); } } } } - - $j++; + } + + $col++; + + // UDF + if (isset($mitarbeiter->p_udf_values)) + { + $udfPerson = json_decode($mitarbeiter->p_udf_values); + if (is_object($udfPerson)) $udfPerson = (array)$udfPerson; + + foreach($udfTitlesPerson as $udfTitle) + { + if (isset($udfPerson[$udfTitle['name']])) + { + if (mb_strlen($udfPerson[$udfTitle['name']]) > $maxlength[$col]) + { + $maxlength[$col] = mb_strlen($udfPerson[$udfTitle['name']]); + } + $worksheet->write($zeile, $col, $udfPerson[$udfTitle['name']]); + } + $col++; + } } - //Die Breite der Spalten setzen - for ($i=0;$i<$anzSpalten;$i++) - $worksheet->setColumn($i, $i, $maxlength[$i]+2); - $worksheet->setColumn($i, $i, $maxlength[$i]+2); - $worksheet->setColumn($i+1, $i+1, $maxlength[$i+1]+2); - $worksheet->setColumn($i+2, $i+2, $maxlength[$i+2]+2); + $zeile++; +} - $workbook->close(); +//Die Breite der Spalten setzen +for ($col = 0; $col < $anzSpalten; $col++) +{ + $worksheet->setColumn($col, $col, $maxlength[$col] + 2); +} -?> +$worksheet->setColumn($col, $col, $maxlength[$col] + 2); +$col++; +$worksheet->setColumn($col, $col, $maxlength[$col] + 2); +$col++; +$worksheet->setColumn($col, $col, $maxlength[$col] + 2); + +$workbook->close(); + +?> \ No newline at end of file diff --git a/content/statistik/studentenexportextended.xls.php b/content/statistik/studentenexportextended.xls.php index e5bf89af0..0d8ea980c 100644 --- a/content/statistik/studentenexportextended.xls.php +++ b/content/statistik/studentenexportextended.xls.php @@ -37,485 +37,561 @@ require_once('../../include/student.class.php'); require_once('../../include/prestudent.class.php'); require_once('../../include/datum.class.php'); require_once('../../include/Excel/excel.php'); +require_once('../../include/udf.class.php'); $user = get_uid(); $datum_obj = new datum(); $db = new basis_db(); loadVariables($user); - //Parameter holen - $data = $_REQUEST['data']; - $studiensemester_kurzbz = $_GET['studiensemester_kurzbz']; - - $maxlength= array(); - $zeile=1; - $zgv_arr=array(); - $zgvmas_arr=array(); - - //ZGV laden - $qry = "SELECT * FROM bis.tbl_zgv ORDER BY zgv_kurzbz"; - if($result = $db->db_query($qry)) - { - while($row = $db->db_fetch_object($result)) - { - $zgv_arr[$row->zgv_code]=$row->zgv_kurzbz; - } - } - - //ZGV Master laden - $qry = "SELECT * FROM bis.tbl_zgvmaster ORDER BY zgvmas_kurzbz"; - if($result = $db->db_query($qry)) - { - while($row = $db->db_fetch_object($result)) - { - $zgvmas_arr[$row->zgvmas_code]=$row->zgvmas_kurzbz; - } - } - - // Creating a workbook - $workbook = new Spreadsheet_Excel_Writer(); - $workbook->setVersion(8); - - // sending HTTP headers - $workbook->send("Studenten". "_" . date("d_m_Y") . ".xls"); +//Parameter holen +$data = $_REQUEST['data']; +$studiensemester_kurzbz = $_GET['studiensemester_kurzbz']; - // Creating a worksheet - $worksheet =& $workbook->addWorksheet("Studenten"); - $worksheet->setInputEncoding('utf-8'); - - $format_bold =& $workbook->addFormat(); - $format_bold->setBold(); +$maxlength = array(); +$zeile = 1; +$zgv_arr = array(); +$zgvmas_arr = array(); - $format_title =& $workbook->addFormat(); - $format_title->setBold(); - // let's merge - $format_title->setAlign('merge'); - - //Zeilenueberschriften ausgeben - $i=0; - $zeile=1; - - $worksheet->write($zeile,$i,"ANREDE", $format_bold); - $maxlength[$i]=6; - $worksheet->write($zeile,++$i,"TITELPRE", $format_bold); - $maxlength[$i]=8; - $worksheet->write($zeile,++$i,"NACHNAME", $format_bold); - $maxlength[$i]=8; - $worksheet->write($zeile,++$i,"VORNAME", $format_bold); - $maxlength[$i]=7; - $worksheet->write($zeile,++$i,"TITELPOST", $format_bold); - $maxlength[$i]=9; - $worksheet->write($zeile,++$i,"EMail Privat", $format_bold); - $maxlength[$i]=12; - $worksheet->write($zeile,++$i,"GEBURTSDATUM", $format_bold); - $maxlength[$i]=12; - $worksheet->write($zeile,++$i,"PERSONENKENNZEICHEN", $format_bold); - $maxlength[$i]=19; - $worksheet->write($zeile,++$i,"STAATSBÜRGERSCHAFT", $format_bold); - $maxlength[$i]=16; - $worksheet->write($zeile,++$i,"SVNR", $format_bold); - $maxlength[$i]=4; - $worksheet->write($zeile,++$i,"ERSATZKENNZEICHEN", $format_bold); - $maxlength[$i]=17; - $worksheet->write($zeile,++$i,"GESCHLECHT", $format_bold); - $maxlength[$i]=10; - $worksheet->write($zeile,++$i,"STUDIENGANG", $format_bold); - $maxlength[$i]=11; - $worksheet->write($zeile,++$i,"SEMESTER IM $studiensemester_kurzbz", $format_bold); - $maxlength[$i]=19; - $worksheet->write($zeile,++$i,"SEMESTER AKTUELL", $format_bold); - $maxlength[$i]=17; - $worksheet->write($zeile,++$i,"VERBAND", $format_bold); - $maxlength[$i]=7; - $worksheet->write($zeile,++$i,"GRUPPE", $format_bold); - $maxlength[$i]=6; - - $worksheet->write($zeile,++$i,"ZGV", $format_bold); - $maxlength[$i]=10; - $worksheet->write($zeile,++$i,"ZGV Ort", $format_bold); - $maxlength[$i]=14; - $worksheet->write($zeile,++$i,"ZGV Datum", $format_bold); - $maxlength[$i]=6; - $worksheet->write($zeile,++$i,"ZGV Master", $format_bold); - $maxlength[$i]=10; - $worksheet->write($zeile,++$i,"ZGV Master Ort", $format_bold); - $maxlength[$i]=14; - $worksheet->write($zeile,++$i,"ZGV Master Datum", $format_bold); - $maxlength[$i]=16; - - $worksheet->write($zeile,++$i,"STATUS", $format_bold); - $maxlength[$i]=6; - $worksheet->write($zeile,++$i,"STATI IN ANDEREN STUDIENGÄNGEN", $format_bold); - $maxlength[$i]=8; - $worksheet->write($zeile,++$i,"EMail Intern", $format_bold); - $maxlength[$i]=12; - $worksheet->write($zeile,++$i,"TELEFON", $format_bold); - $maxlength[$i]=3; - $worksheet->write($zeile,++$i,"GRUPPEN", $format_bold); - $maxlength[$i]=3; - $worksheet->write($zeile,++$i,"UID", $format_bold); - $maxlength[$i]=3; - $worksheet->write($zeile,++$i,"ORGFORM", $format_bold); - $maxlength[$i]=7; - $worksheet->write($zeile,++$i,"VORNAMEN", $format_bold); - $maxlength[$i]=8; - $worksheet->write($zeile,++$i,"RT_PUNKTE1", $format_bold); - $maxlength[$i]=10; - $worksheet->write($zeile,++$i,"RT_PUNKTE2", $format_bold); - $maxlength[$i]=10; - $worksheet->write($zeile,++$i,"RT_GESAMTPUNKTE", $format_bold); - $maxlength[$i]=18; - - $zeile++; - - $ids = explode(';',$data); - $prestudent_ids = ''; - - foreach ($ids as $id) +//ZGV laden +$qry = "SELECT * FROM bis.tbl_zgv ORDER BY zgv_kurzbz"; +if ($result = $db->db_query($qry)) +{ + while($row = $db->db_fetch_object($result)) { - if($id!='') - { - if($prestudent_ids!='') - $prestudent_ids .= ','; - $prestudent_ids .= "'".addslashes($id)."'"; - } + $zgv_arr[$row->zgv_code] = $row->zgv_kurzbz; + } +} + +//ZGV Master laden +$qry = "SELECT * FROM bis.tbl_zgvmaster ORDER BY zgvmas_kurzbz"; +if ($result = $db->db_query($qry)) +{ + while($row = $db->db_fetch_object($result)) + { + $zgvmas_arr[$row->zgvmas_code] = $row->zgvmas_kurzbz; + } +} + +// Creating a workbook +$workbook = new Spreadsheet_Excel_Writer(); +$workbook->setVersion(8); + +// sending HTTP headers +$workbook->send("Studenten". "_" . date("d_m_Y") . ".xls"); + +// Creating a worksheet +$worksheet =& $workbook->addWorksheet("Studenten"); +$worksheet->setInputEncoding('utf-8'); + +$format_bold =& $workbook->addFormat(); +$format_bold->setBold(); + +$format_title =& $workbook->addFormat(); +$format_title->setBold(); +// let's merge +$format_title->setAlign('merge'); + +//Zeilenueberschriften ausgeben +$i = 0; +$zeile = 1; + +$worksheet->write($zeile, $i, "ANREDE", $format_bold); +$maxlength[$i] = 6; +$worksheet->write($zeile, ++$i, "TITELPRE", $format_bold); +$maxlength[$i] = 8; +$worksheet->write($zeile, ++$i, "NACHNAME", $format_bold); +$maxlength[$i] = 8; +$worksheet->write($zeile, ++$i, "VORNAME", $format_bold); +$maxlength[$i] = 7; +$worksheet->write($zeile, ++$i, "TITELPOST", $format_bold); +$maxlength[$i] = 9; +$worksheet->write($zeile, ++$i, "EMail Privat", $format_bold); +$maxlength[$i] = 12; +$worksheet->write($zeile, ++$i, "GEBURTSDATUM", $format_bold); +$maxlength[$i] = 12; +$worksheet->write($zeile, ++$i, "PERSONENKENNZEICHEN", $format_bold); +$maxlength[$i] = 19; +$worksheet->write($zeile, ++$i, "STAATSBÜRGERSCHAFT", $format_bold); +$maxlength[$i] = 16; +$worksheet->write($zeile, ++$i, "SVNR", $format_bold); +$maxlength[$i] = 4; +$worksheet->write($zeile, ++$i, "ERSATZKENNZEICHEN", $format_bold); +$maxlength[$i] = 17; +$worksheet->write($zeile, ++$i, "GESCHLECHT", $format_bold); +$maxlength[$i] = 10; +$worksheet->write($zeile, ++$i, "STUDIENGANG", $format_bold); +$maxlength[$i] = 11; +$worksheet->write($zeile, ++$i, "SEMESTER IM $studiensemester_kurzbz", $format_bold); +$maxlength[$i] = 19; +$worksheet->write($zeile, ++$i, "SEMESTER AKTUELL", $format_bold); +$maxlength[$i] = 17; +$worksheet->write($zeile, ++$i, "VERBAND", $format_bold); +$maxlength[$i] = 7; +$worksheet->write($zeile, ++$i, "GRUPPE", $format_bold); +$maxlength[$i] = 6; + +$worksheet->write($zeile, ++$i, "ZGV", $format_bold); +$maxlength[$i] = 10; +$worksheet->write($zeile, ++$i, "ZGV Ort", $format_bold); +$maxlength[$i] = 14; +$worksheet->write($zeile, ++$i, "ZGV Datum", $format_bold); +$maxlength[$i] = 6; +$worksheet->write($zeile, ++$i, "ZGV Master", $format_bold); +$maxlength[$i] = 10; +$worksheet->write($zeile, ++$i, "ZGV Master Ort", $format_bold); +$maxlength[$i] = 14; +$worksheet->write($zeile, ++$i, "ZGV Master Datum", $format_bold); +$maxlength[$i] = 16; + +$worksheet->write($zeile, ++$i, "STATUS", $format_bold); +$maxlength[$i] = 6; +$worksheet->write($zeile, ++$i, "STATI IN ANDEREN STUDIENGÄNGEN", $format_bold); +$maxlength[$i] = 8; +$worksheet->write($zeile, ++$i, "EMail Intern", $format_bold); +$maxlength[$i] = 12; +$worksheet->write($zeile, ++$i, "TELEFON", $format_bold); +$maxlength[$i] = 3; +$worksheet->write($zeile, ++$i, "GRUPPEN", $format_bold); +$maxlength[$i] = 3; +$worksheet->write($zeile, ++$i, "UID", $format_bold); +$maxlength[$i] = 3; +$worksheet->write($zeile, ++$i, "ORGFORM", $format_bold); +$maxlength[$i] = 7; +$worksheet->write($zeile, ++$i, "VORNAMEN", $format_bold); +$maxlength[$i] = 8; +$worksheet->write($zeile, ++$i, "RT_PUNKTE1", $format_bold); +$maxlength[$i] = 10; +$worksheet->write($zeile, ++$i, "RT_PUNKTE2", $format_bold); +$maxlength[$i] = 10; +$worksheet->write($zeile, ++$i, "RT_GESAMTPUNKTE", $format_bold); +$maxlength[$i] = 18; + +// UDF titles +$udf = new UDF(); +$udfTitlesPerson = $udf->getTitlesPerson(); +$udfTitlesPrestudent = $udf->getTitlesPrestudent(); + +foreach($udfTitlesPerson as $udfTitle) +{ + $worksheet->write($zeile, ++$i, $udfTitle['description'], $format_bold); + $maxlength[$i] = mb_strlen($udfTitle['description']); +} + +foreach($udfTitlesPrestudent as $udfTitle) +{ + $worksheet->write($zeile, ++$i, $udfTitle['description'], $format_bold); + $maxlength[$i] = mb_strlen($udfTitle['description']); +} + +$zeile++; + +$ids = explode(';',$data); +$prestudent_ids = ''; + +foreach ($ids as $id) +{ + if ($id!='') + { + if ($prestudent_ids!='') + $prestudent_ids .= ','; + $prestudent_ids .= "'".addslashes($id)."'"; + } +} + +if ($prestudent_ids!='') +{ + // Student holen + $qry = "SELECT *,"; + + if ($udf->personHasUDF()) + { + $qry .= " p.udf_values AS p_udf_values,"; + } + if ($udf->prestudentHasUDF()) + { + $qry .= " ps.udf_values AS ps_udf_values,"; } - if($prestudent_ids!='') + $qry .= " ps.studiengang_kz AS prestgkz, + ( + SELECT UPPER(typ || kurzbz) + FROM public.tbl_studiengang s + WHERE studiengang_kz = ps.studiengang_kz + ) AS stgbez + FROM public.tbl_prestudent ps + JOIN public.tbl_person p USING(person_id) + LEFT JOIN public.tbl_student s USING(prestudent_id) + WHERE prestudent_id IN($prestudent_ids) + ORDER BY nachname, vorname"; + + if ($db->db_query($qry)) { - // Student holen - $qry = "SELECT *, tbl_prestudent.studiengang_kz as prestgkz, (SELECT UPPER(typ || kurzbz) FROM public.tbl_studiengang WHERE studiengang_kz=tbl_prestudent.studiengang_kz) as stgbez - FROM public.tbl_prestudent JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_student USING(prestudent_id) - WHERE prestudent_id in($prestudent_ids) ORDER BY nachname, vorname"; - - if($db->db_query($qry)) + while($row = $db->db_fetch_object()) { - while($row = $db->db_fetch_object()) - { - draw_content($row); - $zeile++; - } + draw_content($row); + $zeile++; } } +} + +function draw_content($row) +{ + global $maxlength, $datum_obj; + global $zeile, $worksheet; + global $zgv_arr, $zgvmas_arr; + global $studiensemester_kurzbz; + global $udfTitlesPerson, $udfTitlesPrestudent; + $db = new basis_db(); - function draw_content($row) - { - global $maxlength, $datum_obj; - global $zeile, $worksheet; - global $zgv_arr, $zgvmas_arr; - global $studiensemester_kurzbz; - $db = new basis_db(); + $prestudent = new prestudent(); + $prestudent->getLastStatus($row->prestudent_id); + $status = $prestudent->status_kurzbz; + $orgform = $prestudent->orgform_kurzbz; - $prestudent = new prestudent(); - $prestudent->getLastStatus($row->prestudent_id); - $status = $prestudent->status_kurzbz; - $orgform = $prestudent->orgform_kurzbz; + $i = 0; + + //Anrede + if (mb_strlen($row->anrede) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->anrede); + $worksheet->write($zeile, $i, $row->anrede); + $i++; + + //Titelpre + if (mb_strlen($row->titelpre) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->titelpre); + $worksheet->write($zeile, $i, $row->titelpre); + $i++; + + //Nachname + if (mb_strlen($row->nachname) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->nachname); + $worksheet->write($zeile, $i, $row->nachname); + $i++; + + //Vorname + if (mb_strlen($row->vorname) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->vorname); + $worksheet->write($zeile, $i, $row->vorname); + $i++; + + //Titelpost + if (mb_strlen($row->titelpost) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->titelpost); + $worksheet->write($zeile, $i, $row->titelpost); + $i++; + + //Email Privat + //ZustellEmailAdresse aus der Datenbank holen und dazuhaengen + $qry_1 = "SELECT kontakt FROM public.tbl_kontakt + WHERE kontakttyp='email' AND person_id='".addslashes($row->person_id)."' AND zustellung=true + ORDER BY kontakt_id DESC LIMIT 1"; + if ($db->db_query($qry_1)) + { + if ($row_1 = $db->db_fetch_object()) + { + if (mb_strlen($row_1->kontakt) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row_1->kontakt); + $worksheet->write($zeile, $i, $row_1->kontakt); + } + } + $i++; + + //Geburtsdatum + if (mb_strlen($row->gebdatum) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->gebdatum); + $worksheet->write($zeile, $i, $datum_obj->convertISODate($row->gebdatum)); + $i++; + + //Personenkennzeichen + if (isset($row->matrikelnr)) + { + if (mb_strlen($row->matrikelnr) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->matrikelnr); + $worksheet->writeString($zeile, $i, $row->matrikelnr); + } + $i++; + + //Staatsbuergerschaft + if (mb_strlen($row->staatsbuergerschaft) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->staatsbuergerschaft); + $worksheet->write($zeile, $i, $row->staatsbuergerschaft); + $i++; + + //SVNR + if (mb_strlen($row->svnr) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->svnr); + $worksheet->write($zeile, $i, $row->svnr); + $i++; + + //Ersatzkennzeichen + if (mb_strlen($row->ersatzkennzeichen) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->ersatzkennzeichen); + $worksheet->write($zeile, $i, $row->ersatzkennzeichen); + $i++; + + //Geschlecht + if (mb_strlen($row->geschlecht) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->geschlecht); + $worksheet->write($zeile, $i, $row->geschlecht); + $i++; + + //Studiengang + if (mb_strlen($row->stgbez) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->stgbez); + $worksheet->write($zeile, $i, $row->stgbez); + $i++; + + $qry = "SELECT tbl_studentlehrverband.semester AS semester_studiensemester, tbl_student.semester AS semester_aktuell,* FROM public.tbl_studentlehrverband JOIN public.tbl_student USING(student_uid) + WHERE prestudent_id='".addslashes($row->prestudent_id)."' + AND studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'"; + if ($db->db_query($qry)) + { + if ($row_sem = $db->db_fetch_object()) + { + $semester_aktuell = $row_sem->semester_aktuell; + $semester_studiensemester = $row_sem->semester_studiensemester; + $verband = $row_sem->verband; + $gruppe = $row_sem->gruppe; + } + else + { + $semester_aktuell = ''; + $verband = ''; + $gruppe = ''; + } + } + //Semester im eingestellten Studiensemester + if (isset($semester_studiensemester)) + { + if (mb_strlen($semester_studiensemester) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($semester_studiensemester); + $worksheet->write($zeile, $i, $semester_studiensemester); + } + $i++; + + //Semester aktuell + if (isset($semester_aktuell)) + { + if (mb_strlen($semester_aktuell) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($semester_aktuell); + $worksheet->write($zeile, $i, $semester_aktuell); + } + $i++; + + //Verband + if (isset($verband)) + { + if (mb_strlen($verband) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($verband); + $worksheet->write($zeile, $i, $verband); + } + $i++; + + //Gruppe + if (isset($gruppe)) + { + if (mb_strlen($gruppe) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($gruppe); + $worksheet->write($zeile, $i, $gruppe); + } + $i++; + + //ZGV + if ($row->zgv_code!='' && isset($zgv_arr[$row->zgv_code])) + { + if (mb_strlen($zgv_arr[$row->zgv_code]) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($zgv_arr[$row->zgv_code]); + $worksheet->write($zeile, $i, $zgv_arr[$row->zgv_code]); + } + $i++; + + //ZGV Ort + if (mb_strlen($row->zgvort) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->zgvort); + $worksheet->write($zeile, $i, $row->zgvort); + $i++; + + //ZGV Datum + if (mb_strlen($row->zgvdatum) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->zgvdatum); + $worksheet->write($zeile, $i, $row->zgvdatum); + $i++; + + //ZGV Master + if ($row->zgvmas_code!='' && isset($zgvmas_arr[$row->zgvmas_code])) + { + if (mb_strlen($zgvmas_arr[$row->zgvmas_code]) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($zgvmas_arr[$row->zgvmas_code]); + $worksheet->write($zeile, $i, $zgvmas_arr[$row->zgvmas_code]); + } + $i++; + + //ZGV Master Ort + if (mb_strlen($row->zgvmaort) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->zgvmaort); + $worksheet->write($zeile, $i, $row->zgvmaort); + $i++; + + //ZGV Master Datum + if (mb_strlen($row->zgvmadatum) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->zgvmadatum); + $worksheet->write($zeile, $i, $row->zgvmadatum); + $i++; + + //Status + if (mb_strlen($status) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($status); + $worksheet->write($zeile, $i, $status); + $i++; + + //Stati in anderen Studiengaengen + $stati=''; + $qry_1 = "SELECT UPPER(typ::varchar(1) || kurzbz) as stg, get_rolle_prestudent(prestudent_id, null) as status FROM + public.tbl_prestudent JOIN public.tbl_studiengang USING(studiengang_kz) + WHERE person_id='".addslashes($row->person_id)."' AND tbl_prestudent.studiengang_kz<>'".addslashes($row->prestgkz)."'"; + + if ($db->db_query($qry_1)) + { + while($row_1 = $db->db_fetch_object()) + { + if ($stati!='') + $stati.=', '; + $stati.= $row_1->status.' ('.$row_1->stg.')'; + } + } + if (mb_strlen($stati) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($stati); + $worksheet->write($zeile, $i, $stati); + $i++; + + //Email Intern + if (isset($row->student_uid)) + { + if (mb_strlen($row->student_uid.'@'.DOMAIN) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->student_uid.'@'.DOMAIN); + $worksheet->write($zeile, $i, $row->student_uid.'@'.DOMAIN); + } + $i++; - $i=0; - - //Anrede - if(mb_strlen($row->anrede)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->anrede); - $worksheet->write($zeile,$i, $row->anrede); - $i++; - - //Titelpre - if(mb_strlen($row->titelpre)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->titelpre); - $worksheet->write($zeile,$i, $row->titelpre); - $i++; - - //Nachname - if(mb_strlen($row->nachname)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->nachname); - $worksheet->write($zeile,$i, $row->nachname); - $i++; - - //Vorname - if(mb_strlen($row->vorname)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->vorname); - $worksheet->write($zeile,$i, $row->vorname); - $i++; - - //Titelpost - if(mb_strlen($row->titelpost)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->titelpost); - $worksheet->write($zeile,$i, $row->titelpost); - $i++; - - //Email Privat - //ZustellEmailAdresse aus der Datenbank holen und dazuhaengen - $qry_1 = "SELECT kontakt FROM public.tbl_kontakt - WHERE kontakttyp='email' AND person_id='".addslashes($row->person_id)."' AND zustellung=true - ORDER BY kontakt_id DESC LIMIT 1"; - if($db->db_query($qry_1)) + //Telefon + $qry_1 = "SELECT kontakt FROM public.tbl_kontakt + WHERE kontakttyp in('mobil','telefon','so.tel') AND person_id='".addslashes($row->person_id)."' AND zustellung=true LIMIT 1"; + if ($db->db_query($qry_1)) + { + if ($row_1 = $db->db_fetch_object()) { - if($row_1 = $db->db_fetch_object()) - { - if(mb_strlen($row_1->kontakt)>$maxlength[$i]) - $maxlength[$i]=mb_strlen($row_1->kontakt); - $worksheet->write($zeile,$i, $row_1->kontakt); - } + if (mb_strlen($row_1->kontakt) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row_1->kontakt); + $worksheet->writeString($zeile, $i, $row_1->kontakt); } - $i++; - - //Geburtsdatum - if(mb_strlen($row->gebdatum)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->gebdatum); - $worksheet->write($zeile,$i, $datum_obj->convertISODate($row->gebdatum)); - $i++; - - //Personenkennzeichen - if(isset($row->matrikelnr)) - { - if(mb_strlen($row->matrikelnr)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->matrikelnr); - $worksheet->writeString($zeile,$i, $row->matrikelnr); - } - $i++; - - //Staatsbuergerschaft - if(mb_strlen($row->staatsbuergerschaft)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->staatsbuergerschaft); - $worksheet->write($zeile,$i, $row->staatsbuergerschaft); - $i++; - - //SVNR - if(mb_strlen($row->svnr)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->svnr); - $worksheet->write($zeile,$i, $row->svnr); - $i++; - - //Ersatzkennzeichen - if(mb_strlen($row->ersatzkennzeichen)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->ersatzkennzeichen); - $worksheet->write($zeile,$i, $row->ersatzkennzeichen); - $i++; - - //Geschlecht - if(mb_strlen($row->geschlecht)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->geschlecht); - $worksheet->write($zeile,$i, $row->geschlecht); - $i++; - - //Studiengang - if(mb_strlen($row->stgbez)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->stgbez); - $worksheet->write($zeile,$i, $row->stgbez); - $i++; - - $qry = "SELECT tbl_studentlehrverband.semester AS semester_studiensemester, tbl_student.semester AS semester_aktuell,* FROM public.tbl_studentlehrverband JOIN public.tbl_student USING(student_uid) - WHERE prestudent_id='".addslashes($row->prestudent_id)."' - AND studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'"; - if($db->db_query($qry)) - { - if($row_sem = $db->db_fetch_object()) - { - $semester_aktuell = $row_sem->semester_aktuell; - $semester_studiensemester = $row_sem->semester_studiensemester; - $verband = $row_sem->verband; - $gruppe = $row_sem->gruppe; - } - else - { - $semester_aktuell = ''; - $verband = ''; - $gruppe = ''; - } - } - //Semester im eingestellten Studiensemester - if(isset($semester_studiensemester)) - { - if(mb_strlen($semester_studiensemester)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($semester_studiensemester); - $worksheet->write($zeile,$i, $semester_studiensemester); - } - $i++; - - //Semester aktuell - if(isset($semester_aktuell)) - { - if(mb_strlen($semester_aktuell)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($semester_aktuell); - $worksheet->write($zeile,$i, $semester_aktuell); - } - $i++; - - //Verband - if(isset($verband)) - { - if(mb_strlen($verband)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($verband); - $worksheet->write($zeile,$i, $verband); - } - $i++; - - //Gruppe - if(isset($gruppe)) - { - if(mb_strlen($gruppe)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($gruppe); - $worksheet->write($zeile,$i, $gruppe); - } - $i++; - - //ZGV - if($row->zgv_code!='' && isset($zgv_arr[$row->zgv_code])) - { - if(mb_strlen($zgv_arr[$row->zgv_code])>$maxlength[$i]) - $maxlength[$i] = mb_strlen($zgv_arr[$row->zgv_code]); - $worksheet->write($zeile,$i, $zgv_arr[$row->zgv_code]); - } - $i++; - - //ZGV Ort - if(mb_strlen($row->zgvort)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->zgvort); - $worksheet->write($zeile,$i, $row->zgvort); - $i++; - - //ZGV Datum - if(mb_strlen($row->zgvdatum)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->zgvdatum); - $worksheet->write($zeile,$i, $row->zgvdatum); - $i++; - - //ZGV Master - if($row->zgvmas_code!='' && isset($zgvmas_arr[$row->zgvmas_code])) - { - if(mb_strlen($zgvmas_arr[$row->zgvmas_code])>$maxlength[$i]) - $maxlength[$i] = mb_strlen($zgvmas_arr[$row->zgvmas_code]); - $worksheet->write($zeile,$i, $zgvmas_arr[$row->zgvmas_code]); - } - $i++; - - //ZGV Master Ort - if(mb_strlen($row->zgvmaort)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->zgvmaort); - $worksheet->write($zeile,$i, $row->zgvmaort); - $i++; - - //ZGV Master Datum - if(mb_strlen($row->zgvmadatum)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->zgvmadatum); - $worksheet->write($zeile,$i, $row->zgvmadatum); - $i++; - - //Status - if(mb_strlen($status)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($status); - $worksheet->write($zeile,$i, $status); - $i++; - - //Stati in anderen Studiengaengen - $stati=''; - $qry_1 = "SELECT UPPER(typ::varchar(1) || kurzbz) as stg, get_rolle_prestudent(prestudent_id, null) as status FROM - public.tbl_prestudent JOIN public.tbl_studiengang USING(studiengang_kz) - WHERE person_id='".addslashes($row->person_id)."' AND tbl_prestudent.studiengang_kz<>'".addslashes($row->prestgkz)."'"; - - if($db->db_query($qry_1)) - { - while($row_1 = $db->db_fetch_object()) - { - if($stati!='') - $stati.=', '; - $stati.= $row_1->status.' ('.$row_1->stg.')'; - } - } - if(mb_strlen($stati)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($stati); - $worksheet->write($zeile,$i, $stati); - $i++; - - //Email Intern - if(isset($row->student_uid)) - { - if(mb_strlen($row->student_uid.'@'.DOMAIN)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->student_uid.'@'.DOMAIN); - $worksheet->write($zeile,$i, $row->student_uid.'@'.DOMAIN); - } - $i++; - - //Telefon - $qry_1 = "SELECT kontakt FROM public.tbl_kontakt - WHERE kontakttyp in('mobil','telefon','so.tel') AND person_id='".addslashes($row->person_id)."' AND zustellung=true LIMIT 1"; - if($db->db_query($qry_1)) - { - if($row_1 = $db->db_fetch_object()) - { - if(mb_strlen($row_1->kontakt)>$maxlength[$i]) - $maxlength[$i]=mb_strlen($row_1->kontakt); - $worksheet->writeString($zeile,$i, $row_1->kontakt); - } - } - $i++; - - //Spezialgruppen - $grps=''; - $qry_1 = "SELECT gruppe_kurzbz FROM public.tbl_student JOIN public.tbl_benutzergruppe ON (student_uid=uid) - WHERE tbl_student.prestudent_id='".addslashes($row->prestudent_id)."' - AND tbl_benutzergruppe.studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'"; - if($db->db_query($qry_1)) - { - while($row_1 = $db->db_fetch_object()) - { - if($grps!='') - $grps.=','; - - $grps.=$row_1->gruppe_kurzbz; - } - } - if(mb_strlen($grps)>$maxlength[$i]) - $maxlength[$i]=mb_strlen($grps); - $worksheet->write($zeile,$i, $grps); - $i++; - - //UID - if(isset($row->student_uid)) - { - if(mb_strlen($row->student_uid)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->student_uid); - $worksheet->write($zeile,$i, $row->student_uid); - } - $i++; - - //Orgform - if(mb_strlen($orgform)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($orgform); - $worksheet->write($zeile,$i, $orgform); - $i++; - - //Vornamen - if(mb_strlen($row->vornamen)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->vornamen); - $worksheet->write($zeile,$i, $row->vornamen); - $i++; - - - //RT_Punkte1 - if(mb_strlen($row->rt_punkte1)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->rt_punkte1); - $worksheet->write($zeile,$i, $row->rt_punkte1); - $i++; - - //RT_Punkte2 - if(mb_strlen($row->rt_punkte2)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->rt_punkte2); - $worksheet->write($zeile,$i, $row->rt_punkte2); - $i++; - - //RT_Gesamtpunkte - if(mb_strlen($row->rt_gesamtpunkte)>$maxlength[$i]) - $maxlength[$i] = mb_strlen($row->rt_gesamtpunkte); - $worksheet->write($zeile,$i, $row->rt_gesamtpunkte); - $i++; } + $i++; + + //Spezialgruppen + $grps=''; + $qry_1 = "SELECT gruppe_kurzbz FROM public.tbl_student JOIN public.tbl_benutzergruppe ON (student_uid=uid) + WHERE tbl_student.prestudent_id='".addslashes($row->prestudent_id)."' + AND tbl_benutzergruppe.studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'"; + if ($db->db_query($qry_1)) + { + while($row_1 = $db->db_fetch_object()) + { + if ($grps!='') + $grps.=','; + + $grps.=$row_1->gruppe_kurzbz; + } + } + if (mb_strlen($grps) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($grps); + $worksheet->write($zeile, $i, $grps); + $i++; + + //UID + if (isset($row->student_uid)) + { + if (mb_strlen($row->student_uid) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->student_uid); + $worksheet->write($zeile, $i, $row->student_uid); + } + $i++; + + //Orgform + if (mb_strlen($orgform) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($orgform); + $worksheet->write($zeile, $i, $orgform); + $i++; + + //Vornamen + if (mb_strlen($row->vornamen) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->vornamen); + $worksheet->write($zeile, $i, $row->vornamen); + $i++; + + + //RT_Punkte1 + if (mb_strlen($row->rt_punkte1) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->rt_punkte1); + $worksheet->write($zeile, $i, $row->rt_punkte1); + $i++; + + //RT_Punkte2 + if (mb_strlen($row->rt_punkte2) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->rt_punkte2); + $worksheet->write($zeile, $i, $row->rt_punkte2); + $i++; + + //RT_Gesamtpunkte + if (mb_strlen($row->rt_gesamtpunkte) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($row->rt_gesamtpunkte); + $worksheet->write($zeile, $i, $row->rt_gesamtpunkte); + $i++; + + // UDF + if (isset($row->p_udf_values)) + { + $udfPerson = json_decode($row->p_udf_values); + if (is_object($udfPerson)) $udfPerson = (array)$udfPerson; + foreach($udfTitlesPerson as $udfTitle) + { + if (isset($udfPerson[$udfTitle['name']])) + { + if (mb_strlen($udfPerson[$udfTitle['name']]) > $maxlength[$i]) + { + $maxlength[$i] = mb_strlen($udfPerson[$udfTitle['name']]); + } + $worksheet->write($zeile, $i, $udfPerson[$udfTitle['name']]); + } + $i++; + } + } + + if (isset($row->ps_udf_values)) + { + $udfPrestudent = json_decode($row->ps_udf_values); + if (is_object($udfPrestudent)) $udfPrestudent = (array)$udfPrestudent; + + foreach($udfTitlesPrestudent as $udfTitle) + { + if (isset($udfPrestudent[$udfTitle['name']])) + { + if (mb_strlen($udfPrestudent[$udfTitle['name']]) > $maxlength[$i]) + { + $maxlength[$i] = mb_strlen($udfPrestudent[$udfTitle['name']]); + } + $worksheet->write($zeile, $i, $udfPrestudent[$udfTitle['name']]); + } + $i++; + } + } +} - //Die Breite der Spalten setzen - foreach($maxlength as $i=>$breite) - $worksheet->setColumn($i, $i, $breite+2); - - $workbook->close(); +// Die Breite der Spalten setzen +foreach($maxlength as $i => $breite) + $worksheet->setColumn($i, $i, $breite + 2); -?> +$workbook->close(); + +?> \ No newline at end of file diff --git a/include/mitarbeiter.class.php b/include/mitarbeiter.class.php index 3f1e3ca4f..77fbc5702 100644 --- a/include/mitarbeiter.class.php +++ b/include/mitarbeiter.class.php @@ -22,6 +22,7 @@ require_once(dirname(__FILE__).'/person.class.php'); require_once(dirname(__FILE__).'/benutzer.class.php'); require_once(dirname(__FILE__).'/functions.inc.php'); +require_once(dirname(__FILE__).'/udf.class.php'); class mitarbeiter extends benutzer { @@ -644,8 +645,27 @@ class mitarbeiter extends benutzer */ public function getPersonal($fix, $stgl, $fbl, $aktiv, $karenziert, $verwendung, $vertrag=null) { - $qry = "SELECT distinct on(mitarbeiter_uid) *, tbl_benutzer.aktiv as aktiv, tbl_mitarbeiter.insertamum, tbl_mitarbeiter.insertvon, tbl_mitarbeiter.updateamum, tbl_mitarbeiter.updatevon FROM ((public.tbl_mitarbeiter JOIN public.tbl_benutzer ON(mitarbeiter_uid=uid)) JOIN public.tbl_person USING(person_id)) LEFT JOIN public.tbl_benutzerfunktion USING(uid) LEFT JOIN campus.tbl_resturlaub USING(mitarbeiter_uid) WHERE true"; - + $hasUDF = false; + $udf = new UDF(); + + $qry = "SELECT DISTINCT ON(mitarbeiter_uid) *, + tbl_benutzer.aktiv as aktiv, + tbl_mitarbeiter.insertamum, + tbl_mitarbeiter.insertvon, + tbl_mitarbeiter.updateamum, + tbl_mitarbeiter.updatevon"; + + if ($hasUDF = $udf->personHasUDF()) + { + $qry .= ", public.tbl_person.udf_values AS p_udf_values"; + } + + $qry .= " FROM ((public.tbl_mitarbeiter JOIN public.tbl_benutzer ON(mitarbeiter_uid=uid)) + JOIN public.tbl_person USING(person_id)) + LEFT JOIN public.tbl_benutzerfunktion USING(uid) + LEFT JOIN campus.tbl_resturlaub USING(mitarbeiter_uid) + WHERE true"; + if($fix=='true') $qry .= " AND fixangestellt=true"; if($fix=='false') @@ -769,6 +789,11 @@ class mitarbeiter extends benutzer $obj->urlaubstageprojahr = $row->urlaubstageprojahr; $obj->resturlaubstage = $row->resturlaubstage; + if ($hasUDF) + { + $obj->p_udf_values = $row->p_udf_values; + } + $this->result[] = $obj; } return true; diff --git a/include/udf.class.php b/include/udf.class.php new file mode 100644 index 000000000..cd09f08ae --- /dev/null +++ b/include/udf.class.php @@ -0,0 +1,253 @@ +_loadTitles($this->_getUDFDefinition($this->loadPersonJsons())); + } + + /** + * + */ + public function getTitlesPrestudent() + { + return $this->_loadTitles($this->_getUDFDefinition($this->loadPrestudentJsons())); + } + + /** + * + */ + public function loadPersonJsons() + { + return $this->_loadJsons('public', 'tbl_person'); + } + + /** + * + */ + public function loadPrestudentJsons() + { + return $this->_loadJsons('public', 'tbl_prestudent'); + } + + /** + * + */ + public function personHasUDF() + { + $personHasUDF = false; + + $query = 'SELECT COUNT(*) AS count + FROM information_schema.columns + WHERE table_schema = \'public\' + AND table_name = \'tbl_person\' + AND column_name = \'udf_values\''; + + if (!$this->db_query($query)) + { + $this->errormsg = 'Error!!!'; + } + else + { + if ($row = $this->db_fetch_object()) + { + if (isset($row->count) && $row->count > 0) + { + $personHasUDF = true; + } + } + } + + return $personHasUDF; + } + + /** + * + */ + public function prestudentHasUDF() + { + $prestudentHasUDF = false; + + $query = 'SELECT COUNT(*) AS count + FROM information_schema.columns + WHERE table_schema = \'public\' + AND table_name = \'tbl_prestudent\' + AND column_name = \'udf_values\''; + + if (!$this->db_query($query)) + { + $this->errormsg = 'Error!!!'; + } + else + { + if ($row = $this->db_fetch_object()) + { + if (isset($row->count) && $row->count > 0) + { + $prestudentHasUDF = true; + } + } + } + + return $prestudentHasUDF; + } + + /** + * + */ + private function _loadJsons($schema, $table) + { + $jsons = null; + $query = 'SELECT jsons FROM system.tbl_udf WHERE schema = \''.$schema.'\' AND "table" = \''.$table.'\''; + + if (!$this->db_query($query)) + { + $this->errormsg = 'Error occurred while loading jsons'; + } + else + { + if ($row = $this->db_fetch_object()) + { + $jsons = $row->jsons; + } + } + + return $jsons; + } + + /** + * + */ + private function _sortJsonSchemas(&$jsonSchemasArray) + { + // + usort($jsonSchemasArray, function ($a, $b) { + // + if (!isset($a->sort)) + { + $a->sort = 9999; + } + if (!isset($b->sort)) + { + $b->sort = 9999; + } + + if ($a->sort == $b->sort) + { + return 0; + } + + return ($a->sort < $b->sort) ? -1 : 1; + }); + } + + /** + * + */ + private function _getUDFDefinition($jsons) + { + $names = array(); + + // + if ($jsons != null && ($jsonsDecoded = json_decode($jsons)) != null) + { + if (is_object($jsonsDecoded) || is_array($jsonsDecoded)) + { + // + if (is_object($jsonsDecoded)) + { + $jsonsDecoded = array($jsonsDecoded); + } + + $this->_sortJsonSchemas($jsonsDecoded); // + + foreach($jsonsDecoded as $udfJsonShema) + { + if (isset($udfJsonShema->name) && isset($udfJsonShema->title)) + { + $names[] = array('name' => $udfJsonShema->name, 'title' => $udfJsonShema->title); + } + } + } + } + + return $names; + } + + /** + * + */ + private function _loadTitles($udfDefinitions) + { + $titles = array(); + $in = ''; + + for($i = 0; $i < count($udfDefinitions); $i++) + { + $udfDefinition = $udfDefinitions[$i]; + $in .= '\''.$udfDefinition['title'].'\''; + + if ($i < count($udfDefinitions) - 1) $in .= ', '; + } + + $query = 'SELECT pt.text AS title, p.phrase AS phrase + FROM system.tbl_phrase p INNER JOIN system.tbl_phrasentext pt USING(phrase_id) + WHERE pt.sprache = \''.DEFAULT_LEHREINHEIT_SPRACHE.'\' + AND p.phrase IN ('.$in.')'; + + if (!$this->db_query($query)) + { + $this->errormsg = 'Error occurred while loading jsons'; + } + else + { + while ($row = $this->db_fetch_assoc()) + { + for($i = 0; $i < count($udfDefinitions); $i++) + { + $udfDefinition = $udfDefinitions[$i]; + if ($udfDefinition['title'] == $row['phrase']) + { + $udfDefinition['description'] = $row['title']; + $titles[] = $udfDefinition; + } + } + } + } + + return $titles; + } +} \ No newline at end of file