diff --git a/include/lehreinheit.class.php b/include/lehreinheit.class.php
index 6a272e196..4c03dd2c6 100644
--- a/include/lehreinheit.class.php
+++ b/include/lehreinheit.class.php
@@ -479,6 +479,8 @@ class lehreinheit
*************************************************************************/
function check_lva($datum,$stunde,$ort,$stpl_table)
{
+ $ignore_reservation=false;
+ $ignore_zeitsperre=false;
// Parameter Checken
// Bezeichnung der Stundenplan-Tabelle und des Keys
$stpl_id=$stpl_table.TABLE_ID;
@@ -511,7 +513,83 @@ class lehreinheit
$anzahl=pg_numrows($erg_stpl);
//Check
if ($anzahl==0)
+ {
+ // Reservierungen pruefen?
+ if (!$ignore_reservation)
+ {
+ // Datenbank abfragen ( studiengang_kz, titel, beschreibung )
+ //Lektoren SQL
+ $sql_lkt='';
+ foreach ($this->mitarbeiter_uid as $lkt)
+ $sql_lkt.="OR uid='$lkt' ";
+ $sql_lkt=substr($sql_lkt,3);
+ $sql_lkt="(($sql_lkt) AND uid!='_DummyLektor')";
+ $sql_query="SELECT reservierung_id AS id, uid AS lektor, stg_kurzbz, ort_kurzbz, semester, verband, gruppe, gruppe_kurzbz, datum, stunde
+ FROM lehre.vw_reservierung
+ WHERE datum='$datum' AND stunde=$stunde AND (ort_kurzbz='$ort' OR $sql_lkt)";
+ // Verband SQL
+ //$sql_query.="(studiengang_kz=$this->studiengang_kz AND semester=$this->sem";
+ //if ($this->ver!=null && $this->ver!='' && $this->ver!=' ')
+ // $sql_query.=" AND (verband='$this->ver' OR verband IS NULL OR verband='' OR verband=' ')";
+ //if ($this->grp!=null && $this->grp!='' && $this->grp!=' ')
+ // $sql_query.=" AND (gruppe='$this->grp' OR gruppe IS NULL OR gruppe='' OR gruppe=' ')";
+ //if ($this->gruppe_kurzbz!=null && $this->gruppe_kurzbz!='' && $this->gruppe_kurzbz!=' ')
+ // $sql_query.=" AND (gruppe_kurzbz='$this->gruppe_kurzbz')";
+ //$sql_query.="))";
+
+ //echo $sql_query.'
';
+ if (! $erg_res=pg_query($this->conn, $sql_query))
+ {
+ $this->errormsg=$sql_query.pg_last_error($this->conn);
+ return false;
+ }
+ $anz_res=pg_numrows($erg_res);
+ //Check
+ if ($anz_res==0)
+ {
+ // Zeitsperren pruefen?
+ if (!$ignore_zeitsperre)
+ {
+ // Datenbank abfragen ( studiengang_kz, titel, beschreibung )
+ //Lektoren SQL
+ $sql_lkt='';
+ foreach ($this->mitarbeiter_uid as $lkt)
+ $sql_lkt.="OR mitarbeiter_uid='$lkt' ";
+ $sql_lkt=substr($sql_lkt,3);
+ $sql_query="SELECT * FROM campus.tbl_zeitsperre
+ WHERE ($sql_lkt) AND
+ ( (vondatum<'$datum' AND bisdatum>'$datum')
+ OR (vondatum='$datum' AND bisdatum='$datum' AND vonstunde<=$stunde AND bisstunde>=$stunde)
+ OR (vondatum='$datum' AND bisdatum>'$datum' AND vonstunde<=$stunde)
+ OR (vondatum<'$datum' AND bisdatum='$datum' AND bisstunde>=$stunde) )";
+ //echo $sql_query.'
';
+ if (! $erg_zs=pg_query($this->conn, $sql_query))
+ {
+ $this->errormsg=$sql_query.pg_last_error($this->conn);
+ return false;
+ }
+ $anz_zs=pg_numrows($erg_zs);
+ //Check
+ if ($anz_zs==0)
+ return true;
+ else
+ {
+ $row=pg_fetch_object($erg_zs);
+ $this->errormsg="Kollision (Zeitsperre): $row->zeitsperre_id|$row->mitarbeiter_uid|$row->zeitsperretyp_kurzbz|$row->bezeichnung|$row->vondatum/$row->vonstunde-$row->bisdatum/$row->bisstunde - $row->vertretung_uid";
+ return false;
+ }
+ }
+ return true;
+ }
+ else
+ {
+ $row=pg_fetch_object($erg_res);
+ $this->errormsg="Kollision (Reservierung): $row->id|$row->lektor|$row->ort_kurzbz|$row->stg_kurzbz-$row->semester$row->verband$row->gruppe$row->gruppe_kurzbz - $row->datum/$row->stunde";
+ return false;
+ }
+ }
return true;
+ }
else
{
$row=pg_fetch_row($erg_stpl);
@@ -612,7 +690,7 @@ class lehreinheit
//return false;
if(!($erg=pg_query($this->conn, $sql_query)))
{
- $this->errormsg=pg_errormessage($this->conn);
+ $this->errormsg=pg_errormessage($this->conn).$sql_query;
return false;
}
$num_rows=pg_numrows($erg);
@@ -784,4 +862,4 @@ class lehreinheit
}
}
-?>
\ No newline at end of file
+?>
diff --git a/include/wochenplan.class.php b/include/wochenplan.class.php
index 295e1d556..f8a5bf53e 100644
--- a/include/wochenplan.class.php
+++ b/include/wochenplan.class.php
@@ -657,7 +657,7 @@ class wochenplan
*/
function draw_week_xul($semesterplan,$uid, $wunsch=null)
{
- echo $wunsch;
+ //echo $wunsch;
global $cfgStdBgcolor;
$count=0;
$berechtigung=new benutzerberechtigung($this->conn);
diff --git a/include/zeitwunsch.class.php b/include/zeitwunsch.class.php
index a75c7a4e7..e338bd09d 100644
--- a/include/zeitwunsch.class.php
+++ b/include/zeitwunsch.class.php
@@ -220,28 +220,36 @@ class zeitwunsch
if ($datum!=null)
{
$beginn=montag($datum);
- $ende=jump_day($beginn,6);
+ $ende=jump_day($beginn,7);
$beginniso=date("Y-m-d",$beginn);
$endeiso=date("Y-m-d",$ende);
- $sql_query="SELECT min(vondatum) AS vondatum,min(vonstunde) AS vonstunde,
- min(bisdatum) AS bisdatum,min(bisstunde) AS bisstunde
+ $sql_query="SELECT vondatum,vonstunde,bisdatum,bisstunde
FROM campus.tbl_zeitsperre
WHERE mitarbeiter_uid IN ($sql_query_le)
- AND vondatum<'$endeiso' AND bisdatum>'$beginniso'";
- // Zeitwuensche abfragen
+ AND vondatum<='$endeiso' AND bisdatum>'$beginniso'";
+ //echo $sql_query;
+ // Zeitsperren abfragen
if(!$result=pg_query($this->conn, $sql_query))
{
$this->errormsg=pg_last_error($this->conn);
return false;
}
- else if (!$row=pg_fetch_object($result));
+ while ($row=pg_fetch_object($result))
{
+ echo "\nTagBeginn: ".$row->vondatum;
+ echo "\nTagEnde: ".$row->bisdatum;
+ echo "\nStundeBeginn: ".$row->vonstunde;
+ echo "\nStundeEnde: ".$row->bisstunde;
if ($row->vonstunde==null || $row->vondatum==null)
return true;
$stundebeginn=$row->vonstunde;
$stundeende=$row->bisstunde;
- $beginnDB=mktime(0,0,0,substr($row->vondatum,6,2),substr($row->vondatum,9,2),substr($row->vondatum,0,4));
- $endeDB=mktime(0,0,0,substr($row->bisdatum,6,2),substr($row->bisdatum,9,2),substr($row->bisdatum,0,4));
+ $beginnDB=mktime(0,0,0,substr($row->vondatum,5,2),substr($row->vondatum,8,2),substr($row->vondatum,0,4));
+ $endeDB=mktime(0,0,0,substr($row->bisdatum,5,2),substr($row->bisdatum,8,2),substr($row->bisdatum,0,4));
+ echo "\nTagBeginnDB: ".$beginnDB;
+ echo "\nTagEndeDB: ".$endeDB;
+ echo "\nTagBeginn: ".$beginn;
+ echo "\nTagEnde: ".$ende;
if ($beginn<$beginnDB)
$beginn=$beginnDB;
else
@@ -257,8 +265,12 @@ class zeitwunsch
$tagende=6;
$stundeende=$this->max_stunde;
}
- $first=true;
- for ($t=$tagbeginn;$t<=$tagende;$t++)
+ echo "\nTagBeginn: ".$tagbeginn;
+ echo "\nTagEnde: ".$tagende;
+ echo "\nStundeBeginn: ".$stundebeginn;
+ echo "\nStundeEnde: ".$stundeende;
+ $first=false;
+ for ($t=1;$t<=6;$t++)
for ($h=$this->min_stunde;$h<=$this->max_stunde;$h++)
{
if ($first)
@@ -266,8 +278,22 @@ class zeitwunsch
$h=$stundebeginn;
$first=false;
}
- if (!($t==$tagende && $h>$stundeende))
- $this->zeitwunsch[$t][$h]=-3;
+ if ($t>=$tagbeginn && $t<=$tagende)
+ if ($t==$tagbeginn && $h>=$stundebeginn && ($t<$tagende || $h<=$stundeende))
+ {
+ $this->zeitwunsch[$t][$h]=-3;
+ echo 'Zeitsperre eingetragen:'.$t.$h;
+ }
+ elseif($t==$tagende && $h<=$stundeende && ($t>$tagbeginn || $h>=$stundebeginn))
+ {
+ $this->zeitwunsch[$t][$h]=-3;
+ echo 'Zeitsperre eingetragen:'.$t.$h;
+ }
+ elseif ($t>$tagbeginn && $t<$tagende)
+ {
+ $this->zeitwunsch[$t][$h]=-3;
+ echo 'Zeitsperre eingetragen:'.$t.$h;
+ }
}
}
}
@@ -275,4 +301,4 @@ class zeitwunsch
}
}
-?>
\ No newline at end of file
+?>