From 5775cbb68b1eb4590262c526a9609806ed0e60bd Mon Sep 17 00:00:00 2001 From: oesi Date: Wed, 10 Feb 2016 14:12:04 +0100 Subject: [PATCH 1/7] =?UTF-8?q?Fehler=20behoben=20bei=20dem=20das=20Erstel?= =?UTF-8?q?len=20von=20Inskriptionsbest=C3=A4tigungen=20des=20Vorsemesters?= =?UTF-8?q?=20nicht=20m=C3=B6glich=20war=20wenn=20bereits=20die=20Studieng?= =?UTF-8?q?eb=C3=BChr=20f=C3=BCr=20das=20aktuelle=20Semester=20erfasst=20w?= =?UTF-8?q?urde.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/pdfExport.php | 62 +++++++++++++++---------------- cis/private/profile/dokumente.php | 18 ++++----- include/konto.class.php | 10 +++-- locale/de-AT/tools.php | 2 +- locale/en-US/tools.php | 2 +- 5 files changed, 49 insertions(+), 45 deletions(-) diff --git a/cis/private/pdfExport.php b/cis/private/pdfExport.php index c89e929da..7431913e6 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,11 @@ if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin')) $buchungstypen = unserialize (CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN); } - $stsem_zahlung = $konto->getLastStSemBuchungstypen($user, $buchungstypen); - + $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 +134,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 +149,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 +159,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 +172,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 +186,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 +220,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 +229,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 +261,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 +280,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 +291,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 +339,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/include/konto.class.php b/include/konto.class.php index 1ba9e1644..26cae748b 100644 --- a/include/konto.class.php +++ b/include/konto.class.php @@ -489,7 +489,7 @@ class konto extends basis_db AND tbl_benutzer.person_id = tbl_konto.person_id AND tbl_konto.studiengang_kz=tbl_student.studiengang_kz AND tbl_konto.buchungstyp_kurzbz = 'Studiengebuehr' ORDER BY buchungsnr"; - + if($this->db_query($subqry)) { if ($this->db_num_rows()==0) @@ -629,7 +629,7 @@ class konto extends basis_db * student_uid und studiensemester * gibt true/false zurueck und setzt bei true das buchungsdatum $this->buchungsdatum */ - public function getLastStSemBuchungstypen($uid, $buchungstyp_kurzbz_array) + public function getLastStSemBuchungstypen($uid, $buchungstyp_kurzbz_array, $studiensemester_kurzbz=null) { $subqry = "SELECT tbl_konto.buchungsnr, tbl_konto.buchungsdatum, tbl_konto.buchungsnr_verweis, tbl_konto.studiensemester_kurzbz FROM @@ -640,7 +640,11 @@ class konto extends basis_db WHERE tbl_benutzer.uid = ".$this->db_add_param($uid)." AND tbl_konto.studiengang_kz=tbl_student.studiengang_kz - AND tbl_konto.buchungstyp_kurzbz in(".$this->db_implode4SQL($buchungstyp_kurzbz_array).") + AND tbl_konto.buchungstyp_kurzbz in(".$this->db_implode4SQL($buchungstyp_kurzbz_array).")"; + if(!is_null($studiensemester_kurzbz)) + $subqry.=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + + $subqry.=" ORDER BY tbl_studiensemester.start DESC"; if($result = $this->db_query($subqry)) diff --git a/locale/de-AT/tools.php b/locale/de-AT/tools.php index 223ccbd2e..59ab7636d 100755 --- a/locale/de-AT/tools.php +++ b/locale/de-AT/tools.php @@ -3,7 +3,7 @@ //Dokumente $this->phrasen['tools/dokumente']='Dokumente'; $this->phrasen['tools/inskriptionsbestaetigung']='Inskriptionsbestätigung'; -$this->phrasen['tools/studienbeitragFuerSSBezahltAmDatum']='Studienbeitrag für das %1$s bezahlt am %2$s'; +$this->phrasen['tools/studienbeitragFuerSSBezahlt']='Studienbeitrag für das %1$s bezahlt'; $this->phrasen['tools/studienbeitragFuerSSNochNichtBezahlt']='Studienbeitrag für das %1$s noch nicht bezahlt'; $this->phrasen['tools/studienerfolgsbestaetigung']='Studienerfolgsbestätigung'; $this->phrasen['tools/studiensemesterAuswaehlen']='Bitte wählen Sie das entsprechende Studiensemester aus'; diff --git a/locale/en-US/tools.php b/locale/en-US/tools.php index e23be4c49..4f4b81edd 100755 --- a/locale/en-US/tools.php +++ b/locale/en-US/tools.php @@ -3,7 +3,7 @@ //Dokumente $this->phrasen['tools/dokumente']='Documents'; $this->phrasen['tools/inskriptionsbestaetigung']='Enrollment Confirmation'; -$this->phrasen['tools/studienbeitragFuerSSBezahltAmDatum']='tuition fee for semester %1$s paid at %2$s'; +$this->phrasen['tools/studienbeitragFuerSSBezahlt']='tuition fee for semester %1$s paid'; $this->phrasen['tools/studienbeitragFuerSSNochNichtBezahlt']='tuition fee for semester %1$s not yet paid'; $this->phrasen['tools/studienerfolgsbestaetigung']='Student progress report'; $this->phrasen['tools/studiensemesterAuswaehlen']='Please select the corresponding semester'; From d702a5a35db596fee0253e5e3bde40c7764381cd Mon Sep 17 00:00:00 2001 From: oesi Date: Wed, 10 Feb 2016 15:19:40 +0100 Subject: [PATCH 2/7] =?UTF-8?q?Distinct=20bei=20Ermittlung=20aller=20Lehre?= =?UTF-8?q?nden=20einer=20Lehrveranstaltung=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/lehreinheitmitarbeiter.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/lehreinheitmitarbeiter.class.php b/include/lehreinheitmitarbeiter.class.php index b49c9c99f..fe1a50a94 100644 --- a/include/lehreinheitmitarbeiter.class.php +++ b/include/lehreinheitmitarbeiter.class.php @@ -505,7 +505,7 @@ class lehreinheitmitarbeiter extends basis_db } $qry = "SELECT - vw_mitarbeiter.uid, vorname, nachname, titelpre, titelpost + distinct vw_mitarbeiter.uid, vorname, nachname, titelpre, titelpost FROM lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) From 951e1bd9764e673c47490fc7d70f0bcef302953f Mon Sep 17 00:00:00 2001 From: oesi Date: Thu, 11 Feb 2016 09:55:41 +0100 Subject: [PATCH 3/7] =?UTF-8?q?Fehler=20behoben=20bei=20dem=20keine=20Zahl?= =?UTF-8?q?ungsbest=C3=A4tigungen=20erstellt=20werden=20konnten?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/pdfExport.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cis/private/pdfExport.php b/cis/private/pdfExport.php index 7431913e6..b017cbe87 100644 --- a/cis/private/pdfExport.php +++ b/cis/private/pdfExport.php @@ -106,7 +106,8 @@ if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin')) $buchungstypen = unserialize (CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN); } - $stsem_zahlung = $konto->getLastStSemBuchungstypen($user, $buchungstypen, $_GET['ss']); + if(isset($_GET['ss'])) + $stsem_zahlung = $konto->getLastStSemBuchungstypen($user, $buchungstypen, $_GET['ss']); if((($xsl=='Inskription') || ($xsl == 'Studienblatt')) && ($_GET["ss"] != $stsem_zahlung)) { From 606949513cf9024616e85551ef4a5c4801927cf4 Mon Sep 17 00:00:00 2001 From: oesi Date: Mon, 15 Feb 2016 10:19:20 +0100 Subject: [PATCH 4/7] =?UTF-8?q?-=20LVPlan=20kann=20als=20Excel=20exportier?= =?UTF-8?q?t=20werden=20-=20Stunden=20werden=20im=20Export=20(ICal,=20Cald?= =?UTF-8?q?av,=20etc)=20nicht=20mehr=20zu=204er=20Bl=C3=B6cken=20geblockt?= =?UTF-8?q?=20sondern=20auf=20die=20gesammte=20L=C3=A4nge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/lvplan/stpl_kalender.php | 148 ++++++++++++++++++++++----- include/wochenplan.class.php | 75 ++++++++------ skin/images/xls.png | Bin 0 -> 1271 bytes skin/images/xls_light.png | Bin 0 -> 1172 bytes 4 files changed, 163 insertions(+), 60 deletions(-) create mode 100644 skin/images/xls.png create mode 100644 skin/images/xls_light.png 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/include/wochenplan.class.php b/include/wochenplan.class.php index f7b1dd8d8..76e420778 100644 --- a/include/wochenplan.class.php +++ b/include/wochenplan.class.php @@ -495,11 +495,13 @@ class wochenplan extends basis_db //global $kalender_begin_ws, $kalender_ende_ws, $kalender_begin_ss, $kalender_ende_ss; $kal_link_ws=$this->kal_link.'&begin='.$this->studiensemester_now->start.'&ende='.$this->studiensemester_now->ende; $kal_link_ss=$this->kal_link.'&begin='.$this->studiensemester_next->start.'&ende='.$this->studiensemester_next->ende; + //echo '        '.$p->t('global/kalender').':   '.$this->crlf; echo $this->crlf; //echo ' '.$p->t('lvplan/uebersicht').': '.$this->studiensemester_now->name.' '.$this->crlf; echo $this->studiensemester_now->name.'
'.$this->crlf; echo ' HTML'.$this->crlf; + echo ' Excel'.$this->crlf; echo ' CSV'.$this->crlf; echo ' CSV-Outlook'.$this->crlf; echo ' vCal Version 1.0'.$this->crlf; @@ -508,6 +510,7 @@ class wochenplan extends basis_db //echo '     '.$p->t('lvplan/uebersicht').': '.$this->studiensemester_next->name.' '.$this->crlf; echo ' '.$this->studiensemester_next->name.'
'.$this->crlf; echo ' HTML'.$this->crlf; + echo ' Excel'.$this->crlf; echo ' CSV'.$this->crlf; echo ' CSV-Outlook'.$this->crlf; echo ' iCal Version 1.0'.$this->crlf; @@ -2264,6 +2267,7 @@ class wochenplan extends basis_db { $blocked=array(); $gruppiert=array(); + for ($k=0; $k<$num_rows_stunde; $k++) { $row = $this->db_fetch_object($this->stunde, $k); @@ -2280,14 +2284,20 @@ class wochenplan extends basis_db unset($lehrverband); if (isset($lehrfach)) unset($lehrfach); + if (isset($lektor_uids)) + unset($lektor_uids); + if (isset($stunden_arr)) + unset($stunden_arr); foreach ($this->std_plan[$i][$j] as $lehrstunde) { $unr[]=$lehrstunde->unr; // Lektoren $lektor[]=$lehrstunde->lektor; + $lektor_uids[]=$lehrstunde->lektor_uid; // Lehrverband $lvb=$lehrstunde->stg.'-'.$lehrstunde->sem; + $stunden_arr[]=$j; if ($lehrstunde->ver!=null && $lehrstunde->ver!='0' && $lehrstunde->ver!='') { $lvb.=$lehrstunde->ver; @@ -2383,49 +2393,38 @@ class wochenplan extends basis_db if(!$blockcontinue) { // Blockungen ueber mehrere Stunden erkennen - if (isset($this->std_plan[$i][$j+1][$idx]) && isset($this->std_plan[$i][$j+1][$idx]->stundenplan_id) - && ($this->std_plan[$i][$j][$idx]->unr == $this->std_plan[$i][$j+1][$idx]->unr) - && $this->std_plan[$i][$j][$idx]!='0' && $k<($num_rows_stunde-1) - && !($this->std_plan[$i][$j][$idx]->reservierung && $this->std_plan[$i][$j][$idx]->lektor!=$this->std_plan[$i][$j+1][$idx]->lektor)) + + $blockflag=false; + for($blockstunden=1;$blockstunden<=$num_rows_stunde;$blockstunden++) { - //2er Block - if(isset($blocked[$this->std_plan[$i][$j][$idx]->unr])) - $blocked[$this->std_plan[$i][$j][$idx]->unr]++; - else - $blocked[$this->std_plan[$i][$j][$idx]->unr]=1; - $row = $this->db_fetch_object($this->stunde, ($k+1)); - $end_time=$row->ende; - - if (isset($this->std_plan[$i][$j+2][$idx]) && isset($this->std_plan[$i][$j+2][$idx]->stundenplan_id) - && ($this->std_plan[$i][$j][$idx]->unr == $this->std_plan[$i][$j+2][$idx]->unr) - && $k<($num_rows_stunde-2) - && !($this->std_plan[$i][$j][$idx]->reservierung && $this->std_plan[$i][$j][$idx]->lektor!=$this->std_plan[$i][$j+2][$idx]->lektor)) + if (isset($this->std_plan[$i][$j+$blockstunden][$idx]) && isset($this->std_plan[$i][$j+$blockstunden][$idx]->stundenplan_id) + && ($this->std_plan[$i][$j][$idx]->unr == $this->std_plan[$i][$j+$blockstunden][$idx]->unr) + && $this->std_plan[$i][$j][$idx]!='0' && $k<($num_rows_stunde-$blockstunden) + && !($this->std_plan[$i][$j][$idx]->reservierung && $this->std_plan[$i][$j][$idx]->lektor!=$this->std_plan[$i][$j+$blockstunden][$idx]->lektor)) { - //3er Block - $blocked[$this->std_plan[$i][$j][$idx]->unr]++; - $row = $this->db_fetch_object($this->stunde, ($k+2)); - $end_time=$row->ende; - if (isset($this->std_plan[$i][$j+3][$idx]) && isset($this->std_plan[$i][$j+3][$idx]->stundenplan_id) - && ($this->std_plan[$i][$j][$idx]->unr == $this->std_plan[$i][$j+3][$idx]->unr) - && $k<($num_rows_stunde-3) - && !($this->std_plan[$i][$j][$idx]->reservierung && $this->std_plan[$i][$j][$idx]->lektor!=$this->std_plan[$i][$j+3][$idx]->lektor)) - { - //4er Block + if(isset($blocked[$this->std_plan[$i][$j][$idx]->unr])) $blocked[$this->std_plan[$i][$j][$idx]->unr]++; - $row = $this->db_fetch_object($this->stunde, ($k+3)); + else + $blocked[$this->std_plan[$i][$j][$idx]->unr]=1; + $row = $this->db_fetch_object($this->stunde, ($k+$blockstunden)); + $stunden_arr[]=$row->stunde; + $end_time=$row->ende; + $blockflag=true; + } + else + { + if(!$blockflag) + { + $row = $this->db_fetch_object($this->stunde, $k); + $stunden_arr[]=$row->stunde; $end_time=$row->ende; + break; } } } - else - { - $row = $this->db_fetch_object($this->stunde, $k); - $end_time=$row->ende; - } } - //Wenn im selben Raum mehrere Lektoren sind bzw mehrere Gruppen //dann werden diese zusammengruppiert und als ein Eintrag angezeigt for($idx1=0;$idx1std_plan[$i][$j]);$idx1++) @@ -2544,9 +2543,19 @@ class wochenplan extends basis_db $description = str_replace(',',' ',$description); $return[]=array('UID'=>$UID, + 'lehrfach_id'=>(isset($this->std_plan[$i][$j][$idx]->lehrfach_id)?$this->std_plan[$i][$j][$idx]->lehrfach_id:''), + 'ort'=>$this->std_plan[$i][$j][$idx]->ort, + 'lektor_uid'=>array_unique($lektor_uids), + 'gruppen'=>array_unique($lehrverband), + 'stunden'=>array_unique($stunden_arr), + 'titel'=>$this->std_plan[$i][$j][$idx]->titel, 'unr'=>$unr, 'Summary'=>$Summary, 'Description'=>$description, + 'start_date'=>$start_date, + 'end_date'=>$end_date, + 'start_time'=>$start_time, + 'end_time'=>$end_time, 'dtstart'=>$start_date_time_ical, 'dtend'=>$end_date_time_ical, 'reservierung'=>$this->std_plan[$i][$j][$idx]->reservierung, diff --git a/skin/images/xls.png b/skin/images/xls.png new file mode 100644 index 0000000000000000000000000000000000000000..5c88cbde54075708c382dcf97b8e6fe52c2af28f GIT binary patch literal 1271 zcmV>lXf00004b3#c}2nYxW zdbBMMMzs(+G&|7v(KI0 z=^P(OYZ<1UDb(r%|EGJu`~C0tJLi1oo-0T~hLY_CLKEE!OaO6QL|79%^mbFcTx03B zmq2brGDJXm(4=3*&N4Mo4NWp2LKEEt%m6Y#E|Mwow4rp{@cV#Ex2;6V!$^vO3<=8& z0i`6V8dA!Xa5%gccpXTMmsGavC+m^Q>lxi+d0D1N`PzAoqWmlsV9&{`>F*ynWs6FA zkN4|UGh1JoJUY-reN{?%*kCYxEEGlA0<7zewz196tWU~m^@i?=56(1kY~6e=)ZgZ< z-M`Qgy%%D}m?0c}_j$A_y-&Q9a=lO##RHfFA*Ea+#5hF!S^1-(EwyCFahuZ@O6eXq zn{-jXqH3Zs5R*pahWD?Y<+K=e(H`ozODQjz42Fe(TPTVm0YdF+Q)WhbesARUPA>~S zJ;rs1yVnuU9Y36J*UZ7F)ApL@_W7HPy3~B=)~qQSq3hKJ6j;q1U%!|q3T!>*ES*-w zp?Bscgov$~)UN5ST#JbxKU&1p!uu!h&F9APP1&;vdm^6t?f@(%JwJT7kQXM7?24_M zKY`Cnr=t<#L0(B$kF-Z3&WyA)YhTQ2N0imOPB5h~j}}A{%_oXfi$(W z;`RA^e4Y?QO3BGn6C>iAQFV@7YYwAEj_C5V-gaWIzCbV- zV)Uqy7}HF|9s#jR*sMYbnwuSb_QiHwZFg|G+St5xJ5HwyfFs|1PnEs8E5Ej`p7%c3 zz^OA;T&}ssUpHzKLO_yB^Wwqx9G#Ai29+I(61w zP5sRV%2q8$RaJKHJ3!T0J5we<1wcznEB5ohq0^@_c+enjHZ)++>v6hV-jDK<*xi%XfkB9Ts)ug4TVKf-1I8%j;MtQ8D zfZ4NWCI!-U=+!pfvLl(8l&ilaun!+PWFq{BhhD56fyC+&NUR=##OnVCA|O1_#RWp? zyw(DKAU!A3Qs;7egp|TKFc?uKCo8k_FWxIcq0mMl#D;+>-lMh(DWx_X4sQll0OkP( h@CzZf=ybYGe*^!2#={g9sl)&P002ovPDHLkV1lcwP=x>h literal 0 HcmV?d00001 diff --git a/skin/images/xls_light.png b/skin/images/xls_light.png new file mode 100644 index 0000000000000000000000000000000000000000..2f0edf070b1d5a280d2640597b482f648e5fc15e GIT binary patch literal 1172 zcmV;F1Z(?=P)>lXf00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3D^Jt3D^P0pt-F8000McNliru-~tN|1_UiSLE!)Z1R+U8 zK~z}7?UqYyR8<(qe`oHUX{Vj(6gus+1*ub;rV3P$QcSUk*oC^%L^p((plFP#QR7w@ zlCYA5g>m76;6@_}N#n*uA~K1T0x1OJhF7OEW77w;^SJZ6ckbMKTp*=|KBmx2UGVMh zIp4|ucfa#L-#LO3qW^fPMF{x=umkuVoBnSPy)wQ~?k6YCz5^UavH=(;=5QTR0f(KXEqr5b%k!?;|;hq~pKbcbx@ue@PlrN~KsVehz#9I2TI# zaqznTa`=vS?wGI2S^TJP>tw)JWdaP{ob;T!c&lE@`D^#T)PB1w*pOXB-vmyos`|As zP4g)5#Zt7%oWZeQuaeHsuW(J3laKp4iN(|WeEtTuJ%3$$Q!O99x*3NM%N68HVVY(N zs41Am0U>yPv8s$Gvd-h7YxNo3ROXIXx)j?eS`PUDL`%KbIQVkMwA-oJi-;E_{OwZJ zH-V%uO;ZAxmNo9KsAygaJD%0~?zg|Vlgcmods{Zuad7WuoXXM`%p1nIQ&F1dnbjeL zYq|QZudd{?H(p>vooCUUooxXQ?c1^}#Dkh8otnAft#tC~>)U7z_#T?u^V~)b^gdgP zCm!wiJ{XlwmHyYZ(b?jk9qa4d#M`^t5IkDUdc?Br=?a(2zmmnal>Bt=8m$2zJ?+ga z7B>ooX~p62KQ_qYMqbyaoT?glx4Dl3R-7D;F+ zq%9wsD;r2EokrJpXR<_N zF$x8fhK71vE*DbD$L}Mll*Z{ZA+os~*=&x}XF_B$82~O{xyooXHk&&$6X(>xFN}mE zOiWI3`_A;T5G7Y+`?gL-Mk8DrzJipJ>Z&R_w{BiA_hxt$DWSW&YegNlq>8ADLeH+9 zjEqJIN22t+*p0(+f2nOrlA6ZU^bGDwH@0mvbm0;+@%ZYuc(2EE@1nx(u0%HslA1=* zvd9}chEV`1X>4quYsYph%i{ddC9Yk+xjG=WZIjn^LVpgje%(5}9uI$n&XGuIcf}Wo zrp5rhyL$)(8WcDSuCn%e!Ejw|ZP%J!daLp`Uh$eRP4h7D)f(^2F(IW?i^bwM mz^f?&Qe|g0000 Date: Mon, 15 Feb 2016 10:58:16 +0100 Subject: [PATCH 5/7] Termine Karteireiter und Export im FAS zeigt nun auch den Titel der Stunde --- content/statistik/termine.xls.php | 3 ++- content/termine.xul.php | 5 +++++ include/lehrstunde.class.php | 5 ++++- rdf/termine.rdf.php | 5 +++-- 4 files changed, 14 insertions(+), 4 deletions(-) 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()"/> +