diff --git a/cis/private/lvplan/stpl_kalender.php b/cis/private/lvplan/stpl_kalender.php index 6d1d2f42e..47258eab2 100644 --- a/cis/private/lvplan/stpl_kalender.php +++ b/cis/private/lvplan/stpl_kalender.php @@ -34,20 +34,22 @@ require_once(dirname(__FILE__).'/../../../include/functions.inc.php'); require_once(dirname(__FILE__).'/../../../include/wochenplan.class.php'); require_once(dirname(__FILE__).'/../../../include/datum.class.php'); require_once(dirname(__FILE__).'/../../../include/studiensemester.class.php'); -require_once(dirname(__FILE__).'/../../../include/phrasen.class.php'); +require_once(dirname(__FILE__).'/../../../include/lehrveranstaltung.class.php'); +require_once(dirname(__FILE__).'/../../../include/phrasen.class.php'); +require_once(dirname(__FILE__).'/../../../include/Excel/excel.php'); if(!$db = new basis_db()) die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung')); -$sprache = getSprache(); -$p=new phrasen($sprache); - +$sprache = getSprache(); +$p=new phrasen($sprache); + //Startwerte setzen if(!isset($_GET['db_stpl_table'])) $db_stpl_table='stundenplan'; else $db_stpl_table=$_GET['db_stpl_table']; - + if(!in_array($db_stpl_table,array('stundenplan','stundenplandev'))) die('db_stpl_table invalid'); if(isset($_GET['type'])) @@ -83,16 +85,16 @@ if(isset($_GET["cal"])) // fuer Abonnierung im Google ueber /webdav/google.php $cal = $_GET["cal"]; $uid=decryptData($cal,LVPLAN_CYPHER_KEY); - //Wenn der Key manuell geaendert wird koennen Fehlerhaft kodierte Zeichen + //Wenn der Key manuell geaendert wird koennen Fehlerhaft kodierte Zeichen //entstehen und fuehren zu DB fehlern deshalb werden falsch kodierte uids hier aussortiert if(!check_utf8($uid)) die('Fehlerhafter Parameter'); - + //Pruefen ob dieser Benutzer auch wirklich existiert $benutzer = new benutzer(); if(!$benutzer->load($uid)) die('Ungueltiger Benutzername'); - + //Output-Format wird auf ical geaendert $target='ical'; $format='ical'; @@ -114,11 +116,11 @@ if(!isset($begin)) $objSS->load($ss); $datum_obj = new datum(); $begin = $datum_obj->mktime_fromdate($objSS->start); - + // Ein Monat vor ende des Studiensemester soll zusaetzlich das kommende angezeigt werden $datum_obj = new datum(); $diff = $datum_obj->DateDiff($objSS->ende, date('Y-m-d H:i:s')); - + if($diff>=-30) { $objSS->getNextFrom($ss); @@ -128,21 +130,6 @@ if(!isset($begin)) $ende = $datum_obj->mktime_fromdate($objSS->ende); } - - -// for spezial friends -if($uid=='maderdon') -{ - if(!isset($_GET['format'])) - { - $format='ical'; - $version=2; - $target='ical'; - $begin=1188597600; - $ende=1202166000; - } -} - $jahr=date("Y",$begin); $mon=date("m",$begin); $name='FH-Kalender_'.$mon.'_'.$jahr; @@ -194,6 +181,10 @@ TZOFFSETTO:+0100 END:STANDARD END:VTIMEZONE'; } +elseif($format=='excel') +{ + $exceldata=array(); +} // Print in HTML-File else { @@ -299,7 +290,7 @@ while($begin<$ende) $i++; if(!date("w",$begin)) $begin=jump_day($begin,1); - + $stdplan->init_stdplan(); $datum=$begin; $begin+=604800; // eine Woche @@ -312,9 +303,14 @@ while($begin<$ende) // Stundenplan der Woche drucken if($format=='csv' || $format=='ical') - { + { $stdplan->draw_week_csv($target, LVPLAN_KATEGORIE); } + elseif($format=='excel') + { + $data = $stdplan->draw_week_csv('return', LVPLAN_KATEGORIE); + $exceldata = array_merge($exceldata, $data); + } else { $style='style="padding-top: 10px;" class="page-break-after"'; @@ -335,10 +331,108 @@ elseif($format=='ical') { echo $crlf.'END:VCALENDAR'; } +elseif($format=='excel') +{ + OutputKalenderAsExcel($exceldata); +} // Print in HTML-File else { echo '

'.$p->t('lvplan/fehlerUndFeedback').' '.$p->t('lvplan/lvKoordinationsstelle').'

'; echo ''; } + + +/** + * + */ +function OutputKalenderAsExcel($exceldata) +{ + // Creating a workbook + $workbook = new Spreadsheet_Excel_Writer(); + + // sending HTTP headers + $workbook->send("Termine". "_" . date("d_m_Y") . ".xls"); + $workbook->setVersion(8); + // Creating a worksheet + $worksheet =& $workbook->addWorksheet("Termine"); + $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 + $headline=array('Datum','Von','Bis','Ort','Lektoren','Gruppen','Lehrfach','Anmerkung','StundeVon','StundeBis'); + + $i=0; + foreach ($headline as $title) + { + $worksheet->write(0,$i,$title, $format_bold); + $maxlength[$i]=mb_strlen($title); + $i++; + } + + $zeile=1; + if(is_array($exceldata)) + { + foreach($exceldata as $row) + { + $i=0; + + writecol($worksheet, $maxlength,$zeile, $i++, $row['start_date']); + writecol($worksheet, $maxlength,$zeile, $i++, $row['start_time']); + writecol($worksheet, $maxlength,$zeile, $i++, $row['end_time']); + writecol($worksheet, $maxlength,$zeile, $i++, $row['ort']); + $lkt=''; + foreach($row['lektor_uid'] as $row_lkt) + { + $bn = new benutzer(); + $bn->load($row_lkt); + + $lkt.=$bn->vorname.' '.$bn->nachname.', '; + } + $lkt = mb_substr($lkt, 0, -2); + writecol($worksheet, $maxlength,$zeile, $i++, $lkt); + writecol($worksheet, $maxlength,$zeile, $i++, implode(',',$row['gruppen'])); + + if($row['lehrfach_id']!='') + { + $lv = new lehrveranstaltung(); + $lv->load($row['lehrfach_id']); + $bezeichnung = $lv->bezeichnung; + } + else + $bezeichnung = $row['Summary']; + + writecol($worksheet, $maxlength,$zeile, $i++, $bezeichnung); + writecol($worksheet, $maxlength,$zeile, $i++, $row['titel']); + + writecol($worksheet, $maxlength,$zeile, $i++, min($row['stunden'])); + writecol($worksheet, $maxlength,$zeile, $i++, max($row['stunden'])); + + + $zeile++; + } + } + + //Die Breite der Spalten setzen + foreach($maxlength as $i=>$breite) + $worksheet->setColumn($i, $i, $breite+2); + + $workbook->close(); +} +function writecol($worksheet, &$maxlength, $zeile, $i, $content) +{ + $worksheet->write($zeile, $i, $content); + + if(isset($maxlength[$i])) + if(mb_strlen($content)>$maxlength[$i]) + $maxlength[$i]=mb_strlen($content); +} + ?> diff --git a/cis/private/pdfExport.php b/cis/private/pdfExport.php index c89e929da..b017cbe87 100644 --- a/cis/private/pdfExport.php +++ b/cis/private/pdfExport.php @@ -37,7 +37,7 @@ require_once('../../include/addon.class.php'); if (!$db = new basis_db()) die('Fehler beim Oeffnen der Datenbankverbindung'); - + $user = get_uid(); loadVariables($user); @@ -60,9 +60,9 @@ else if(isset($_GET['version']) && is_numeric($_GET['version'])) $version = $_GET['version']; -else +else $version =''; - + if(isset($_GET['xsl_oe_kurzbz'])) $xsl_oe_kurzbz=$_GET['xsl_oe_kurzbz']; else @@ -106,11 +106,12 @@ if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin')) $buchungstypen = unserialize (CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN); } - $stsem_zahlung = $konto->getLastStSemBuchungstypen($user, $buchungstypen); - + if(isset($_GET['ss'])) + $stsem_zahlung = $konto->getLastStSemBuchungstypen($user, $buchungstypen, $_GET['ss']); + if((($xsl=='Inskription') || ($xsl == 'Studienblatt')) && ($_GET["ss"] != $stsem_zahlung)) { - die('Der Studienbeitrag wurde noch nicht bezahlt'); + die('Der Studienbeitrag wurde noch nicht bezahlt'); } if(isset($_GET['buchungsnummern'])) { @@ -134,11 +135,11 @@ if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin')) //echo $xml_url; // Load the XML source $xml_doc = new DOMDocument; - + if(!$xml_doc->load($xml_url)) die('unable to load xml'); //echo ':'.$xml_doc->saveXML().':'; - + //XSL aus der DB holen $vorlage = new vorlage(); if($xsl_oe_kurzbz!='') @@ -149,7 +150,7 @@ if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin')) { if($xsl_stg_kz=='') $xsl_stg_kz='0'; - + $vorlage->getAktuelleVorlage($xsl_stg_kz, $xsl, $version); } @@ -159,12 +160,12 @@ if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin')) { case 'application/vnd.oasis.opendocument.text': $endung = 'odt'; - break; + break; case 'application/vnd.oasis.opendocument.spreadsheet': - $endung = 'ods'; - break; + $endung = 'ods'; + break; default: - $endung = 'pdf'; + $endung = 'pdf'; } // Load the XSL source @@ -172,11 +173,11 @@ if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin')) if(!$xsl_doc->loadXML($vorlage->text)) die('unable to load xsl'); - + // Configure the transformer $proc = new XSLTProcessor; $proc->importStyleSheet($xsl_doc); // attach the xsl rules - + $buffer = $proc->transformToXml($xml_doc); //echo $buffer; //exit; @@ -186,7 +187,7 @@ if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin')) file_put_contents('content.xml', $buffer); // Wenn ein Style XSL uebergeben wurde wird ein zweites XML File erstellt mit den - // Styleanweisungen und ebenfalls zum Zip hinzugefuegt + // Styleanweisungen und ebenfalls zum Zip hinzugefuegt if(isset($_GET['style_xsl'])) { $style_xsl=$_GET['style_xsl']; @@ -220,8 +221,8 @@ if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin')) } if(!$vorlage_found) $zipfile = DOC_ROOT.'/system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.'.$endung; - - + + $tempname_zip = 'out.zip'; if(copy($zipfile, $tempname_zip)) { @@ -229,10 +230,10 @@ if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin')) if(isset($_GET['style_xsl'])) exec("zip $tempname_zip styles.xml"); - clearstatcache(); + clearstatcache(); if($vorlage->bezeichnung!='') $filename = $vorlage->bezeichnung; - else + else $filename = $vorlage->vorlage_kurzbz; if($output == 'pdf') { @@ -261,12 +262,12 @@ if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin')) $filename = $filename.'.pdf'; } exec("unoconv -e IsSkipEmptyPages=false --stdout -f pdf $tempname_zip > $tempPdfName"); - - $fsize = filesize($tempPdfName); + + $fsize = filesize($tempPdfName); $handle = fopen($tempPdfName,'r'); header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename="'.$filename.'"'); - header('Content-Length: '.$fsize); + header('Content-Length: '.$fsize); } else if($output =='odt') { @@ -280,8 +281,8 @@ if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin')) $handle = fopen($tempname_zip,'r'); header('Content-type: '.$vorlage->mimetype); header('Content-Disposition: attachment; filename="'.$filename.'.'.$endung.'"'); - header('Content-Length: '.$fsize); - } + header('Content-Length: '.$fsize); + } else if($output =='doc') { $tempPdfName = $vorlage->vorlage_kurzbz.'.doc'; @@ -291,19 +292,19 @@ if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin')) $studienordnung->loadStudienordnung($_GET['studienordnung_id']); $filename = $filename.'_'.$studienordnung->studiengangkurzbzlang.'.doc'; } - else + else { $filename = $filename.'.doc'; } exec("unoconv -e IsSkipEmptyPages=false --stdout -f doc $tempname_zip > $tempPdfName"); - - $fsize = filesize($tempPdfName); + + $fsize = filesize($tempPdfName); $handle = fopen($tempPdfName,'r'); header('Content-type: application/vnd.ms-word'); header('Content-Disposition: attachment; filename="'.$filename.'"'); - header('Content-Length: '.$fsize); + header('Content-Length: '.$fsize); } - while (!feof($handle)) + while (!feof($handle)) { echo fread($handle, 8192); } @@ -339,7 +340,7 @@ if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin')) //wenn uid gefunden wird, dann den Nachnamen zum Dateinamen dazuhaengen $nachname=''; - + if(isset($_GET['uid']) && $_GET['uid']!='') { diff --git a/cis/private/profile/dokumente.php b/cis/private/profile/dokumente.php index 022dc4522..935ccbbe4 100755 --- a/cis/private/profile/dokumente.php +++ b/cis/private/profile/dokumente.php @@ -38,7 +38,7 @@ if(isset($_GET['stsem'])) else $stsem = ''; -$uid=get_uid(); +$uid=get_uid(); $student_studiengang = new student(); $student_studiengang->load($uid); @@ -114,13 +114,13 @@ echo '

'.$p->t('tools/dokumente').'

'; - - + + //Aktuelles Studiensemester oder gewaehltes Studiensemester $stsem_obj = new studiensemester(); if($stsem=='') $stsem = $stsem_obj->getaktorNext(); - + $stsem_obj->getAll(); echo "

"; @@ -133,7 +133,7 @@ echo $p->t('global/studiensemester')."
"; - + $konto = new konto(); $buchungstypen = array(); @@ -142,11 +142,11 @@ if(defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN")) $buchungstypen = unserialize (CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN); } -$stsem_zahlung = $konto->getLastStSemBuchungstypen($uid, $buchungstypen); +$stsem_zahlung = $konto->getLastStSemBuchungstypen($uid, $buchungstypen, $stsem); if ($stsem_zahlung != FALSE && $stsem == $stsem_zahlung) { echo "".$p->t('tools/inskriptionsbestaetigung').""; - echo ' - '.$p->t('tools/studienbeitragFuerSSBezahltAmDatum',array($stsem, $konto->buchungsdatum)); + echo ' - '.$p->t('tools/studienbeitragFuerSSBezahlt',array($stsem)); } else echo $p->t('tools/inskriptionsbestaetigung')." - ".$p->t('tools/studienbeitragFuerSSNochNichtBezahlt',array($stsem)); @@ -158,7 +158,7 @@ if(defined('CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN') && CIS_DOKUMENTE_STUDIENBUC if ($stsem_zahlung != FALSE && $stsem == $stsem_zahlung) { echo "".$p->t('tools/studienbuchblatt').""; - echo ' - '.$p->t('tools/studienbeitragFuerSSBezahltAmDatum',array($stsem, $konto->buchungsdatum)); + echo ' - '.$p->t('tools/studienbeitragFuerSSBezahlt',array($stsem)); } else echo $p->t('tools/studienbuchblatt')." - ".$p->t('tools/studienbeitragFuerSSNochNichtBezahlt',array($stsem)); @@ -173,7 +173,7 @@ if(defined('CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN') && CIS_DOKUMENTE_ echo "
"; } echo "
"; - + echo ' '; diff --git a/content/statistik/termine.xls.php b/content/statistik/termine.xls.php index 728864762..321ceb341 100644 --- a/content/statistik/termine.xls.php +++ b/content/statistik/termine.xls.php @@ -97,7 +97,7 @@ $lehrstunde->getStundenplanData($db_stpl_table, $lehrveranstaltung_id, $variable $format_title->setAlign('merge'); //Zeilenueberschriften ausgeben - $headline=array('Datum','Von','Bis','Ort','Lektoren','Gruppen','Lehrfach','StundeVon','StundeBis'); + $headline=array('Datum','Von','Bis','Ort','Lektoren','Gruppen','Lehrfach','Anmerkung','StundeVon','StundeBis'); $i=0; foreach ($headline as $title) @@ -133,6 +133,7 @@ $lehrstunde->getStundenplanData($db_stpl_table, $lehrveranstaltung_id, $variable writecol($zeile, $i++, $lektoren); writecol($zeile, $i++, implode(',',$row->gruppen)); writecol($zeile, $i++, $row->lehrfach_bezeichnung); + writecol($zeile, $i++, implode(',',$row->titel)); writecol($zeile, $i++, $row->stundevon); writecol($zeile, $i++, $row->stundebis); diff --git a/content/termine.xul.php b/content/termine.xul.php index 528c030e6..839adf111 100644 --- a/content/termine.xul.php +++ b/content/termine.xul.php @@ -105,6 +105,10 @@ $student_uid = filter_input(INPUT_GET,'student_uid'); class="sortDirectionIndicator" sort="rdf:http://www.technikum-wien.at/termine/rdf#anwesend" onclick="termineTreeSort()"/> +