From 6c652c8063a721616bca344611af90944128a613 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 4 Oct 2007 15:05:19 +0000 Subject: [PATCH] Lehrauftragsgesamtliste erstellt --- content/statistik/lehrauftragsgesamtliste.php | 312 ++++++++++++++++++ 1 file changed, 312 insertions(+) create mode 100644 content/statistik/lehrauftragsgesamtliste.php diff --git a/content/statistik/lehrauftragsgesamtliste.php b/content/statistik/lehrauftragsgesamtliste.php new file mode 100644 index 000000000..82d892812 --- /dev/null +++ b/content/statistik/lehrauftragsgesamtliste.php @@ -0,0 +1,312 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +/** + * + */ +require_once('../../vilesci/config.inc.php'); +require_once('../../include/functions.inc.php'); +require_once('../../include/Excel/excel.php'); +require_once('../../include/studiengang.class.php'); +require_once('../../include/studiensemester.class.php'); + +if (!$conn=pg_pconnect(CONN_STRING)) + die('Es konnte keine Verbindung zum Server aufgebaut werden!'); + +$stsem = new studiensemester($conn); +$semester_aktuell = $stsem->getaktorNext(); + +$file = 'lehrauftragsgesamtliste.xls'; + +// Creating a workbook +$workbook = new Spreadsheet_Excel_Writer($file); + +// sending HTTP headers +//$workbook->send("Lehrauftragsgesamtliste.xls"); + +// Creating a worksheet +$worksheet =& $workbook->addWorksheet("Lektoren"); + +//Formate Definieren +$format_left =& $workbook->addFormat(); +$format_left->setLeft(2); + +$format_bold =& $workbook->addFormat(); +$format_bold->setBold(); + +$format_bold_border =& $workbook->addFormat(); +$format_bold_border->setBold(); +$format_bold_border->setBorder(2); + +$format_bold_center =& $workbook->addFormat(); +$format_bold_center->setBold(); +$format_bold_center->setAlign('center'); +$format_bold_center->setBorder(2); + +$format_number =& $workbook->addFormat(); +$format_number->setNumFormat('0,0.00'); + +$format_number_bold =& $workbook->addFormat(); +$format_number_bold->setNumFormat('0,0.00'); +$format_number_bold->setBold(); +$format_number_bold->setLeft(2); + +$i=0; +$studiensemester = new studiensemester($conn); +$stsem = $studiensemester->getNearest(); + +$worksheet->write(0,0,'Erstellt am '.date('d.m.Y')." Studiensemester: $stsem", $format_bold); +//Ueberschriften +$zeile=1; +$spalte=0; +$maxlength[$spalte]=10; +$worksheet->write($zeile+1,$spalte++,"Nachname", $format_bold); +$maxlength[$spalte]=10; +$worksheet->write($zeile+1,$spalte++,"Vorname", $format_bold); +$maxlength[$spalte]=10; +$worksheet->write($zeile+1,$spalte++,"UID", $format_bold); + +$qry = "SELECT + distinct tbl_studiengang.studiengang_kz, UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as kuerzel + FROM + lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + JOIN public.tbl_studiengang USING(studiengang_kz) + WHERE + tbl_lehreinheit.studiensemester_kurzbz='$stsem' AND + tbl_lehreinheitmitarbeiter.faktor is not null AND + tbl_lehreinheitmitarbeiter.faktor<>0 AND + tbl_lehreinheitmitarbeiter.stundensatz is not null AND + tbl_lehreinheitmitarbeiter.stundensatz<>0 AND + tbl_lehreinheitmitarbeiter.semesterstunden is not null AND + tbl_lehreinheitmitarbeiter.semesterstunden<>0 ORDER BY kuerzel"; +$result = pg_query($conn, $qry); + +while($row = pg_fetch_object($result)) +{ + $worksheet->write($zeile, $spalte,$row->kuerzel, $format_bold_center); + $worksheet->write($zeile, $spalte+1,$row->kuerzel, $format_bold_center); + $worksheet->write($zeile, $spalte+2,$row->kuerzel, $format_bold_center); + $worksheet->write($zeile, $spalte+3,$row->kuerzel, $format_bold_center); + $stg_spalte[$row->studiengang_kz]=$spalte; + $maxlength[$spalte]=7; + $worksheet->write($zeile+1, $spalte++,'Stunden', $format_bold_border); + $maxlength[$spalte]=5; + $worksheet->write($zeile+1, $spalte++,'Sätze', $format_bold_border); + $maxlength[$spalte]=6; + $worksheet->write($zeile+1, $spalte++,'Faktor', $format_bold_border); + $maxlength[$spalte]=6; + $worksheet->write($zeile+1, $spalte++,'Gesamt', $format_bold_border); + $worksheet->mergeCells($zeile,$spalte-4,$zeile,$spalte-1); +} +$maxlength[$spalte]=12; +$worksheet->write($zeile+1, $spalte,'Gesamtsumme', $format_bold); +$maxspalten = $spalte; + +function drawStg($stg) +{ + global $faktor_arr, $satz_arr, $stunden, $gesamt, $worksheet, $stg_spalte; + global $zeile, $row, $gesamtsumme, $format_number, $maxlength, $format_left; + + $faktoren = ''; + $saetze = ''; + + foreach ($faktor_arr as $faktor) + { + if($faktoren!='') + $faktoren.=', '; + $faktoren.=$faktor; + } + + foreach ($satz_arr as $satz) + { + if($saetze!='') + $saetze.=', '; + $saetze.=$satz; + } + + if(strlen($stunden)>$maxlength[$stg_spalte[$stg]]) + $maxlength[$stg_spalte[$stg]]=strlen($stunden); + $worksheet->write($zeile, $stg_spalte[$stg], $stunden, $format_left); + + if(strlen($saetze)>$maxlength[$stg_spalte[$stg]+1]) + $maxlength[$stg_spalte[$stg]+1]=strlen($saetze); + $worksheet->write($zeile, $stg_spalte[$stg]+1, $saetze); + + if(strlen($faktoren)>$maxlength[$stg_spalte[$stg]+2]) + $maxlength[$stg_spalte[$stg]+2]=strlen($faktoren); + $worksheet->write($zeile, $stg_spalte[$stg]+2, $faktoren); + + if(strlen($gesamt)>$maxlength[$stg_spalte[$stg]+3]) + $maxlength[$stg_spalte[$stg]+3]=strlen($gesamt)+5; + $worksheet->write($zeile, $stg_spalte[$stg]+3, $gesamt, $format_number); + + $gesamtsumme += $gesamt; + $faktor_arr = array(); + $satz_arr = array(); + $stunden = 0; + $gesamt = 0; +} + +function drawGesamtsumme() +{ + global $maxspalten, $zeile, $gesamtsumme, $worksheet, $format_number_bold, $maxlength; + + if(strlen($gesamtsumme)>$maxlength[$maxspalten]) + $maxlength[$maxspalten]=strlen($gesamtsumme); + $worksheet->write($zeile, $maxspalten, $gesamtsumme, $format_number_bold); +} + +$qry = " +SELECT + mitarbeiter_uid, stundensatz, faktor, sum(tbl_lehreinheitmitarbeiter.semesterstunden) as stunden, + stundensatz*sum(tbl_lehreinheitmitarbeiter.semesterstunden)*faktor AS gesamt, studiengang_kz, + nachname, vorname +FROM + lehre.tbl_lehreinheitmitarbeiter JOIN campus.vw_benutzer ON (mitarbeiter_uid=uid) + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) +WHERE + studiensemester_kurzbz='$stsem' AND + tbl_lehreinheitmitarbeiter.faktor is not null AND + tbl_lehreinheitmitarbeiter.faktor<>0 AND + tbl_lehreinheitmitarbeiter.stundensatz is not null AND + tbl_lehreinheitmitarbeiter.stundensatz<>0 AND + tbl_lehreinheitmitarbeiter.semesterstunden is not null AND + tbl_lehreinheitmitarbeiter.semesterstunden<>0 +GROUP BY mitarbeiter_uid, studiengang_kz, stundensatz, faktor, nachname, vorname ORDER BY nachname, vorname, studiengang_kz + "; + +if($result = pg_query($conn, $qry)) +{ + $lastuid=''; + $laststg=''; + $zeile++; + + while($row = pg_fetch_object($result)) + { + if($lastuid!=$row->mitarbeiter_uid) + { + if($lastuid!='') + { + // letzten Studiengang ausgeben + drawStg($laststg); + //Gesamtsumme ausgeben + drawGesamtsumme(); + } + $zeile++; + $lastuid=$row->mitarbeiter_uid; + $laststg=$row->studiengang_kz; + $faktor_arr = array(); + $satz_arr = array(); + $stunden = 0; + $gesamt = 0; + $gesamtsumme=0; + + if(strlen($row->nachname)>$maxlength[0]) + $maxlength[0]=strlen($row->nachname); + $worksheet->write($zeile, 0, $row->nachname); + + if(strlen($row->vorname)>$maxlength[1]) + $maxlength[1]=strlen($row->vorname); + $worksheet->write($zeile, 1, $row->vorname); + + if(strlen($row->mitarbeiter_uid)>$maxlength[2]) + $maxlength[2]=strlen($row->mitarbeiter_uid); + $worksheet->write($zeile, 2, $row->mitarbeiter_uid); + + foreach ($stg_spalte as $spalte) + { + $worksheet->write($zeile, $spalte, null, $format_left); + } + + } + + if($laststg!=$row->studiengang_kz && $laststg!='') + { + drawStg($laststg); + } + + if($row->faktor!='' && $row->faktor!='0' && $row->stunden!='' && $row->stunden!='0' && $row->stundensatz!='' && $row->stundensatz!='0') + { + if(!in_array($row->faktor, $faktor_arr)) + $faktor_arr[]=$row->faktor; + + if(!in_array($row->stundensatz, $satz_arr)) + $satz_arr[]=$row->stundensatz; + + $stunden += $row->stunden; + $gesamt += $row->gesamt; + } + $laststg = $row->studiengang_kz; + } + drawStg($laststg); + drawGesamtsumme(); +} +//foreach($maxlength as $i=>$breite) +// $worksheet->setColumn(0, $i, $breite+2); + +$workbook->close(); + +//Mail versenden mit Excel File im Anhang + + $to = MAIL_GST; + $from = "vilesci@technikum-wien.at"; + $subject = "Lehrauftragsgesamtliste ".date('d.m.Y'); + $message = "Dies ist eine automatische eMail!\nAnbei die Lehrauftragsgesamtliste vom ".date('d.m.Y'); + $fileatttype = "application/xls"; + $fileattname = "lehrauftragsgesamtliste_".date('Y_m_d').".xls"; + + $headers = "From: $from"; + + $fileobj = fopen($file, 'rb'); + $data = fread($fileobj, filesize($file)); + fclose($fileobj); + + $semi_rand = md5(time()); + $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; + + $headers .= "\nMIME-Version: 1.0\n" . + "Content-Type: multipart/mixed;\n" . + " boundary=\"{$mime_boundary}\""; + + $message = "This is a multi-part message in MIME format.\n\n" . + "--{$mime_boundary}\n" . + "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . + "Content-Transfer-Encoding: 7bit\n\n" . + $message . "\n\n"; + + $data = chunk_split(base64_encode($data)); + + $message .= "--{$mime_boundary}\n" . + "Content-Type: {$fileatttype};\n" . + " name=\"{$fileattname}\"\n" . + "Content-Disposition: attachment;\n" . + " filename=\"{$fileattname}\"\n" . + "Content-Transfer-Encoding: base64\n\n" . + $data . "\n\n" . + "--{$mime_boundary}--\n"; + + if(mail($to, $subject, $message, $headers )) + echo "Email mit Lehrauftragsgesamtliste wurde versandt"; + else + echo "Fehler beim Versenden der Lehrauftragsgesamtliste"; +?> \ No newline at end of file