mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-20 00:12:15 +00:00
- LVPlan kann als Excel exportiert werden
- Stunden werden im Export (ICal, Caldav, etc) nicht mehr zu 4er Blöcken geblockt sondern auf die gesammte Länge
This commit is contained in:
@@ -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 class="dont-print">'.$p->t('lvplan/fehlerUndFeedback').' <A class="Item" href="mailto:'.MAIL_LVPLAN.'">'.$p->t('lvplan/lvKoordinationsstelle').'</A></P>';
|
||||
echo '</body></html>';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
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);
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -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 ' <strong>'.$p->t('global/kalender').': </strong>'.$this->crlf;
|
||||
echo $this->crlf;
|
||||
//echo ' '.$p->t('lvplan/uebersicht').': <A href="'.$kal_link_ws.'&format=html" target="_blank" title="HTML">'.$this->studiensemester_now->name.'</A> '.$this->crlf;
|
||||
echo $this->studiensemester_now->name.'<br>'.$this->crlf;
|
||||
echo ' <A href="'.$kal_link_ws.'&format=html" target="_blank" title="HTML"><IMG src="../../../skin/images/html.png" height="30" alt="HTML" border="0"></A>'.$this->crlf;
|
||||
echo ' <A href="'.$kal_link_ws.'&format=excel" title="excel"><IMG src="../../../skin/images/xls.png" height="30" alt="Excel" border="0"></A>'.$this->crlf;
|
||||
echo ' <A href="'.$kal_link_ws.'&format=csv" title="CSV"><IMG src="../../../skin/images/csv.png" height="30" alt="CSV" border="0"></A>'.$this->crlf;
|
||||
echo ' <A href="'.$kal_link_ws.'&format=csv&target=outlook" title="CSV-Outlook"><IMG src="../../../skin/images/outlook.png" height="30" alt="CSV-Outlook" border="0"></A>'.$this->crlf;
|
||||
echo ' <A href="'.$kal_link_ws.'&format=ical&version=1&target=ical" title="iCal Version 1.0"><IMG src="../../../skin/images/ical1.0.png" height="30" alt="vCal Version 1.0" border="0"></A>'.$this->crlf;
|
||||
@@ -508,6 +510,7 @@ class wochenplan extends basis_db
|
||||
//echo ' '.$p->t('lvplan/uebersicht').': <A href="'.$kal_link_ss.'&format=html" target="_blank" title="HTML">'.$this->studiensemester_next->name.'</A> '.$this->crlf;
|
||||
echo ' <span style="color:#999">'.$this->studiensemester_next->name.'</span><br>'.$this->crlf;
|
||||
echo ' <A href="'.$kal_link_ss.'&format=html" target="_blank" title="HTML"><IMG src="../../../skin/images/html_light.png" height="30" alt="HTML" border="0"></A>'.$this->crlf;
|
||||
echo ' <A href="'.$kal_link_ss.'&format=excel" title="excel"><IMG src="../../../skin/images/xls_light.png" height="30" alt="Excel" border="0"></A>'.$this->crlf;
|
||||
echo ' <A href="'.$kal_link_ss.'&format=csv" title="CSV"><IMG src="../../../skin/images/csv_light.png" height="30" alt="CSV" border="0"></A>'.$this->crlf;
|
||||
echo ' <A href="'.$kal_link_ss.'&format=csv&target=outlook" title="CSV-Outlook"><IMG src="../../../skin/images/outlook_light.png" height="30" alt="CSV-Outlook" border="0"></A>'.$this->crlf;
|
||||
echo ' <A href="'.$kal_link_ss.'&format=ical&version=1&target=ical" title="iCal Version 1.0"><IMG src="../../../skin/images/ical1.0_light.png" height="30" alt="iCal Version 1.0" border="0"></A>'.$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;$idx1<count($this->std_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,
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
Reference in New Issue
Block a user