mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-07 23:29:28 +00:00
Lehrauftragsgesamtliste erstellt
This commit is contained in:
@@ -0,0 +1,312 @@
|
||||
<?php
|
||||
/* Copyright (C) 2006 Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
|
||||
*/
|
||||
/**
|
||||
*
|
||||
*/
|
||||
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";
|
||||
?>
|
||||
Reference in New Issue
Block a user