'."\n";;
$tmp_txt.=' ';
$tmp_txt.=$zeiten[$i1]['von']." - ".$zeiten[$i1]['bis'];
$tmp_txt.=' | '."\n";;
// Jeder Tag ist eine Spalte
for ($i3=1; $i3<=7; $i3++)
{
// Alle Faecher durchsuchen
for ($i2=0; $i2'."\n";
$tmp_txt.=printentry($stundenplan,$i2);
$tmp_txt.=" "."\n";
}
}
// gegebenenfalls Spalte mit leeren Zellen auffuellen
for ($i4=0; $i4<($mehrbelegung[$i3]-mehrbelegung_prozeitraum($stundenplan,$zeiten,$i1,$i3)); $i4++)
$tmp_txt.=' | ';
}
$tmp_txt.=' '."\n";
}
$tmp_txt.=''."\n";
return $tmp_txt;
}
// gibt es die Zeitspanne schon?
function uniq_times($zeiten,$von,$bis)
{
for ($i1=0; $i1=0) && ($pos=$von) && ($zeiten[$pos]['bis']<=$bis))
return true;
return false;
}
// ist der Zeitraum pos derjenige, der mit 'von' startet?
function start_times($zeiten,$pos,$von)
{
// guelltiges pos?
if (($pos>=0) && ($pos 'bis'?
function sizeof_times($zeiten,$von,$bis)
{
$ergb=0;
for ($i1=0; $i1=0) && ($pos0; $pos--)
{
if (($zeiten[$pos-1]['von']>$zeiten[$pos]['von']) || (($zeiten[$pos-1]['von']==$zeiten[$pos]['von']) && ($zeiten[$pos-1]['bis']>$zeiten[$pos]['bis'])))
{
$tmp=$zeiten[$pos-1];
$zeiten[$pos-1]=$zeiten[$pos];
$zeiten[$pos]=$tmp;
}
}
return $zeiten;
}
}
// Sorgt dafuer dass alle Zeitspannen so zerteilt werden dass sie sich nicht mehr ueberschneiden
function update_times($zeiten,$von,$bis)
{
$bonusfeld=false; // muss ein zusaetzliches Feld erzeugt werden?
$modified=false; // mussten Zeiten veraendert werden?
// Neue Zeite mit allen anderen vergleichen und testen ob es irgendwo schneidet
// Falls es schneidet Felder aufsplitten
for ($i1=0; $i1$zeiten[$i1]['von'])
{
// ... mittendrin, 3 Mengen bauen
if ($bis<$zeiten[$i1]['bis'])
{
$bonus_von=$bis; $bonus_bis=$zeiten[$i1]['bis'];
$zeiten[$i1]['bis']=$bis;
$bis=$zeiten[$i1]['von'];
$bonusfeld=true;
$modified=true;
}
// ... gleichzeitig, kleine Menge davor
else if ($bis==$zeiten[$i1]['bis'])
{
$bis=$zeiten[$i1]['von'];
}
// ... endet hintendran, vorher und nacher neue Mengen
else if ($bis>$zeiten[$i1]['bis'])
{
$bonus_von=$zeiten[$i1]['bis']; $bonus_bis=$bis;
$bis=$zeiten[$i1]['von'];
$bonusfeld=true;
$modified=true;
}
}
}
// Faengt gleichzeitig an ...
else if ($von==$zeiten[$i1]['von'])
{
// ... beide sind nicht leer ...
if (($von!=$bis) && ($zeiten[$i1]['von']!=$zeiten[$i1]['bis']))
{
// ... und endet mittendrin, Menge halbieren
if ($bis<$zeiten[$i1]['bis'])
{
$zeiten[$i1]['von']=$bis;
$modified=true;
}
// ... und endet hintendran, hinten Menge anhaengen
else if ($bis>$zeiten[$i1]['bis'])
{
$von=$zeiten[$i1]['bis'];
$modified=true;
}
}
}
// Faengt dahinter an ...
else if ($von>$zeiten[$i1]['von'])
{
// ... und endet mittendrin, andere Zeit halbieren und davor und danach plazieren
if ($bis<$zeiten[$i1]['bis'])
{
$bonus_von=$bis; $bonus_bis=$zeiten[$i1]['bis'];
$zeiten[$i1]['bis']=$von;
$bonusfeld=true;
$modified=true;
}
// Hoeren gleichzeitig auf, Menge halbieren
else if ($bis==$zeiten[$i1]['bis'])
{
$zeiten[$i1]['bis']=$von;
$modified=true;
}
// ... und endet hintendran, 3 kleine Mengen
else if (($bis>$zeiten[$i1]['bis']) && ($von<$zeiten[$i1]['bis']))
{
$bonus_von=$zeiten[$i1]['bis']; $bonus_bis=$bis;
$bis=$zeiten[$i1]['bis'];
$zeiten[$i1]['bis']=$von;
$bonusfeld=true;
$modified=true;
}
}
}
if ($modified)
// die Zeitspanne wurde veraendert, lieber nochmal durchschicken ob sie jetzt OK ist
{
$zeiten=update_times($zeiten,$von,$bis);
if ($bonusfeld) $zeiten=update_times($zeiten,$bonus_von,$bonus_bis);
}
else
// die Zeitpanne sind OK, abspeichern
{
$zeiten=add_times($zeiten,$von,$bis);
if ($bonusfeld) $zeiten=add_times($zeiten,$bonus_von,$bonus_bis);
}
return $zeiten;
}
// Gibt Eintrag aus
function printentry($stundenplan,$nr)
{
$tmp_txt="";
$tmp_txt.=' ';
if ($stundenplan[$nr]['Link']!="")
$tmp_txt.=''.$stundenplan[$nr]['Fach'].'';
else $tmp_txt.=$stundenplan[$nr]['Fach'];
$tmp_txt.="
\n";
$tmp_txt.=$stundenplan[$nr]['Raum']."
\n";
$tmp_txt.=$stundenplan[$nr]['Betreuer']."
\n";
if ($stundenplan[$nr]['doppelt']>1)
$tmp_txt.='('.$stundenplan[$nr]['ID'].': 1/'.$stundenplan[$nr]['doppelt'].')'."
\n";
return $tmp_txt;
}
// Erzeugt neuen Eintrag
function newentry($fach,$von,$bis,$raum,$link,$wochentag,$betreuer)
{
global $stundenplan;
global $zeiten;
$neuepos=count($stundenplan);
$stundenplan[$neuepos]['Fach']=$fach;
if ($bis<$von) $bis=$von;
$stundenplan[$neuepos]['Von']=$von;
$stundenplan[$neuepos]['Bis']=$bis;
$stundenplan[$neuepos]['Raum']=$raum;
$stundenplan[$neuepos]['Link']=$link;
if (($wochentag<1) || ($wochentag>6)) $wochentag=7;
$stundenplan[$neuepos]['Wochentag']=$wochentag;
$stundenplan[$neuepos]['Betreuer']=$betreuer;
$zeiten=update_times($zeiten,$stundenplan[$neuepos]['Von'],$stundenplan[$neuepos]['Bis']);
}
?>