type=$type; $this->conn=$conn; // Suchpfad einstellen if (!$result=pg_query($this->conn, 'SET search_path TO lehre;')) $this->errormsg=pg_last_error($this->conn); $this->link='stpl_week.php?type='.$type; $this->kal_link='stpl_kalender.php?type='.$type; $this->datum=mktime(); $this->init_stdplan(); } function init_stdplan() { //Stundenplan Array initialisieren (Anzahl auf 0 setzten) unset($this->std_plan); for ($i=1; $i<7; $i++) for ($j=0; $j<20; $j++) { $this->std_plan[$i][$j][0]->anz=0; $this->std_plan[$i][$j][0]->unr=0; } } /************************************************************************** * @brief Funktion load_data ladet alle Zusatzinformationen fuer die Darstellung * und ueberprueft die Daten * * @param datum Datum eines Tages in der angeforderten Woche * * @return gruppe_kurzbz * */ function load_data($type, $uid, $ort_kurzbz=NULL, $studiengang_kz=NULL, $sem=NULL, $ver=NULL, $grp=NULL, $gruppe=NULL) { /////////////////////////////////////////////////////////////////////// // Parameter Checken // Typ des Stundenplans if ($type=='student' || $type=='lektor' || $type=='verband' || $type=='einheit' || $type=='ort') $this->type=$type; else { $this->errormsg='Error: type is not defined!'; return false; } // Person if (($type=='student' || $type=='lektor') && ($uid==NULL || $uid=='')) { $this->errormsg='Fehler: uid der Person ist nicht gesetzt'; return false; } else $this->pers_uid=$uid; // Ort if ($type=='ort' && $ort_kurzbz==NULL) { $this->errormsg='Fehler: Kurzbezeichnung des Orts ist nicht gesetzt'; return false; } elseif ($type=='ort') $this->ort_kurzbz=$ort_kurzbz; else $this->ort_kurzbz=''; // Lehrverband if ($type=='verband' && $studiengang_kz==NULL) { $this->errormsg='Fehler: Kennzahl des Studiengangs ist nicht gesetzt'; return false; } elseif($type=='verband') { $this->stg_kz=$studiengang_kz; $this->sem=$sem; $this->ver=$ver; $this->grp=$grp; } // Einheit if ($type=='einheit' && $gruppe_kurzbz==NULL) { $this->errormsg='Fehler: Kurzbezeichnung der Einheit ist nicht gesetzt'; return false; } elseif ($type=='einheit') $this->gruppe_kurzbz=$gruppe_kurzbz; /////////////////////////////////////////////////////////////////////// // Zusaetzliche Daten ermitteln //personendaten if ($this->type=='student' || $this->type=='lektor') { $this->link.='&pers_uid='.$this->pers_uid; //Link erweitern if ($this->type=='student') $sql_query="SELECT uid, titelpre, nachname, vornamen, studiengang_kz, semester, verband, gruppe FROM vw_student WHERE uid='$this->pers_uid'"; else $sql_query="SELECT uid, titelpre, nachname, vornamen FROM campus.vw_mitarbeiter WHERE uid='$this->pers_uid'"; //echo $sql_query; if (!($result=pg_exec($this->conn, $sql_query))) { $this->errormsg=pg_last_error($this->conn); return false; } if (pg_num_rows($result)!=1) { $this->errormsg='Error: Cannot identify UID "'.$this->pers_uid.'"!'; return false; } $this->pers_uid=pg_result($result,0,'"uid"'); $this->pers_titelpre=pg_result($result,0,'"titelpre"'); $this->pers_nachname=pg_result($result,0,'"nachname"'); $this->pers_vornamen=pg_result($result,0,'"vornamen"'); if ($this->type=='student') { $this->stg_kz=pg_result($result,0,'"studiengang_kz"'); $this->sem=pg_result($result,0,'"semester"'); $this->ver=pg_result($result,0,'"verband"'); $this->grp=pg_result($result,0,'"gruppe"'); } } //ortdaten ermitteln if ($this->type=='ort') { $sql_query="SELECT bezeichnung, ort_kurzbz FROM public.tbl_ort WHERE ort_kurzbz='$this->ort_kurzbz'"; //echo $sql_query; if (!$result=pg_query($this->conn, $sql_query)) $this->errormsg=pg_last_error($this->conn); $this->ort_bezeichnung=pg_result($result,0,'"bezeichnung"'); $this->ort_kurzbz=pg_result($result,0,'"ort_kurzbz"'); $this->link.='&ort_kurzbz='.$this->ort_kurzbz; //Link erweitern } // Studiengangsdaten ermitteln if ($this->type=='student' || $this->type=='verband') { $sql_query="SELECT bezeichnung, kurzbz, kurzbzlang, typ FROM public.tbl_studiengang WHERE studiengang_kz=$this->stg_kz"; //echo $sql_query; if(!($result=pg_exec($this->conn, $sql_query))) die(pg_last_error($this->conn)); $this->stg_bez=pg_result($result,0,'"bezeichnung"'); $this->stg_kurzbz=pg_result($result,0,'"typ"').pg_result($result,0,'"kurzbz"'); $this->stg_kurzbzlang=pg_result($result,0,'"kurzbzlang"'); } // Stundentafel abfragen $sql_query="SELECT stunde, beginn, ende FROM lehre.tbl_stunde ORDER BY stunde"; if(!$this->stunde=pg_exec($this->conn, $sql_query)) die(pg_last_error($this->conn)); // Studiensemesterdaten ermitteln $sql_query="SELECT * FROM public.tbl_studiensemester WHERE now()conn, $sql_query)) die(pg_last_error($this->conn)); else { $row=pg_fetch_object($result); $this->studiensemester_now->name=$row->studiensemester_kurzbz; $this->studiensemester_now->start=mktime(0,0,0,substr($row->start,5,2),substr($row->start,8,2),substr($row->start,0,4)); $this->studiensemester_now->ende=mktime(0,0,0,substr($row->ende,5,2),substr($row->ende,8,2),substr($row->ende,0,4)); $row=pg_fetch_object($result); $this->studiensemester_next->name=$row->studiensemester_kurzbz; $this->studiensemester_next->start=mktime(0,0,0,substr($row->start,5,2),substr($row->start,8,2),substr($row->start,0,4)); $this->studiensemester_next->ende=mktime(0,0,0,substr($row->ende,5,2),substr($row->ende,8,2),substr($row->ende,0,4)); } return true; } /************************************************************************** * @brief Funktion load_week ladet die Stundenplandaten einer Woche * * @param datum Datum eines Tages in der angeforderten Woche * * @return true oder false * */ function load_week($datum, $stpl_view='stundenplan') { // Pruefung der Attribute if (!isset($this->type)) { $this->errormsg='$type is not set in stundenplan.load_week!'; return false; } //Kalenderdaten setzen $this->datum=montag($datum); $this->datum_begin=$this->datum; $this->datum_end=jump_week($this->datum_begin, 1); $this->datum_nextweek=$this->datum_end; $this->datum_prevweek=jump_week($this->datum_begin, -1); $this->datum_next4week=jump_week($this->datum_begin, 4); $this->datum_prev4week=jump_week($this->datum_begin, -4); // Formatieren fuer Datenbankabfragen $this->datum_begin=date("Y-m-d",$this->datum_begin); $this->datum_end=date("Y-m-d",$this->datum_end); $this->kalenderwoche=kalenderwoche($this->datum); // Stundenplandaten ermittlen $this->wochenplan=new lehrstunde($this->conn); $anz=$this->wochenplan->load_lehrstunden($this->type,$this->datum_begin,$this->datum_end,$this->pers_uid,$this->ort_kurzbz,$this->stg_kz,$this->sem,$this->ver,$this->grp,$this->gruppe_kurzbz, $stpl_view); if ($anz<0) { $this->errormsg=$this->wochenplan->errormsg; return false; } // Stundenplandaten aufbereiten for($i=0;$i<$anz;$i++) { $idx=0; $mtag=substr($this->wochenplan->lehrstunden[$i]->datum, 8,2); $month=substr($this->wochenplan->lehrstunden[$i]->datum, 5,2); $jahr=substr($this->wochenplan->lehrstunden[$i]->datum, 0,4); $tag=date("w",mktime(12,0,0,$month,$mtag,$jahr)); //echo $tag.':'.$this->wochenplan->lehrstunden[$i]->datum.'
'; $stunde=$this->wochenplan->lehrstunden[$i]->stunde; // naechste freie Stelle im Array suchen while (isset($this->std_plan[$tag][$stunde][$idx]->lektor_uid)) $idx++; //echo $idx.'
'; $this->std_plan[$tag][$stunde][$idx]->unr=$this->wochenplan->lehrstunden[$i]->unr; if ($this->wochenplan->lehrstunden[$idx]->reservierung) $this->std_plan[$tag][$stunde][$idx]->lehrfach=$this->wochenplan->lehrstunden[$i]->titel; else { $this->std_plan[$tag][$stunde][$idx]->lehrfach=$this->wochenplan->lehrstunden[$i]->lehrfach; $this->std_plan[$tag][$stunde][$idx]->lehrform=$this->wochenplan->lehrstunden[$i]->lehrform; $this->std_plan[$tag][$stunde][$idx]->lehrfach_nr=$this->wochenplan->lehrstunden[$i]->lehrfach_nr; $this->std_plan[$tag][$stunde][$idx]->farbe=$this->wochenplan->lehrstunden[$i]->farbe; //$this->std_plan[$tag][$stunde][$idx]->titel=$this->wochenplan->lehrstunden[$i]->titel; } $this->std_plan[$tag][$stunde][$idx]->titel=$this->wochenplan->lehrstunden[$i]->titel; $this->std_plan[$tag][$stunde][$idx]->stundenplan_id=$this->wochenplan->lehrstunden[$i]->stundenplan_id; $this->std_plan[$tag][$stunde][$idx]->lektor_uid=$this->wochenplan->lehrstunden[$i]->lektor_uid; $this->std_plan[$tag][$stunde][$idx]->lektor=$this->wochenplan->lehrstunden[$i]->lektor_kurzbz; $this->std_plan[$tag][$stunde][$idx]->ort=$this->wochenplan->lehrstunden[$i]->ort_kurzbz; $this->std_plan[$tag][$stunde][$idx]->stg=$this->wochenplan->lehrstunden[$i]->studiengang; $this->std_plan[$tag][$stunde][$idx]->stg_kz=$this->wochenplan->lehrstunden[$i]->studiengang_kz; $this->std_plan[$tag][$stunde][$idx]->sem=$this->wochenplan->lehrstunden[$i]->sem; $this->std_plan[$tag][$stunde][$idx]->ver=$this->wochenplan->lehrstunden[$i]->ver; $this->std_plan[$tag][$stunde][$idx]->grp=$this->wochenplan->lehrstunden[$i]->grp; $this->std_plan[$tag][$stunde][$idx]->gruppe_kurzbz=$this->wochenplan->lehrstunden[$i]->gruppe_kurzbz; $this->std_plan[$tag][$stunde][$idx]->anmerkung=$this->wochenplan->lehrstunden[$i]->anmerkung; $this->std_plan[$tag][$stunde][$idx]->updateamum=$this->wochenplan->lehrstunden[$i]->updateamum; $this->std_plan[$tag][$stunde][$idx]->updatevon=$this->wochenplan->lehrstunden[$i]->updatevon; //echo $tag.' '.$stunde.' '.$this->std_plan[$tag][$stunde][$idx]->lektor_uid.'
'; } unset($this->wochenplan); return true; } function draw_header() { echo ''; echo ''; echo ''; // Kalenderjump echo ''; echo ''; echo '

'; if ($this->type=='student' || $this->type=='lektor') echo 'Person: '.$this->pers_titelpre.' '.$this->pers_vornamen.' '.$this->pers_nachname.' - '.$this->pers_uid.'
'; if ($this->type=='student' || $this->type=='verband') { echo 'Studiengang: '.$this->stg_kurzbzlang.' - '.$this->stg_bez.'
'; echo 'Semester: '.$this->sem.'
'; if ($this->ver!='0' && $this->ver!='' && $this->ver!=null) echo 'Verband: '.$this->ver.'
'; if ($this->grp!='0' && $this->grp!='' && $this->grp!=null) echo 'Gruppe: '.$this->grp.'
'; $this->link.='&stg_kz='.$this->stg_kz.'&sem='.$this->sem.'&ver='.$this->ver.'&grp='.$this->grp; } if ($this->type=='ort') echo 'Ort: '.$this->ort_kurzbz.' - '.$this->ort_bezeichnung.'
'; echo '

'; //Kalender $this->kal_link.='&pers_uid='.$this->pers_uid.'&ort_kurzbz='.$this->ort_kurzbz.'&stg_kz='.$this->stg_kz.'&sem='.$this->sem.'&ver='.$this->ver.'&grp='.$this->grp.'&gruppe_kurzbz='.$this->gruppe_kurzbz; //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 '       Kalender:    '; echo ''.$this->studiensemester_now->name.' '; echo ' HTML'; echo ' CSV'; echo ' CSV-Outlook'; echo ' vCal Version 1.0'; echo ' vCal Version 2.0'; echo '    '.$this->studiensemester_next->name.' '; echo ' HTML'; echo ' CSV'; echo ' CSV-Outlook'; echo ' iCal Version 1.0'; echo ' iCal Version 2.0'; echo '
'; jahreskalenderjump($this->link); echo '

'; // Jump Wochenweise if ($this->type=='verband') $link_parameter='&stg_kz='.$this->stg_kz.'&sem='.$this->sem.'&ver='.$this->ver.'&grp='.$this->grp; if ($this->type=='student' || $this->type=='lektor') $link_parameter='&pers_uid='.$this->pers_uid; // Ort Jump if ($this->type=='ort') { // Orte abfragen $sql_query="SELECT * FROM public.tbl_ort WHERE aktiv AND lehre ORDER BY ort_kurzbz"; if(!$result_ort=pg_exec($this->conn, $sql_query)) die(pg_last_error($this->conn)); $num_rows_ort=pg_numrows($result_ort); // vorigen Ort bestimmen for ($i=0;$i<($num_rows_ort-1);$i++) if (pg_result($result_ort,$i+1,'"ort_kurzbz"')==$this->ort_kurzbz) $prev_ort=pg_fetch_object($result_ort,$i); // naechsten Ort bestimmen for ($i=1;$i<$num_rows_ort;$i++) if (pg_result($result_ort,$i-1,'"ort_kurzbz"')==$this->ort_kurzbz) $next_ort=pg_fetch_object($result_ort,$i); // Ort Jump echo '

'; //$datum=mktime($this->datum[hours], $this->datum[minutes], $this->datum[seconds], $this->datum[mon], $this->datum[mday], $this->datum[year]); if (isset($prev_ort)) { echo ''; } echo "'; if (isset($next_ort)) { echo ''; } echo '

'; $link_parameter='&ort_kurzbz='.$this->ort_kurzbz; } echo '

'; // 4 Wochen zurueck echo ''; // 1 Woche zurueck echo ' KW '.$this->kalenderwoche; // 1 Woche nach vor echo ''; // 4 Wochen nach vor echo ''; echo '

'; return true; } /************************************************************************** * Zeichnen der Stundenplanwoche in HTML */ function draw_week($user_uid='pam') { // Stundentafel abfragen $sql_query="SELECT stunde, beginn, ende FROM lehre.tbl_stunde ORDER BY stunde"; if(!$result_stunde=pg_exec($this->conn, $sql_query)) die(pg_last_error($this->conn)); $num_rows_stunde=pg_numrows($result_stunde); // Formularbeginn wenn Lektor if ($this->user=='lektor' && $this->type=='ort') echo ''; //Tabelle zeichnen echo ''; // Kopfzeile darstellen echo ''; echo ''; for ($i=0;$i<$num_rows_stunde; $i++) { $beginn=pg_result($result_stunde,$i,'"beginn"'); $beginn=substr($beginn,0,5); $ende=pg_result($result_stunde,$i,'"ende"'); $ende=substr($ende,0,5); $stunde=pg_result($result_stunde,$i,'"stunde"'); echo ''; } echo ''; // Von Montag bis Samstag $datum_now=mktime(); $datum_res_lektor_start=jump_day($datum_now,RES_TAGE_LEKTOR_MIN); $datum_res_lektor_ende=jump_day($datum_now,RES_TAGE_LEKTOR_MAX); if (!date("w",$this->datum)) $this->datum=jump_day($this->datum,1); $datum=$this->datum; for ($i=1; $i<7; $i++) { echo ''; //.strftime("%A %d %B %Y",$this->datum) for ($k=0; $k<$num_rows_stunde; $k++) { $j=pg_result($result_stunde,$k,'"stunde"'); // Stunde aufbereiten if (isset($this->std_plan[$i][$j][0]->lehrfach)) { // Anzahl der Felder // Daten aufbereiten $kollision=-1; unset($unr); unset($lektor); unset($lehrverband); unset($lehrfach); foreach ($this->std_plan[$i][$j] as $lehrstunde) { $unr[]=$lehrstunde->unr; // Lektoren $lektor[]=$lehrstunde->lektor; // Lehrverband $lvb=$lehrstunde->stg.'-'.$lehrstunde->sem; if ($lehrstunde->ver!=null && $lehrstunde->ver!='0' && $lehrstunde->ver!='') { $lvb.=$lehrstunde->ver; if ($lehrstunde->grp!=null && $lehrstunde->grp!='0' && $lehrstunde->grp!='') $lvb.=$lehrstunde->grp; } if (count($lehrstunde->gruppe_kurzbz)>0) $lvb=$lehrstunde->gruppe_kurzbz; $lehrverband[]=$lvb; // Lehrfach $lf=$lehrstunde->lehrfach; if (isset($lehrstunde->lehrform)) $lf.='-'.$lehrstunde->lehrform; $lehrfach[]=$lf; $titel=$lehrstunde->titel; $anmerkung=$lehrstunde->anmerkung; } // Unterrichtsnummer (Kollision?) $unr=array_unique($unr); $kollision+=count($unr); // Lektoren if ($this->type!='lektor') { $lektor=array_unique($lektor); sort($lektor); $lkt=''; foreach ($lektor as $l) $lkt.=$l.'
'; } else $lkt=$lektor[0].'
'; //echo $lkt; // Lehrverband if ($this->type!='verband') { $lehrverband=array_unique($lehrverband); sort($lehrverband); $lvb=''; foreach ($lehrverband as $l) $lvb.=$l.'
'; } else $lvb=$lehrverband[0].'
'; // Lehrfach if ($this->type=='verband') { $lehrfach=array_unique($lehrfach); sort($lehrfach); $lf=''; foreach ($lehrfach as $l) $lf.=$l.'
'; } else $lf=$lehrfach[0].'
'; //$lkt=$this->std_plan[$i][$j][0]->lektor.'
'; //$lvb=$this->std_plan[$i][$j][0]->stg.'-'.$this->std_plan[$i][$j][0]->sem.$this->std_plan[$i][$j][0]->ver.$this->std_plan[$i][$j][0]->grp.'
'; // Blinken oder nicht ? if ($kollision) { $blink_ein=''.$kollision; $blink_aus=''; } else { $blink_ein=''; $blink_aus=''; } // Ausgabe einer Stunde im Raster (HTML) echo ''; } else { echo ''; } } echo ""; $datum=jump_day($datum, 1); } echo '
Stunde 
Beginn 
Ende 
'.$stunde.'
 '.$beginn .' 
 '.$ende.' 
'.date("l",$datum).'
'.date("j. M y",$datum).'
std_plan[$i][$j][0]->farbe)) echo 'style="background-color: #'.$this->std_plan[$i][$j][0]->farbe.';"'; echo '>'.$blink_ein.''.$blink_aus.'
'; if ($this->user=='lektor' && $this->type=='ort' && (($datum>$datum_res_lektor_start && $datum<=$datum_res_lektor_ende) || $user_uid=='wagner')) echo ''; //&& $datum>=$datum_now echo '
'; if ($this->user=='lektor' && $this->type=='ort' && (($datum>=$datum_now && $datum>$datum_res_lektor_start && $datum<=$datum_res_lektor_ende) || $user_uid=='wagner' )) { echo '
Titel: '; echo ' Beschreibung: '; echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; echo '
'; } } /************************************************************************** * @brief Funktion draw_week_xul Stundenplan im XUL-Format * * @param datum Datum eines Tages in der angeforderten Woche * * @return true oder false * */ function draw_week_xul($semesterplan,$uid, $wunsch=null) { echo $wunsch; global $cfgStdBgcolor; $count=0; $berechtigung=new berechtigung($this->conn); $berechtigung->getBerechtigungen($uid); // Stundentafel abfragen $sql_query="SELECT * FROM lehre.tbl_stunde ORDER BY stunde"; if(!$result_stunde=pg_query($this->conn, $sql_query)) $this->errormsg=pg_last_error($this->conn); $num_rows_stunde=pg_numrows($result_stunde); // Kontext Menue echo ' '; //Tabelle zeichnen echo ''; echo ''; echo ' '; for ($i=0;$i<$num_rows_stunde; $i++) echo ' '; echo ''; echo ''; // Kopfzeile darstellen echo ''.$this->crlf; echo ' '.$this->crlf; //BeginnEnde for ($i=0;$i<$num_rows_stunde; $i++) { $row=pg_fetch_object($result_stunde,$i); $beginn=substr($row->beginn,0,5); $ende=substr($row->ende,0,5); $stunde=$row->stunde; echo ' '.$this->crlf; } echo ''; // Von Montag bis Samstag if (!date("w",$this->datum)) $this->datum=jump_day($this->datum,1); $datum=$this->datum; // Ferien holen $ferien=new ferien($this->conn); if ($this->type=='verband') $ferien->getAll($this->stg_kz); else $ferien->getAll(0); for ($i=1; $i<7; $i++) { $isferien=$ferien->isferien($datum); echo ''; echo ''.date("l",$datum).''.date("j.m y",$datum).''; echo ''; for ($k=0; $k<$num_rows_stunde; $k++) { $j=pg_result($result_stunde,$k,'"stunde"'); if (isset($wunsch[$i][$j])) $index=$wunsch[$i][$j]; else $index=1; if ($index=='') $index=1; $bgcolor=$cfgStdBgcolor[$index+3]; if ($isferien) $bgcolor='#FFFF55'; echo ''; if (isset($this->std_plan[$i][$j][0]->lehrfach)) { // Daten aufbereiten $kollision=-1; unset($a_unr); foreach ($this->std_plan[$i][$j] as $lehrstunde) { $a_unr[]=$lehrstunde->unr; $a_lvb[$lehrstunde->unr][]=$lehrstunde->sem.$lehrstunde->ver.$lehrstunde->grp; } // Unterrichtsnummer (Kollision?) $a_unr=array_unique($a_unr); $kollision+=count($a_unr); // Ist es bei LVB-Ansicht wirklich eine Kollision? if ($kollision>0 && $this->type=='verband') { $kollision=0; $a=0; foreach ($a_unr as $unr) { array_unique($a_lvb[$unr]); $lvb[$a++]=$a_lvb[$unr]; } for ($a=0;$astd_plan[$i][$j] as $lehrstunde) if ($lehrstunde->unr==$unr) { // Lektoren $lektor[]=$lehrstunde->lektor; // Lehrverband $lvb=$lehrstunde->stg.'-'.$lehrstunde->sem; if ($lehrstunde->ver!=null && $lehrstunde->ver!='0' && $lehrstunde->ver!='') { $lvb.=$lehrstunde->ver; if ($lehrstunde->grp!=null && $lehrstunde->grp!='0' && $lehrstunde->grp!='') $lvb.=$lehrstunde->grp; } if (count($lehrstunde->gruppe_kurzbz)>0) $lvb=$lehrstunde->gruppe_kurzbz; $lehrverband[]=$lvb; // Lehrfach $lf=$lehrstunde->lehrfach; if (isset($lehrstunde->lehrform)) $lf.='-'.$lehrstunde->lehrform; $lehrfach[]=$lf; $ort[]=$lehrstunde->ort; $stg_kz=$lehrstunde->stg_kz; $updateamum[]=substr($lehrstunde->updateamum,0,16); $updatevon[]=$lehrstunde->updatevon; $paramList.='&stundenplan_id'.$z++.'='.$lehrstunde->stundenplan_id; $farbe=$lehrstunde->farbe; $titel=$lehrstunde->titel; $anmerkung=$lehrstunde->anmerkung; } // Lektoren //if ($this->type!='lektor') $lektor=array_unique($lektor); sort($lektor); $lkt=''; foreach ($lektor as $l) $lkt.=$l.''; // Lehrverband //if ($this->type!='verband') $lehrverband=array_unique($lehrverband); sort($lehrverband); $lvb=''; foreach ($lehrverband as $l) $lvb.=$l.''; // Lehrfach //if ($this->type=='verband') $lehrfach=array_unique($lehrfach); sort($lehrfach); $lf=''; foreach ($lehrfach as $l) $lf.=$l.''; // Ort //if ($this->type=='verband') $ort=array_unique($ort); sort($ort); $orte=''; foreach ($ort as $o) $orte.=$o.''; // Update Von $updatevon=array_unique($updatevon); sort($updatevon); $updatevonam='Ge??ndert von '; foreach ($updatevon as $u) $updatevonam.=$u.', '; // Update Am $updateamum=array_unique($updateamum); sort($updateamum); $updatevonam.='am '; foreach ($updateamum as $u) $updatevonam.=$u.' '; //$updatevonam='Ge??ndert von '.$updatevon.', am '.$updateamum; // Blinken oder nicht ? if ($kollision) { $blink_ein='';// .$kollision; $blink_aus=''; } else { $blink_ein=''; $blink_aus=''; } // Ausgabe echo ''; } } if (isset($this->std_plan[$i][$j][0]->frei_orte)) foreach ($this->std_plan[$i][$j][0]->frei_orte as $f_ort) { echo ''.$this->crlf; } echo ""; $datum=jump_day($datum, 1); } // Fuszzeile darstellen if (!$semesterplan) { echo ''.$this->crlf; echo ' '.$this->crlf; //BeginnEnde for ($i=0;$i<$num_rows_stunde; $i++) { $row=pg_fetch_object($result_stunde,$i); $beginn=substr($row->beginn,0,5); $ende=substr($row->ende,0,5); $stunde=$row->stunde; echo ' '.$this->crlf; } echo ''; } echo ''; echo ''; } /************************************************************************** * @brief Funktion load_stpl_search sucht Vorschlag fuer Stundenverschiebung * * @param datum der Aktuellen Woche * @param stpl_id Array der stundenplan_id's * @param db_stpl_table Name der DB-Tabelle * * @return true oder false * */ function load_stpl_search($datum,$stpl_id,$db_stpl_table, $block=1) { // Name der View $stpl_view=VIEW_BEGIN.$db_stpl_table; $stpl_view_id=$db_stpl_table.TABLE_ID; //Kalenderdaten setzen $this->datum=montag($datum); $this->datum_begin=$this->datum; $this->datum_end=jump_week($this->datum_begin, 1); // Formatieren fuer Datenbankabfragen $this->datum_begin=date("Y-m-d",$this->datum_begin); $this->datum_end=date("Y-m-d",$this->datum_end); // Stundentafel abfragen $sql_query='SELECT min(stunde),max(stunde)FROM lehre.tbl_stunde'; if(!$result_stunde=pg_exec($this->conn, $sql_query)) die(pg_last_error($this->conn)); $min_stunde=pg_result($result_stunde,0,'min'); $max_stunde=pg_result($result_stunde,0,'max'); // Stundenplaneintraege holen $sql_query="SELECT * FROM $stpl_view WHERE"; $stplids=''; foreach ($stpl_id as $id) $stplids.=" OR $stpl_view_id=$id"; $stplids=substr($stplids,3); $sql_query.=$stplids; //echo $sql_query; if(!$result_stpl=pg_exec($this->conn, $sql_query)) die(pg_last_error($this->conn)); $num_rows_stpl=pg_numrows($result_stpl); // Daten aufbereiten for ($i=0;$i<$num_rows_stpl;$i++) { $row=pg_fetch_object($result_stpl,$i); //$block=$row->stundenblockung; //$raumtyp[$i]=$row->raumtyp; //$raumtypalt[$i]=$row->raumtypalternativ; if ($row->gruppe_kurzbz!=null) $einheit[]=$row->gruppe_kurzbz; else $einheit[]=''; $lehrverband[$i]->stg_kz=$row->studiengang_kz; $lehrverband[$i]->sem=$row->semester; $lehrverband[$i]->ver=$row->verband; $lehrverband[$i]->grp=$row->gruppe; $lektor[$i]=$row->uid; $unr=$row->unr; } // Raumtypen //$raumtyp=array_unique($raumtyp); //$rtype=''; //foreach ($raumtyp as $r) // $rtype.=" OR raumtyp_kurzbz='$r'"; //$raumtypalt=array_unique($raumtypalt); //foreach ($raumtypalt as $r) // $rtype.=" OR raumtyp_kurzbz='$r'"; //$rtype=substr($rtype,3); //Lektor $lektor=array_unique($lektor); $lkt=''; foreach ($lektor as $l) $lkt.=" OR uid='$l'"; $lkt=substr($lkt,3); // Einheiten $einheit=array_unique($einheit); $einheiten=''; foreach ($einheit as $e) if ($e!='') $einheiten.=" OR gruppe_kurzbz='$e'"; //$einheiten=substr($einheiten,3); //Lehrverband //$lehrverband=array_unique($lehrverband); $lvb=''; foreach ($lehrverband as $l) { $lvb.=' OR (studiengang_kz='.$l->stg_kz.' AND semester='.$l->sem; if ($l->ver!='' && $l->ver!=' ' && $l->ver!=null) { $lvb.=" AND (verband='$l->ver' OR verband IS NULL OR verband='')"; if ($l->grp!='' && $l->grp!=' ' && $l->grp!=null) $lvb.=" AND (gruppe='$l->grp' OR gruppe IS NULL OR gruppe='')"; } //if ($einheiten=='') // $lvb.=' AND gruppe_kurzbz IS NULL'; $lvb.=')'; } $lvb=substr($lvb,3); // Raeume die in Frage kommen, aufgrund der Raumtypen $sql_query="SELECT DISTINCT ort_kurzbz FROM tbl_ort WHERE aktiv AND ort_kurzbz NOT LIKE '\\\\_%' ORDER BY ort_kurzbz"; // NATURAL JOIN tbl_ortraumtyp WHERE $rtype hierarchie //echo $sql_query; if(!$result=pg_exec($this->conn, $sql_query)) die(pg_last_error($this->conn)); $num_orte=pg_numrows($result); for ($i=0;$i<$num_orte;$i++) $orte[]=pg_fetch_result($result,$i,"ort_kurzbz"); // Raster vorbereiten for ($t=1;$t<7;$t++) for ($s=$min_stunde;$s<=$max_stunde;$s++) { $raster[$t][$s]->ort=array(); $raster[$t][$s]->kollision=false; } // Stundenplanabfrage bauen (Wo ist Kollision?) $sql_query="SELECT DISTINCT datum, stunde FROM $stpl_view WHERE datum>='$this->datum_begin' AND datum<'$this->datum_end' AND ($lkt $einheiten OR ($lvb) ) AND unr!=$unr"; //AND unr!=$unr" //echo $sql_query; if(!$result_kollision=pg_exec($this->conn, $sql_query)) die(pg_last_error($this->conn)); $num_k=pg_numrows($result_kollision); for ($i=0;$i<$num_k;$i++) { $row=pg_fetch_object($result_kollision,$i); $mtag=substr($row->datum, 8,2); $month=substr($row->datum, 5,2); $jahr=substr($row->datum, 0,4); $tag=date("w",mktime(12,0,0,$month,$mtag,$jahr)); $raster[$tag][$row->stunde]->kollision=true; } // Stundenplanabfrage bauen (Wo ist besetzt?) $sql_query="SELECT DISTINCT datum, stunde, ort_kurzbz FROM $stpl_view WHERE datum>='$this->datum_begin' AND datum<'$this->datum_end' AND unr!=$unr"; //echo $sql_query; NATURAL JOIN tbl_ortraumtyp AND ($rtype) " if(!$result_besetzt=pg_exec($this->conn, $sql_query)) die(pg_last_error($this->conn)); $num_b=pg_numrows($result_besetzt); for ($i=0;$i<$num_b;$i++) { $row=pg_fetch_object($result_besetzt,$i); $mtag=substr($row->datum, 8,2); $month=substr($row->datum, 5,2); $jahr=substr($row->datum, 0,4); $tag=date("w",mktime(12,0,0,$month,$mtag,$jahr)); $raster[$tag][$row->stunde]->ort[]=$row->ort_kurzbz; } // freie Plaetze in den Stundenplan eintragen. for ($t=1;$t<7;$t++) for ($s=1;$s<=$max_stunde;$s++) if (!$raster[$t][$s]->kollision && ($s+$block)<=($max_stunde+1)) { if (count($raster[$t][$s]->ort)>0) $this->std_plan[$t][$s][0]->frei_orte=array_diff($orte,$raster[$t][$s]->ort); else $this->std_plan[$t][$s][0]->frei_orte=$orte; for ($b=1;$b<$block && ($s+$block)<=($max_stunde+1);$b++) $this->std_plan[$t][$s][0]->frei_orte=array_diff($this->std_plan[$t][$s][0]->frei_orte,$raster[$t][$s+$b]->ort); } return true; } /************************************************************************** * @brief Funktion load_lva_search sucht Vorschlag fuer LVAs * * @param datum der Aktuellen Woche * @param lva_id Array der lvaIDs * @param db_stpl_table Name der DB-Tabelle * * @return true oder false * */ function load_lva_search($datum,$lva_id,$db_stpl_table,$type) { // Name der View $stpl_view=VIEW_BEGIN.$db_stpl_table; $lva_stpl_view=VIEW_BEGIN.'lva_'.$db_stpl_table; $stpl_table=TABLE_BEGIN.$db_stpl_table; //Kalenderdaten setzen $this->datum=montag($datum); $this->datum_begin=$this->datum; $this->datum_end=jump_week($this->datum_begin, 1); // Formatieren fuer Datenbankabfragen $this->datum_begin=date("Y-m-d",$this->datum_begin); $this->datum_end=date("Y-m-d",$this->datum_end); // Stundentafel abfragen $sql_query='SELECT min(stunde),max(stunde) FROM lehre.tbl_stunde'; if(!$result_stunde=pg_exec($this->conn, $sql_query)) die(pg_last_error($this->conn)); $min_stunde=pg_result($result_stunde,0,'min'); $max_stunde=pg_result($result_stunde,0,'max'); // LVAs holen $sql_query='SELECT *, (semesterstunden-verplant::smallint) AS offenestunden FROM '.$lva_stpl_view.' WHERE'; $lvas=''; foreach ($lva_id as $id) $lvas.=' OR lehrveranstaltung_id='.$id; $lvas=substr($lvas,3); $sql_query.=$lvas; //$this->errormsg.=$sql_query; //return false; if(!$result_lva=pg_exec($this->conn, $sql_query)) die(pg_last_error($this->conn)); $num_rows_lva=pg_numrows($result_lva); // Arrays setzen //$wochenrythmus=array(); $verplant=array(); $block=array(); $semesterstunden=array(); $offenestunden=array(); // Daten aufbereiten for ($i=0;$i<$num_rows_lva;$i++) { $row=pg_fetch_object($result_lva,$i); $raumtyp[$i]=$row->raumtyp; $raumtypalt[$i]=$row->raumtypalternativ; if ($row->gruppe_kurzbz!=null && $row->gruppe_kurzbz!='') $einheit[$i]=$row->gruppe_kurzbz; $lehrverband[$i]->stg_kz=$row->studiengang_kz; $lehrverband[$i]->sem=$row->semester; $lehrverband[$i]->ver=$row->verband; $lehrverband[$i]->grp=$row->gruppe; $lektor[$i]=$row->lektor_uid; $verplant[$i]=$row->verplant; $offenestunden[]=$row->offenestunden; $unr=$row->unr; $block[$i]=$row->stundenblockung; $wochenrythmus[$i]=$row->wochenrythmus; $semesterstunden[$i]=(integer)$row->semesterstunden; //$this->errormsg.='SS:'.$semesterstunden[$i]; } /*// verplante Stunden eindeutig? $verpl=$verplant[0]; $verplant=array_unique($verplant); if (count($verplant)==1) $verplant=$verpl; //verplant[0]; else { $this->errormsg.='Verplante Stunden sind nicht eindeutig!'; return false; } //$this->errormsg.='Verplant:'.$verplant; // Semesterstunden eindeutig? $semstd=$semesterstunden[0]; $semesterstunden=array_unique($semesterstunden); //$this->errormsg.='SS:'.$semesterstunden[0]; if (count($semesterstunden)==1) $semesterstunden=$semstd;//semesterstunden[0]; else { $this->errormsg.='Semesterstunden sind nicht eindeutig!'; return false; } //$this->errormsg.='SS:'.$semesterstunden;*/ // Blockung eindeutig? $blck=$block[0]; $block=array_unique($block); if (count($block)==1) $block=$blck; //block[0]; else { $this->errormsg.='Blockung ist nicht eindeutig!'; return false; } //$this->errormsg.='Block:'.$block; // Offene Stunden eindeutig? $os=$offenestunden[0]; $offenestunden=array_unique($offenestunden); if ($type=='lva_single_search') $offenestunden=$block; elseif (count($offenestunden)==1) $offenestunden=$os; else { $this->errormsg.='Offene Stunden sind nicht eindeutig!'; return false; } // Wochenrythmus eindeutig? $wr=$wochenrythmus[0]; $wochenrythmus=array_unique($wochenrythmus); if (count($wochenrythmus)==1) $wr=$wr; else { $this->errormsg.='Wochenrythmus ist nicht eindeutig!'; return false; } // Raumtypen $raumtyp=array_unique($raumtyp); $rtype=''; foreach ($raumtyp as $r) $rtype.=" OR raumtyp_kurzbz='$r'"; $raumtypalt=array_unique($raumtypalt); foreach ($raumtypalt as $r) $rtype.=" OR raumtyp_kurzbz='$r'"; $rtype=substr($rtype,3); //Lektor $lektor=array_unique($lektor); $lkt=''; foreach ($lektor as $l) $lkt.=" OR uid='$l'"; $lkt=substr($lkt,3); //Dummy Lektor kollidiert nicht $lkt='(('.$lkt.") AND uid!='_DummyLektor')"; // Einheiten $einheit=array_unique($einheit); $einheiten=''; foreach ($einheit as $e) $einheiten.=" OR gruppe_kurzbz='$e'"; //$einheiten=substr($einheiten,3); //Lehrverband //$lehrverband=array_unique($lehrverband); $lvb=''; foreach ($lehrverband as $l) { $lvb.=' OR (studiengang_kz='.$l->stg_kz.' AND semester='.$l->sem; if ($l->ver!='' && $l->ver!=' ' && $l->ver!=null) { $lvb.=" AND (verband='$l->ver' OR verband IS NULL OR verband='' OR verband=' ')"; if ($l->grp!='' && $l->grp!=' ' && $l->grp!=null) $lvb.=" AND (gruppe='$l->grp' OR gruppe IS NULL OR gruppe='' OR gruppe=' ')"; } if ($einheiten=='') $lvb.=' AND gruppe_kurzbz IS NULL'; $lvb.=')'; } $lvb=substr($lvb,3); // Raeume die in Frage kommen aufgrund der Raumtypen $sql_query="SELECT DISTINCT ort_kurzbz, hierarchie FROM tbl_ort NATURAL JOIN tbl_ortraumtyp WHERE ($rtype) AND aktiv AND ort_kurzbz NOT LIKE '\\\\_%' ORDER BY hierarchie,ort_kurzbz"; // //echo $sql_query; if(!$result=pg_exec($this->conn, $sql_query)) die(pg_last_error($this->conn)); $num_orte=pg_numrows($result); for ($i=0;$i<$num_orte;$i++) $orte[]=pg_fetch_result($result,$i,"ort_kurzbz"); // Suche nach freien Orten. Bei 'lva_multi_search' wird die Schleife (do) aktiv $count=0; $rest=$offenestunden; if ($rest<=0 && $type=='lva_multi_search') { $this->errormsg.='Es sind bereits alle Stunden verplant!'; return false; } $datum=$this->datum; $datum_begin=$this->datum_begin; $datum_end=$this->datum_end; do { // Raster vorbereiten for ($t=1;$t<7;$t++) for ($s=$min_stunde;$s<=$max_stunde;$s++) { unset($raster[$t][$s]); $raster[$t][$s]->ort=array(); $raster[$t][$s]->kollision=false; } // Stundenplanabfrage bauen (Wo ist Kollision?) $sql_query="SELECT DISTINCT datum, stunde FROM $stpl_table WHERE datum>='$datum_begin' AND datum<'$datum_end' AND ($lkt $einheiten OR ($lvb) ) AND unr!=$unr"; //$this->errormsg.=htmlspecialchars($sql_query); //return false; if(!$result_kollision=pg_exec($this->conn, $sql_query)) { $this->errormsg=pg_last_error($this->conn); return false; } $num_k=pg_numrows($result_kollision); // Kollisionen ins Raster eintragen for ($i=0;$i<$num_k;$i++) { $row=pg_fetch_object($result_kollision,$i); $mtag=substr($row->datum, 8,2); $month=substr($row->datum, 5,2); $jahr=substr($row->datum, 0,4); $tag=date("w",mktime(12,0,0,$month,$mtag,$jahr)); $raster[$tag][$row->stunde]->kollision=true; } // Stundenplanabfrage bauen (Wo ist besetzt?) $sql_query="SELECT DISTINCT datum, stunde, ort_kurzbz FROM $stpl_view NATURAL JOIN tbl_ortraumtyp WHERE datum>='$datum_begin' AND datum<'$datum_end' AND ($rtype) AND unr!=$unr"; // //echo $sql_query; if(!$result_besetzt=pg_query($this->conn, $sql_query)) { $this->errormsg=pg_last_error($this->conn); return false; } $num_b=pg_numrows($result_besetzt); // Besetzte Orte ins Raster eintragen for ($i=0;$i<$num_b;$i++) { $row=pg_fetch_object($result_besetzt,$i); $mtag=substr($row->datum, 8,2); $month=substr($row->datum, 5,2); $jahr=substr($row->datum, 0,4); $tag=date("w",mktime(12,0,0,$month,$mtag,$jahr)); $raster[$tag][$row->stunde]->ort[]=$row->ort_kurzbz; //if ($row->ort_kurzbz=='EDV6.10' && $tag==2 && $row->stunde==8) // $this->errormsg.=htmlspecialchars($row->ort_kurzbz).'/'.$mtag.'/'.$month; } // freie Plaetze in den Stundenplan eintragen. for ($t=1;$t<7;$t++) for ($s=1;$s<=$max_stunde;$s++) if (!$raster[$t][$s]->kollision && ($s+$block)<=($max_stunde+1)) { // Besetzte Orte von den freien abziehen if (count($raster[$t][$s]->ort)>0 && $count==0) $this->std_plan[$t][$s][0]->frei_orte=array_diff($orte,$raster[$t][$s]->ort); elseif ($count==0) $this->std_plan[$t][$s][0]->frei_orte=$orte; elseif (count($raster[$t][$s]->ort)>0) $this->std_plan[$t][$s][0]->frei_orte=array_diff($this->std_plan[$t][$s][0]->frei_orte,$raster[$t][$s]->ort); // Blockung beruecksichtigen for ($b=1;$b<$block && ($s+$block)<=($max_stunde+1);$b++) if (!$raster[$t][$s+$b]->kollision) $this->std_plan[$t][$s][0]->frei_orte=array_diff($this->std_plan[$t][$s][0]->frei_orte,$raster[$t][$s+$b]->ort); else $this->std_plan[$t][$s][0]->frei_orte=array(); } elseif($raster[$t][$s]->kollision) $this->std_plan[$t][$s][0]->frei_orte=array(); // Variablen abgleichen $rest-=$block; if ($block>$rest) $block=$rest; $datum=jump_week($datum,$wr); $datum_begin=$datum; $datum_end=jump_week($datum_begin, 1); // Formatieren fuer Datenbankabfragen $datum_begin=date("Y-m-d",$datum_begin); $datum_end=date("Y-m-d",$datum_end); $count++; } while($type=='lva_multi_search' && $rest>0); return true; } /************************************************************************** * @brief Funktion draw_week_csv Stundenplan im XUL-Format * * @param target Ziel-System zB Outlook * * @return true oder false * */ function draw_week_csv($target) { if (!date("w",$this->datum)) $this->datum=jump_day($this->datum,1); $num_rows_stunde=pg_numrows($this->stunde); for ($i=1; $i<7; $i++) { for ($k=0; $k<$num_rows_stunde; $k++) { $j=pg_result($this->stunde,$k,'"stunde"'); // get id of hour if (isset($this->std_plan[$i][$j][0]->lehrfach)) { // Daten aufbereiten unset($unr); unset($lektor); unset($lehrverband); unset($lehrfach); foreach ($this->std_plan[$i][$j] as $lehrstunde) { $unr[]=$lehrstunde->unr; // Lektoren $lektor[]=$lehrstunde->lektor; // Lehrverband $lvb=$lehrstunde->stg.'-'.$lehrstunde->sem; if ($lehrstunde->ver!=null && $lehrstunde->ver!='0' && $lehrstunde->ver!='') { $lvb.=$lehrstunde->ver; if ($lehrstunde->grp!=null && $lehrstunde->grp!='0' && $lehrstunde->grp!='') $lvb.=$lehrstunde->grp; } if (count($lehrstunde->gruppe_kurzbz)>0) $lvb=$lehrstunde->gruppe_kurzbz; $lehrverband[]=$lvb; // Lehrfach $lf=$lehrstunde->lehrfach; if (isset($lehrstunde->lehrform)) $lf.='-'.$lehrstunde->lehrform; $lehrfach[]=$lf; $titel=$lehrstunde->titel; $anmerkung=$lehrstunde->anmerkung; } // Unterrichtsnummer (Kollision?) $unr=array_unique($unr); if(!isset($kollision)) $kollision=0; $kollision+=count($unr); // Lektoren if ($this->type!='lektor') { $lektor=array_unique($lektor); sort($lektor); $lkt=''; foreach ($lektor as $l) $lkt.=$l.' '; } else $lkt=$lektor[0]; //echo $lkt; // Lehrverband if ($this->type!='verband') { $lehrverband=array_unique($lehrverband); sort($lehrverband); $lvb=''; foreach ($lehrverband as $l) $lvb.=$l.' '; } else $lvb=$lehrverband[0]; $start_time=pg_result($this->stunde,$k,'"beginn"'); // Blockungen erkennen if (($this->std_plan[$i][$j][0]->unr == $this->std_plan[$i][$j+1][0]->unr) && $this->std_plan[$i][$j][0]!=0 && $k<($num_rows_stunde-1)) { $end_time=pg_result($this->stunde,++$k,'"ende"'); if (($this->std_plan[$i][$j][0]->unr == $this->std_plan[$i][$j+2][0]->unr) && $k<($num_rows_stunde-2)) { $end_time=pg_result($this->stunde,++$k,'"ende"'); if (($this->std_plan[$i][$j][0]->unr == $this->std_plan[$i][$j+3][0]->unr) && $k<($num_rows_stunde-3)) $end_time=pg_result($this->stunde,++$k,'"ende"'); } } else $end_time=pg_result($this->stunde,$k,'"ende"'); //$start_time=substr($start_time,0,5); //$end_time=substr($end_time,0,5); //$start_date=$this->datum[year].'/'.$this->datum[mon].'/'.$this->datum[mday]; $start_date=date("d.m.Y",$this->datum); $end_date=$start_date; if ($target=='outlook') { echo $this->crlf.'"'.$this->std_plan[$i][$j][0]->lehrfach.'","'.$start_date.'","'.$start_time.'","'.$end_date.'","'.$end_time.'","Aus","Aus",,,,,,,,"Stundenplan'; echo $this->crlf.$this->std_plan[$i][$j][0]->lehrfach.$this->crlf.$this->std_plan[$i][$j][0]->lektor.$this->crlf.$lvb.$this->crlf.$this->std_plan[$i][$j][0]->ort.'","StundenplanFH","'.$this->std_plan[$i][$j][0]->ort.'","Normal","Aus",,"Normal","2"'; } else if ($target=='ical') { $sda = explode(".",$start_date); //sda start date array $sta = explode(":",$start_time); //sta start time array $eda = explode(".",$end_date); //eda end date array $eta = explode(":",$end_time); //eta end time array $start_date_time_ical = $sda[2].$sda[1].$sda[0].'T'.$sta[0].$sta[1].$sta[2]; //.'Z'; //neu gruppieren der Startzeit und des Startdatums $end_date_time_ical = $eda[2].$eda[1].$eda[0].'T'.$eta[0].$eta[1].$eta[2]; //.'Z'; //neu gruppieren der Startzeit und des Startdatums echo $this->crlf.'BEGIN:VEVENT'.$this->crlf .'UID:'.'TW'.$lvb.$this->std_plan[$i][$j][0]->ort.$this->std_plan[$i][$j][0]->lektor.$lehrfach[0].$start_date_time_ical.$this->crlf .'SUMMARY:'.$lehrfach[0].' '.$this->std_plan[$i][$j][0]->ort.' - '.$lvb.$this->crlf .'DESCRIPTION:'.$lehrfach[0].'\n'.$this->std_plan[$i][$j][0]->lektor.'\n'.$lvb.'\n'.$this->std_plan[$i][$j][0]->ort.$this->crlf .'LOCATION:'.$this->std_plan[$i][$j][0]->ort.$this->crlf .'CATEGORIES:StundenplanTW'.$this->crlf .'DTSTART:'.$start_date_time_ical.$this->crlf .'DTEND:'.$end_date_time_ical.$this->crlf .'END:VEVENT'; } else { echo $this->crlf.'"'.$lehrfach[0].'","StundenplanTW","'.$this->std_plan[$i][$j][0]->ort.'","Stundenplan'.$this->crlf.$this->std_plan[$i][$j][0]->lehrfach.$this->crlf; echo $this->std_plan[$i][$j][0]->lektor.$this->crlf.$lvb.$this->crlf.$this->std_plan[$i][$j][0]->ort.'","Stundenplan",'; echo '"'.$start_date.'","'.$start_time.'","'.$end_date.'","'.$end_time.'",,,,,'; } } } $this->datum=jump_day($this->datum, 1); } return true; } } ?>