Tagesinfo im Tempus kann ueber Config angepasst werden

Sonntage werden im Tempus als Feiertage markiert
This commit is contained in:
oesi
2015-10-14 19:03:20 +02:00
parent 89dc6d23d5
commit 7c62a869e5
3 changed files with 166 additions and 145 deletions
+3
View File
@@ -86,6 +86,9 @@ define('LVPLAN_SYNC_ENDE','');
// Soll nach dem LVPlan Sync automatisch das Horde Sync angestoßen werden
define('LVPLAN_HORDE_SYNC',false);
// Format der Tagesinfo im Tempus %t = Wochentag %b = Begin der Stunde %e = Ende der Stunde %s = Stunde
define('TEMPUS_TAGESINFO_FORMAT','%t %b');
/*
* VORRUECKUNG_LEHRVERBAND_MAX_SEMESTER
* leer: Studentlehrverband Semester wird bei der Vorrueckung normal weitergezaehlt bis zum max_semester des Studienganges
+158 -141
View File
@@ -38,8 +38,8 @@ require_once(dirname(__FILE__).'/studiengang.class.php');
require_once(dirname(__FILE__).'/mitarbeiter.class.php');
require_once(dirname(__FILE__).'/datum.class.php');
require_once(dirname(__FILE__).'/zeitsperre.class.php');
require_once(dirname(__FILE__).'/phrasen.class.php');
require_once(dirname(__FILE__).'/globals.inc.php');
require_once(dirname(__FILE__).'/phrasen.class.php');
require_once(dirname(__FILE__).'/globals.inc.php');
require_once(dirname(__FILE__).'/sprache.class.php');
require_once(dirname(__FILE__).'/functions.inc.php');
require_once(dirname(__FILE__).'/betriebsmittel.class.php');
@@ -97,7 +97,7 @@ class wochenplan extends basis_db
public $wochenplan;
public $errormsg;
public $fachbereich_kurzbz;
public $raeume = array();
/**
@@ -107,9 +107,9 @@ class wochenplan extends basis_db
public function __construct($type)
{
parent::__construct();
$this->type=$type;
$this->type=$type;
$this->link='stpl_week.php?type='.$type;
$this->kal_link='stpl_kalender.php?type='.$type;
// Timezone setzten
@@ -117,7 +117,7 @@ class wochenplan extends basis_db
$this->datum=time();
$this->init_stdplan();
$this->crlf=crlf();
}
/**
@@ -215,9 +215,9 @@ class wochenplan extends basis_db
return false;
}
$this->fachbereich_kurzbz=$fachbereich_kurzbz;
}
// LVA
if($type=='lva' && $lva==NULL)
{
@@ -228,7 +228,7 @@ class wochenplan extends basis_db
{
$this->lva=$lva;
}
// Zusaetzliche Daten ermitteln
//personendaten
if ($this->type=='student' || $this->type=='lektor')
@@ -252,7 +252,7 @@ class wochenplan extends basis_db
$this->pers_nachname = $row->nachname;
$this->pers_vorname =$row->vorname;
$this->pers_vornamen = $row->vornamen;
if ($this->type=='student')
{
$this->stg_kz = $row->studiengang_kz;
@@ -261,7 +261,7 @@ class wochenplan extends basis_db
$this->grp = $row->gruppe;
}
}
else
else
{
$this->errormsg='User nicht gefunden';
return false;
@@ -295,7 +295,7 @@ class wochenplan extends basis_db
return false;
}
}
if ($this->type=='ort' && $this->ort_kurzbz == 'all')
{
$sql_query="SELECT bezeichnung, ort_kurzbz, planbezeichnung, ausstattung, max_person, content_id FROM public.tbl_ort WHERE lehre AND ort_kurzbz != 'Dummy'";
@@ -405,7 +405,7 @@ class wochenplan extends basis_db
$this->errormsg=$this->wochenplan->errormsg;
return false;
}
// Stundenplandaten aufbereiten
for($i=0;$i<$anz;$i++)
{
@@ -462,9 +462,9 @@ class wochenplan extends basis_db
*/
public function draw_header()
{
$sprache = getSprache();
$p=new phrasen($sprache);
$sprache = getSprache();
$p=new phrasen($sprache);
echo '<TABLE width="100%" border="0" cellspacing="0">'.$this->crlf;
echo ' <TR>'.$this->crlf;
echo ' <TD style="padding-bottom: 5px;" valign="top">'.$this->crlf;
@@ -543,7 +543,7 @@ class wochenplan extends basis_db
for ($i=0;$i<($num_rows_ort-1);$i++)
{
$row = $this->db_fetch_object(null,$i+1);
if ($row->ort_kurzbz==$this->ort_kurzbz)
$prev_ort=$this->db_fetch_object(null,$i);
}
@@ -616,18 +616,18 @@ class wochenplan extends basis_db
$this->jahreskalenderjump_hoverbox($this->link);
return true;
}
/**
* Zeichnen der Stundenplanwoche in HTML
*/
public function draw_week($raumres, $user_uid='', $gruppieren=LVPLAN_LEHREINHEITEN_GRUPPIEREN)
{
global $tagbez;
$sprache = getSprache();
$spracheLoad = new sprache();
$spracheLoad->load($sprache);
$p=new phrasen($sprache);
$sprache = getSprache();
$spracheLoad = new sprache();
$spracheLoad->load($sprache);
$p=new phrasen($sprache);
$o_datum=new datum();
// Stundentafel abfragen
$sql_query="SELECT stunde, beginn, ende FROM lehre.tbl_stunde ORDER BY stunde";
@@ -635,7 +635,7 @@ class wochenplan extends basis_db
die($this->db_last_error());
$result_stunde = $this->db_result;
$num_rows_stunde = $this->db_num_rows($result_stunde);
// Formularbeginn wenn Lektor
if ($raumres && $this->type=='ort')
echo '<form name="reserve" method="post" action="stpl_week.php">'.$this->crlf;
@@ -669,7 +669,7 @@ class wochenplan extends basis_db
echo '<tr><td>'.$tagbez[$spracheLoad->index][$i].'<br>'.strftime("%e. %b %Y",$datum).'<br></td>'.$this->crlf; //.strftime("%A %d %B %Y",$this->datum)
for ($k=0; $k<$num_rows_stunde; $k++)
{
$row = $this->db_fetch_object($result_stunde, $k);
$j = $row->stunde;
// Stunde aufbereiten
@@ -692,7 +692,7 @@ class wochenplan extends basis_db
$reservierung=false;
foreach ($this->std_plan[$i][$j] as $lehrstunde)
{
$unr[]=$lehrstunde->unr;
// Lektoren
$lektor[]=$lehrstunde->lektor;
@@ -700,11 +700,11 @@ class wochenplan extends basis_db
$typ='';
if($lehrstunde->reservierung)
{
$studiengang = new studiengang();
$studiengang = new studiengang();
$studiengang->load($lehrstunde->stg_kz);
$typ = $studiengang->typ;
$typ = $studiengang->typ;
}
$lvb=$typ.$lehrstunde->stg.'-'.$lehrstunde->sem;
$stg = $lehrstunde->stg_kz;
if ($lehrstunde->ver!=null && $lehrstunde->ver!='0' && $lehrstunde->ver!='')
@@ -782,7 +782,7 @@ class wochenplan extends basis_db
else
$anm='';
}
// Blinken oder nicht ?
if ($kollision)
{
@@ -869,7 +869,7 @@ class wochenplan extends basis_db
$uEinheiten[$unrIndex]['lektor'][]=$lektor[$n];
$uEinheiten[$unrIndex]['titel'][]=$titel_arr[$n];
}
// Ausgabe einer Stunde im Raster (HTML)
echo ' <td nowrap valign="top">';
// for($n=0;$n<count($uEinheiten);$n++)
@@ -879,7 +879,7 @@ class wochenplan extends basis_db
if (isset($uEinheit['farbe']))
echo 'style="background-color: #'.$uEinheit['farbe'].'; margin-bottom: 3px;"';
echo '>';
// Link zu Details setzten
echo '<A class="stpl_detail" onClick="window.open(';
echo "'stpl_detail.php";
@@ -955,10 +955,10 @@ class wochenplan extends basis_db
echo '<table><tr><br>';
echo ' <td>'.$p->t('global/titel').':</td><td><input onchange="if (this.value.length>0 && document.getElementById(\'beschreibung\').value.length<1) {document.getElementById(\'beschreibung\').value=document.getElementById(\'titel\').value;document.getElementById(\'beschreibung\').focus();};" type="text" id="titel" name="titel" size="10" maxlength="10" value="" /></td> '.$this->crlf;
echo ' <td>'.$p->t('global/beschreibung').':</td><td colspan="6"> <input onchange="if (this.value.length<1 && document.getElementById(\'titel\').value.length>0) {alert(\'Achtung! Speichern nur mit Beschreibung moeglich!\');this.focus();};" type="text" id="beschreibung" name="beschreibung" size="20" maxlength="32" value="" /> </td>'.$this->crlf;
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user_uid);
//Pruefen ob die erweiterte Reservierungsrechte vorhanden sind
if($rechte->isBerechtigt('lehre/reservierung', null, 'sui'))
{
@@ -966,31 +966,31 @@ class wochenplan extends basis_db
//Lektor
echo '<td>'.$p->t('lvplan/lektor').':</td>
<td><SELECT name="user_uid">'.$this->crlf;
$qry = "SELECT uid, kurzbz, vorname, nachname FROM campus.vw_mitarbeiter
$qry = "SELECT uid, kurzbz, vorname, nachname FROM campus.vw_mitarbeiter
WHERE aktiv=true
ORDER BY nachname, uid";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
if($row->uid==$user_uid)
$selected='selected="selected"';
else
else
$selected='';
echo '<OPTION value="'.$row->uid.'" '.$selected.'>'.$row->nachname.' '.$row->vorname.' - '.$row->uid.'</OPTION>'.$this->crlf;
}
}
echo '</SELECT></td>'.$this->crlf;
echo '</tr><tr>'.$this->crlf;
//Studiengaenge Laden fuer die eine erweiterte Reservierungsberechtigung vorhanden ist
$stg = new studiengang();
$stg->loadArray($rechte->getStgKz('lehre/reservierung'),'typ, kurzbz',true);
//Studiengang
echo '<td>'.$p->t('global/studiengang').':</td><td> <SELECT name="studiengang_kz">'.$this->crlf;
echo '<OPTION value="0">*</OPTION>'.$this->crlf;
@@ -999,7 +999,7 @@ class wochenplan extends basis_db
echo '<OPTION value="'.$row->studiengang_kz.'">'.$row->kuerzel.' ('.$row->kurzbzlang.')</OPTION>'.$this->crlf;
}
echo '</SELECT></td>';
//Semester
echo '<td>'.$p->t('global/semester').':</td>
<td>
@@ -1016,7 +1016,7 @@ class wochenplan extends basis_db
</SELECT>
</td>
'.$this->crlf;
//Verband
echo '<td>'.$p->t('global/verband').':</td>
<td>
@@ -1031,7 +1031,7 @@ class wochenplan extends basis_db
<OPTION value="V">V</OPTION>
</SELECT>
</td>'.$this->crlf;
//Gruppe
echo '<td>'.$p->t('global/gruppe').':</td>
<td>
@@ -1043,11 +1043,11 @@ class wochenplan extends basis_db
<OPTION value="4">4</OPTION>
</SELECT>
</td>'.$this->crlf;
//Spezialgruppe
echo '<td>'.$p->t('lvplan/spezialgruppe').':</td><td><SELECT name="gruppe_kurzbz">'.$this->crlf;
echo '<OPTION value="">*</OPTION>'.$this->crlf;
//Spezialgruppen aus den Studiengaengen mit erweiterten Reservierungsberechtigung holen
$stgs = $rechte->getStgKz('lehre/reservierung');
$in='';
@@ -1067,24 +1067,24 @@ class wochenplan extends basis_db
echo '</SELECT></td>'.$this->crlf;
echo '<td><input type="checkbox" name="check_all" onclick="toggle_checkboxes(this);" /> alle auswählen</td>'.$this->crlf;
echo '</tr><tr>';
}
else
{
echo ' <input type="hidden" name="user_uid" value="'.$this->user_uid.'" />'.$this->crlf;
}
echo '<td>';
echo ' <input type="submit" name="reserve" value="Reservieren" />'.$this->crlf;
echo ' <input type="hidden" name="ort_kurzbz" value="'.$this->ort_kurzbz.'" />'.$this->crlf;
echo ' <input type="hidden" name="datum" value="'.$this->datum.'" />'.$this->crlf;
echo ' <input type="hidden" name="type" value="'.$this->type.'" />'.$this->crlf;
echo '</td>';
echo '</tr></table></form>';
echo ' <a href="stpl_reserve_list.php">'.$p->t('lvplan/reservierungenLoeschen').' </a>';
}
else
else
{
if($this->type=='ort')
{
@@ -1150,11 +1150,14 @@ class wochenplan extends basis_db
kw="'.$this->kalenderwoche.'"
align="left">KW:'.$this->kalenderwoche.'</label>
</vbox>'.$this->crlf; //<html:br />Beginn<html:br />Ende
$stunden_arr=array();
for ($i=0;$i<$num_rows_stunde; $i++)
{
$row=$this->db_fetch_object($result_stunde,$i);
$beginn=mb_substr($row->beginn,0,5);
$ende=mb_substr($row->ende,0,5);
$stunden_arr[$row->stunde]['beginn']=$beginn;
$stunden_arr[$row->stunde]['ende']=$ende;
$stunde=$row->stunde;
echo '<vbox><label align="center">'.$stunde.'<html:br />
<html:small>'.$beginn.'<html:br />
@@ -1206,10 +1209,15 @@ class wochenplan extends basis_db
if ($index=='')
$index=1;
$bgcolor=$cfgStdBgcolor[$index+3];
// Sonntag wie Ferien markieren
if($i==7)
$bgcolor='#FFFF55';
if ($isferien)
{
$bgcolor='#FFFF55';
//Wenn Ferien eingetragen sind, dann die Bezeichnung im Tooltiptext anzeigen
foreach($ferien->getFerien($datum) as $bezeichnung)
{
@@ -1223,7 +1231,7 @@ class wochenplan extends basis_db
{
echo ' tooltiptext="'.$this->convert_html_chars($tooltip).'"';
}
echo '
echo '
ondragdrop="nsDragAndDrop.drop(event,boardObserver)"
ondragover="nsDragAndDrop.dragOver(event,boardObserver)"
ondragenter="nsDragAndDrop.dragEnter(event,boardObserver)"
@@ -1232,7 +1240,7 @@ class wochenplan extends basis_db
stg_kz="'.$this->stg_kz.'" sem="'.$this->sem.'" ver="'.$this->ver.'"
grp="'.$this->grp.'" gruppe="'.$this->gruppe_kurzbz.'"
pers_uid="'.$this->pers_uid.'" stpltype="'.$this->type.'">';
if (isset($this->std_plan[$i][$j][0]->lehrfach))
{
// Daten aufbereiten
@@ -1250,7 +1258,7 @@ class wochenplan extends basis_db
$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);
@@ -1259,16 +1267,16 @@ class wochenplan extends basis_db
{
$kollision=0;
$studiensemester = getStudiensemesterFromDatum(date('Y-m-d',$datum));
$qry = "SELECT datum, stunde, student_uid, count(student_uid) AS anzahl
FROM (
SELECT sub_stpl_uid.unr, sub_stpl_uid.datum, sub_stpl_uid.stunde, sub_stpl_uid.student_uid
FROM ( SELECT stpl.unr, stpl.datum, stpl.stunde, tbl_benutzergruppe.uid AS student_uid
FROM lehre.tbl_stundenplandev stpl
JOIN public.tbl_benutzergruppe USING (gruppe_kurzbz)
WHERE tbl_benutzergruppe.studiensemester_kurzbz::text = ".$this->db_add_param($studiensemester)."
WHERE tbl_benutzergruppe.studiensemester_kurzbz::text = ".$this->db_add_param($studiensemester)."
GROUP BY stpl.unr, stpl.datum, stpl.stunde, tbl_benutzergruppe.uid
UNION
UNION
SELECT stpl.unr, stpl.datum, stpl.stunde, tbl_studentlehrverband.student_uid
FROM lehre.tbl_stundenplandev stpl
JOIN public.tbl_studentlehrverband ON stpl.gruppe_kurzbz IS NULL AND stpl.studiengang_kz = tbl_studentlehrverband.studiengang_kz AND stpl.semester = tbl_studentlehrverband.semester AND (stpl.verband = tbl_studentlehrverband.verband OR stpl.verband = ' '::bpchar AND stpl.verband <> tbl_studentlehrverband.verband) AND (stpl.gruppe = tbl_studentlehrverband.gruppe OR stpl.gruppe = ' '::bpchar AND stpl.gruppe <> tbl_studentlehrverband.gruppe)
@@ -1285,9 +1293,9 @@ class wochenplan extends basis_db
{
// Nur die Eintraege als kollision anzeigen, die auch aktuell im Tempus sichtbar sind
// Dazu werden die UNRs der betroffenen Studierenden zuerst ein ein Array gruppiert und danach
// verglichen ob die angezeigte UNR dabei ist.
// verglichen ob die angezeigte UNR dabei ist.
// Etwas kompliziert aber performanter als wenn die betroffenen UNRs zusätzlich zum WHERE hinzugefügt werden
$qry.=" AND array_agg(unr) && ARRAY[".implode('::bigint,',$a_unr)."::bigint] ";
// ==> AND array_agg(unr) && ARRAY[123::bigint,345::bigint]
}
@@ -1303,11 +1311,11 @@ class wochenplan extends basis_db
$kollisionsmeldungen[$kollision_unr][]=' Studentenkollision '.$stud_row->student_uid;
}
}
}
else
else
{
//Kollisionspruefung LVB Ebene
// Ist es bei LVB-Ansicht wirklich eine Kollision?
if ($kollision>0 && $this->type=='verband')
@@ -1341,7 +1349,7 @@ class wochenplan extends basis_db
}
}
}
// Kollision anzeigen?
if ($ignore_kollision)
$kollision=0;
@@ -1417,7 +1425,7 @@ class wochenplan extends basis_db
$anmerkung=htmlspecialchars($lehrstunde->anmerkung);
$tooltip_anmerkung[]=$titel.' '.$anmerkung;
}
if(isset($raumcheck[$lehrstunde->ort]) && $raumcheck[$lehrstunde->ort]!=$lehrstunde->unr)
{
$kollision++;
@@ -1465,7 +1473,7 @@ class wochenplan extends basis_db
// Ort
//if ($this->type=='verband')
$ort=array_unique($ort);
sort($ort);
$orte='';
@@ -1485,10 +1493,10 @@ class wochenplan extends basis_db
$updatevonam.='am ';
foreach ($updateamum as $u)
$updatevonam.=$u.' ';
// Blinken oder nicht ?
if (isset($kollisionsmeldungen[$unr])
|| (isset($kollisionsmeldung) && count($kollisionsmeldungen, COUNT_RECURSIVE)==0 && $kollision>0))
if (isset($kollisionsmeldungen[$unr])
|| (isset($kollisionsmeldung) && count($kollisionsmeldungen, COUNT_RECURSIVE)==0 && $kollision>0))
{
$blink_ein='<html:blink>';// .$kollision;
$blink_aus='</html:blink>';
@@ -1533,7 +1541,7 @@ class wochenplan extends basis_db
grp="'.$this->grp.'" gruppe="'.$this->gruppe_kurzbz.'"
datum="'.date("Y-m-d",$datum).'" stunde="'.$j.'" wochentag="'.$i.'"
pers_uid="'.$this->pers_uid.'" ort_kurzbz="'.$button_orte.'">';
echo '<label align="center">'.$blink_ein;
$count++;
//echo $lf;
@@ -1565,9 +1573,9 @@ class wochenplan extends basis_db
if(LVPLAN_ANMERKUNG_ANZEIGEN)
echo $anmerkung;
echo $blink_aus;
echo '</label>';
echo '</button>';
}
@@ -1576,14 +1584,14 @@ class wochenplan extends basis_db
{
//orte sortieren => AnzahlKollisionen ASC, Ort_kurzbz ASC
$keys=array();
$values=array();
$values=array();
foreach ($this->std_plan[$i][$j][0]->frei_orte as $key=>$value)
{
$keys[]=$key;
$values[]=$value;
}
array_multisort($values, SORT_ASC, $keys, SORT_ASC, $this->std_plan[$i][$j][0]->frei_orte);
foreach ($this->std_plan[$i][$j][0]->frei_orte as $f_ort=>$anzahl)
{
if($anzahl<=$max_kollision)
@@ -1602,7 +1610,16 @@ class wochenplan extends basis_db
}
}
}
echo '<description class="stplweek_tagesinfo">'.date("D",$datum).'-'.$j.'</description>';
if(defined('TEMPUS_TAGESINFO_FORMAT'))
$tagesinfo = TEMPUS_TAGESINFO_FORMAT;
else
$tagesinfo = '%t %s';
$tagesinfo = str_replace('%t',date("D",$datum),$tagesinfo);
$tagesinfo = str_replace('%b',$stunden_arr[$j]['beginn'],$tagesinfo);
$tagesinfo = str_replace('%e',$stunden_arr[$j]['ende'],$tagesinfo);
$tagesinfo = str_replace('%s',$j,$tagesinfo);
echo '<description class="stplweek_tagesinfo">'.$tagesinfo.'</description>';
echo '</vbox>'.$this->crlf;
}
echo "</row>";
@@ -1750,8 +1767,8 @@ class wochenplan extends basis_db
// $rtype='1=1';
// Raeume die in Frage kommen, aufgrund der Raumtypen
$sql_query="SELECT DISTINCT ort_kurzbz, hierarchie FROM public.tbl_ort
JOIN public.tbl_ortraumtyp USING (ort_kurzbz) WHERE ($rtype) AND aktiv AND ort_kurzbz NOT LIKE '\\\\_%' ORDER BY hierarchie,ort_kurzbz";
JOIN public.tbl_ortraumtyp USING (ort_kurzbz) WHERE ($rtype) AND aktiv AND ort_kurzbz NOT LIKE '\\\\_%' ORDER BY hierarchie,ort_kurzbz";
if(!$this->db_query($sql_query))
die($this->db_last_error());
while($row = $this->db_fetch_object())
@@ -1786,14 +1803,14 @@ class wochenplan extends basis_db
$sql_query="SELECT DISTINCT datum, stunde, ort_kurzbz FROM $stpl_view
WHERE datum>=".$this->db_add_param($this->datum_begin)." AND datum<".$this->db_add_param($this->datum_end)." AND unr!=".$this->db_add_param($unr);
//echo $sql_query; NATURAL JOIN tbl_ortraumtyp AND ($rtype) "
// Reservierungen beruecksichtigen
$sql_query.=" UNION SELECT DISTINCT datum, stunde, ort_kurzbz FROM campus.tbl_reservierung
WHERE datum>=".$this->db_add_param($this->datum_begin)." AND datum<".$this->db_add_param($this->datum_end)." ";
if(!$this->db_query($sql_query))
die($this->db_last_error());
while($row = $this->db_fetch_object())
{
$mtag=mb_substr($row->datum, 8,2);
@@ -1802,7 +1819,7 @@ class wochenplan extends basis_db
$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<=TAGE_PRO_WOCHE;$t++)
{
@@ -1815,23 +1832,23 @@ class wochenplan extends basis_db
{
$this->std_plan[$t][$s][0]->frei_orte[$ort]=(isset($this->std_plan[$t][$s][0]->frei_orte[$ort])?$this->std_plan[$t][$s][0]->frei_orte[$ort]:0);
}
// Besetzte Raueme eintragen
foreach($raster[$t][$s]->ort as $ort)
{
if(in_array($ort, $orte))
$this->std_plan[$t][$s][0]->frei_orte[$ort]=(isset($this->std_plan[$t][$s][0]->frei_orte[$ort])?$this->std_plan[$t][$s][0]->frei_orte[$ort]+1:1);
}
// Gruppenkollision eintragen
if($raster[$t][$s]->kollision)
{
foreach($this->std_plan[$t][$s][0]->frei_orte as $ort=>$value)
{
$this->std_plan[$t][$s][0]->frei_orte[$ort]=(isset($this->std_plan[$t][$s][0]->frei_orte[$ort])?$this->std_plan[$t][$s][0]->frei_orte[$ort]+1:1);
$this->std_plan[$t][$s][0]->frei_orte[$ort]=(isset($this->std_plan[$t][$s][0]->frei_orte[$ort])?$this->std_plan[$t][$s][0]->frei_orte[$ort]+1:1);
}
}
// Blockung beruecksichtigen
for ($b=1;$b<$block && ($s+$block)<=($max_stunde+1);$b++)
{
@@ -1844,7 +1861,7 @@ class wochenplan extends basis_db
$this->std_plan[$t][$s][0]->frei_orte[$ort]=(isset($this->std_plan[$t][$s][0]->frei_orte[$ort])?$this->std_plan[$t][$s][0]->frei_orte[$ort]+1:1);
}
}
else
else
{
// Bei Gruppenkollision kollidieren alle Raeume
foreach($this->std_plan[$t][$s][0]->frei_orte as $ort=>$value)
@@ -1854,7 +1871,7 @@ class wochenplan extends basis_db
}
}
}
else
else
{
// Wenn sich die Stunden mit der Blockung nicht ausgehen, dann keine Raeume anzeigen
$this->std_plan[$t][$s][0]->frei_orte = array();
@@ -1918,7 +1935,7 @@ class wochenplan extends basis_db
for ($i=0;$i<$num_rows_lva;$i++)
{
$row=$this->db_fetch_object(null,$i);
$raumtyp[$i]=$row->raumtyp;
$raumtypalt[$i]=$row->raumtypalternativ;
if ($row->gruppe_kurzbz!=null && $row->gruppe_kurzbz!='')
@@ -2049,7 +2066,7 @@ class wochenplan extends basis_db
$orte = array();
for ($i=0;$i<$num_orte;$i++)
{
$row = $this->db_fetch_object(null, $i);
$row = $this->db_fetch_object(null, $i);
$orte[]=$row->ort_kurzbz;
}
@@ -2084,14 +2101,14 @@ class wochenplan extends basis_db
$raster[$t][$s]->kollision=false;
}
}
// Stundenplanabfrage bauen (Wo ist Kollision?)
$sql_query="SELECT DISTINCT datum, stunde FROM $stpl_table
WHERE datum>=".$this->db_add_param($datum_begin)." AND datum<".$this->db_add_param($datum_end)." AND
($lkt $gruppen OR ($lvb) )";
if (is_numeric($unr))
$sql_query.=" AND unr!=".$this->db_add_param($unr);
if(!$this->db_query($sql_query))
{
$this->errormsg = $this->db_last_error().$sql_query;
@@ -2115,17 +2132,17 @@ class wochenplan extends basis_db
($rtype)";
if (is_numeric($unr))
$sql_query.=" AND unr!=".$this->db_add_param($unr);
// Reservierungen beruecksichtigen
$sql_query.=" UNION SELECT distinct datum, stunde, ort_kurzbz FROM campus.tbl_reservierung
WHERE datum>=".$this->db_add_param($datum_begin)." AND datum<".$this->db_add_param($datum_end);
if(!$this->db_query($sql_query))
{
$this->errormsg = $this->db_last_error().$sql_query;
return false;
}
while($row = $this->db_fetch_object())
{
$mtag=mb_substr($row->datum, 8,2);
@@ -2152,14 +2169,14 @@ class wochenplan extends basis_db
foreach($orte as $ort)
$this->std_plan[$t][$s][0]->frei_orte[$ort]=(isset($this->std_plan[$t][$s][0]->frei_orte[$ort])?$this->std_plan[$t][$s][0]->frei_orte[$ort]:0);
}
// Besetzte Orte eintragen
foreach ($raster[$t][$s]->ort as $ort)
{
if(in_array($ort, $orte))
$this->std_plan[$t][$s][0]->frei_orte[$ort]=(isset($this->std_plan[$t][$s][0]->frei_orte[$ort])?$this->std_plan[$t][$s][0]->frei_orte[$ort]+1:1);
}
//Kollision mit Gruppe
if($raster[$t][$s]->kollision)
{
@@ -2172,7 +2189,7 @@ class wochenplan extends basis_db
}
}
}
// Blockung beruecksichtigen
for ($b=1;$b<$block && ($s+$block)<=($max_stunde+1);$b++)
{
@@ -2239,7 +2256,7 @@ class wochenplan extends basis_db
{
$row = $this->db_fetch_object($this->stunde, $k);
$j=$row->stunde; // get id of hour
if (isset($this->std_plan[$i][$j][0]->lehrfach))
{
// Daten aufbereiten
@@ -2253,7 +2270,7 @@ class wochenplan extends basis_db
unset($lehrfach);
foreach ($this->std_plan[$i][$j] as $lehrstunde)
{
$unr[]=$lehrstunde->unr;
// Lektoren
$lektor[]=$lehrstunde->lektor;
@@ -2311,22 +2328,22 @@ class wochenplan extends basis_db
$row = $this->db_fetch_object($this->stunde, $k);
$start_time=$row->beginn;
for($idx=0;$idx<count($this->std_plan[$i][$j]);$idx++)
{
if(!isset($this->std_plan[$i][$j][$idx]))
{
continue;
}
/**
* Wenn Lektoren in mehreren Raeumen gleichzeitig unterrichten
* Oder mehrere Lektoren /Gruppen im selben Raum sind werden diese
* zu einem Eintrag zusammengruppiert.
*
* Zusammengruppiert werden nur Eintraege die am gleichen Tag
*
* Zusammengruppiert werden nur Eintraege die am gleichen Tag
* in der gleichen Stunde stattfinden.
*
*
* Es wird nur der erste Eintrag ausgegeben. Die restlichen werden uebersprungen da
* die Lektoren, Gruppen und Raeume bereits zum Ersten Eintrag hinzugefuegt wurden.
*/
@@ -2335,14 +2352,14 @@ class wochenplan extends basis_db
$gruppiert[$this->std_plan[$i][$j][$idx]->unr]--;
continue;
}
/**
* Unterricht der ueber mehrere Stunden geht wird nicht einzeln Exportiert,
* sondern zusammengeblockt. (in maximal 4er Bloecke)
*
*
* Es wird nur ein Eintrag geschrieben, die restlichen werden uebersprungen.
* Vor dem Ueberspringen des Eintrages werden jedoch noch die dazu Gruppierten Eintraege
* ermittelt und dann ebenfalls uebersprungen
* Vor dem Ueberspringen des Eintrages werden jedoch noch die dazu Gruppierten Eintraege
* ermittelt und dann ebenfalls uebersprungen
*/
$blockcontinue=false;
if(isset($blocked[$this->std_plan[$i][$j][$idx]->unr]) && $blocked[$this->std_plan[$i][$j][$idx]->unr]>0)
@@ -2350,12 +2367,12 @@ class wochenplan extends basis_db
$blocked[$this->std_plan[$i][$j][$idx]->unr]--;
$blockcontinue=true;
}
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]->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))
{
@@ -2368,7 +2385,7 @@ class wochenplan extends basis_db
$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)
&& ($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))
{
@@ -2378,7 +2395,7 @@ class wochenplan extends basis_db
$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)
&& ($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))
{
@@ -2395,8 +2412,8 @@ class wochenplan extends basis_db
$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++)
@@ -2409,21 +2426,21 @@ class wochenplan extends basis_db
$gruppiert[$this->std_plan[$i][$j][$idx]->unr]++;
else
$gruppiert[$this->std_plan[$i][$j][$idx]->unr]=1;
//Bezeichnungen zusammenfuehren
//Lektoren
if(!mb_strstr($this->std_plan[$i][$j][$idx1]->lektor,$this->std_plan[$i][$j][$idx]->lektor))
{
$this->std_plan[$i][$j][$idx]->lektor.=' / '.$this->std_plan[$i][$j][$idx1]->lektor;
}
//Ort
if(!mb_strstr($this->std_plan[$i][$j][$idx1]->ort,$this->std_plan[$i][$j][$idx]->ort))
{
$this->std_plan[$i][$j][$idx]->ort.=' / '.$this->std_plan[$i][$j][$idx1]->ort;
}
//Gruppen
if(isset($lehrverband[$idx]) && isset($lehrverband[$idx1]))
{
@@ -2433,13 +2450,13 @@ class wochenplan extends basis_db
}
}
}
//Geblockte Eintraege werden uebersprungen nachdem die Gruppierung ermittelt wurde
if($blockcontinue)
{
continue;
}
$start_date=date("d.m.Y",$this->datum);
$end_date=$start_date;
if(isset($lehrverband[$idx]))
@@ -2457,12 +2474,12 @@ class wochenplan extends basis_db
$sta = explode(":",$start_time); //sta start time array
$eda = explode(".",$end_date); //eda end date array
$eta = explode(":",$end_time); //eta end time array
//Die Zeitzone muss angegeben werden, da sonst der Google Kalender die Endzeiten nicht richtig erkennt
//Die Zeitzone muss angegeben werden, da sonst der Google Kalender die Endzeiten nicht richtig erkennt
// diese wird in stpl_kalender global definiert und bei den Start und Ende Zeiten mitangegeben
$start_date_time_ical = $sda[2].$sda[1].$sda[0].'T'.sprintf('%02s',($sta[0])).$sta[1].$sta[2]; //neu gruppieren der Startzeit und des Startdatums
$end_date_time_ical = $eda[2].$eda[1].$eda[0].'T'.sprintf('%02s',($eta[0])).$eta[1].$eta[2]; //neu gruppieren der Startzeit und des Startdatums
echo $this->crlf.'BEGIN:VEVENT'.$this->crlf
.'UID:'.'FH'.str_replace(',',' ',$lvb.$this->std_plan[$i][$j][$idx]->ort.$this->std_plan[$i][$j][$idx]->lektor.$lehrfach[$idx].$start_date_time_ical.$this->crlf)
.'SUMMARY:'.str_replace(',',' ',$lehrfach[$idx].' '.$this->std_plan[$i][$j][$idx]->ort.' - '.$lvb.$this->crlf)
@@ -2479,19 +2496,19 @@ class wochenplan extends basis_db
$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'.sprintf('%02s',($sta[0])).$sta[1].$sta[2]; //neu gruppieren der Startzeit und des Startdatums
$end_date_time_ical = $eda[2].$eda[1].$eda[0].'T'.sprintf('%02s',($eta[0])).$eta[1].$eta[2]; //neu gruppieren der Startzeit und des Startdatums
// Zeit in UTC umwandeln
$date = new DateTime($start_date_time_ical, new DateTimeZone('Europe/Vienna'));
$date->setTimezone(new DateTimeZone('UTC'));
$start_date_time_ical = $date->format('Ymd\THis').'Z';
$date = new DateTime($end_date_time_ical, new DateTimeZone('Europe/Vienna'));
$date->setTimezone(new DateTimeZone('UTC'));
$end_date_time_ical = $date->format('Ymd\THis').'Z';
echo $this->crlf,'FREEBUSY: ',$start_date_time_ical,'/',$end_date_time_ical;
}
elseif ($target=='return')
@@ -2500,8 +2517,8 @@ class wochenplan extends basis_db
$sta = explode(":",$start_time); //sta start time array
$eda = explode(".",$end_date); //eda end date array
$eta = explode(":",$end_time); //eta end time array
//Die Zeitzone muss angegeben werden, da sonst der Google Kalender die Endzeiten nicht richtig erkennt
//Die Zeitzone muss angegeben werden, da sonst der Google Kalender die Endzeiten nicht richtig erkennt
// diese wird in stpl_kalender global definiert und bei den Start und Ende Zeiten mitangegeben
$start_date_time_ical = $sda[2].$sda[1].$sda[0].'T'.sprintf('%02s',($sta[0])).$sta[1].$sta[2]; //neu gruppieren der Startzeit und des Startdatums
$end_date_time_ical = $eda[2].$eda[1].$eda[0].'T'.sprintf('%02s',($eta[0])).$eta[1].$eta[2]; //neu gruppieren der Startzeit und des Startdatums
@@ -2513,7 +2530,7 @@ class wochenplan extends basis_db
$UID = str_replace(',',' ',$UID);
$Summary = str_replace(',',' ',$Summary);
$description = str_replace(',',' ',$description);
$return[]=array('UID'=>$UID,
'unr'=>$unr,
'Summary'=>$Summary,
@@ -2554,7 +2571,7 @@ class wochenplan extends basis_db
* Prueft, ob Eintraege fuer den Export zusammengruppiert werden koennen zu einer Stunde
* Dies ist der Fall, wenn mehrere Lektoren in einem Raum unterrichten, ein Lektor mehrere
* Raeume parallel beaufsichtigt oder mehrere Gruppen in einem Raum sind
*
*
* @param $tag Tag des Unterrichts
* @param $stunde Stunde des Unterrichts
* @param $idx Index des ersten Eintrages
@@ -2562,7 +2579,7 @@ class wochenplan extends basis_db
*/
protected function kannGruppieren($tag, $stunde, $idx, $idx1)
{
if(isset($this->std_plan[$tag][$stunde][$idx]) &&
if(isset($this->std_plan[$tag][$stunde][$idx]) &&
isset($this->std_plan[$tag][$stunde][$idx1]))
{
$unr1 = $this->std_plan[$tag][$stunde][$idx]->unr;
@@ -2572,7 +2589,7 @@ class wochenplan extends basis_db
$lektor1 = $this->std_plan[$tag][$stunde][$idx]->lektor;
$lektor2 = $this->std_plan[$tag][$stunde][$idx1]->lektor;
if($unr1==$unr2 && ($ort1==$ort2 || $lektor1==$lektor2)
if($unr1==$unr2 && ($ort1==$ort2 || $lektor1==$lektor2)
&& !$this->std_plan[$tag][$stunde][$idx]->reservierung && !$this->std_plan[$tag][$stunde][$idx1]->reservierung)
return true;
else
@@ -2580,13 +2597,13 @@ class wochenplan extends basis_db
}
else
return false;
}
}
protected function searchForId($id, $array)
protected function searchForId($id, $array)
{
foreach ($array as $key => $val)
foreach ($array as $key => $val)
{
if ($val['unr'] == $id)
if ($val['unr'] == $id)
{
return $key;
}
@@ -2600,13 +2617,13 @@ class wochenplan extends basis_db
*/
protected function jahreskalenderjump_hoverbox($link)
{
$sprache = getSprache();
$p=new phrasen($sprache);
$sprache = getSprache();
$p=new phrasen($sprache);
$crlf=crlf();
$datum=time();
$woche=kalenderwoche($datum);
$wochenmontag=montag($datum);
echo '<table align="center"><tr valign="top"><td>
<div class="hoverbox">
<div class="preview">
+5 -4
View File
@@ -53,13 +53,13 @@ grid.lvaStundenplan button
tree treecol {
background-color: #FFFFCC;
border: 1px solid black;
background-color: #FFFFCC;
border: 1px solid black;
}
tree {
font-size:9pt;
font-family:Arial;
font-family:Arial;
}
box.studentDetail {
@@ -120,7 +120,7 @@ treechildren::-moz-tree-row(lehrveranstaltung_, selected)
}
treechildren::-moz-tree-checkbox
treechildren::-moz-tree-checkbox
{
/* unchecked checkbox treecells. This style MUST come before treechildren::-moz-tree-checkbox(checked) otherwise it won't take effect. */
list-style-image: url("../skin/images/round.png");
@@ -161,6 +161,7 @@ toolbarbutton.stplweekoverlay-toolbarbutton:hover
{
color: #AAAAAA;
visibility:hidden;
font-size: small;
}
treechildren::-moz-tree-row(makeItred)