From 4c8217bcf65ac10229450301e373cd7d475ad880 Mon Sep 17 00:00:00 2001 From: Christian Paminger Date: Fri, 15 Feb 2008 11:37:27 +0000 Subject: [PATCH] --- include/wochenplan.class.php | 6 +- include/zeitwunsch.class.php | 151 ++++++++++++++++------------------- 2 files changed, 71 insertions(+), 86 deletions(-) diff --git a/include/wochenplan.class.php b/include/wochenplan.class.php index 5ff28e982..3193cfdb1 100644 --- a/include/wochenplan.class.php +++ b/include/wochenplan.class.php @@ -887,7 +887,7 @@ class wochenplan // Update Von $updatevon=array_unique($updatevon); sort($updatevon); - $updatevonam='Ge??ndert von '; + $updatevonam='Geaendert von '; foreach ($updatevon as $u) $updatevonam.=$u.', '; @@ -897,7 +897,7 @@ class wochenplan $updatevonam.='am '; foreach ($updateamum as $u) $updatevonam.=$u.' '; - //$updatevonam='Ge??ndert von '.$updatevon.', am '.$updateamum; + //$updatevonam='Geaendert von '.$updatevon.', am '.$updateamum; // Blinken oder nicht ? if ($kollision) @@ -1464,7 +1464,7 @@ class wochenplan /************************************************************************** - * @brief Funktion draw_week_csv Stundenplan im XUL-Format + * @brief Funktion draw_week_csv Stundenplan im CSV-Format * * @param target Ziel-System zB Outlook * diff --git a/include/zeitwunsch.class.php b/include/zeitwunsch.class.php index f1b9de517..273e2c426 100644 --- a/include/zeitwunsch.class.php +++ b/include/zeitwunsch.class.php @@ -48,6 +48,7 @@ class zeitwunsch { $this->conn = $conn; + // Encoding if($unicode) $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; else @@ -59,17 +60,29 @@ class zeitwunsch return false; } + // ggf Mitarbeiter laden if($mitarbeiter_uid != null && $tag!=null && $stunde!=null) $this->load($mitarbeiter_uid, $tag, $stunde); + + $this->init(); } function init() { - $sql_query='SELECT min(stunde),max(stunde) FROM lehre.tbl_stunde'; - if(!$result_stunde=pg_query($this->conn, $sql_query)) - die(pg_last_error($this->conn)); - $this->min_stunde=pg_result($result_stunde,0,'min'); - $this->max_stunde=pg_result($result_stunde,0,'max'); + // Stundenraster abfragen + $sql='SELECT min(stunde) AS min_stunde,max(stunde) AS max_stunde FROM lehre.tbl_stunde;'; + if(!$result=pg_query($this->conn, $sql)) + { + $this->errormsg=pg_last_error($this->conn); + return false; + } + else + { + $row=pg_fetch_object($result); + $this->min_stunde=$row->min_stunde; + $this->max_stunde=$row->max_stunde; + } + return true; } // ********************************************************* @@ -188,8 +201,6 @@ class zeitwunsch $start=date('Y-m-d',$beginn); $ende=date('Y-m-d',jump_day($beginn,7)); - $erstestunde=1; - $letztestunde=16; // Zeitsperren abfragen $sql="SELECT vondatum,vonstunde,bisdatum,bisstunde FROM campus.tbl_zeitsperre @@ -207,30 +218,30 @@ class zeitwunsch for ($i=1;$i<=7;$i++) { $date_iso=date('Y-m-d',$beginn); - echo "\n".$date_iso."\n".$row->vondatum."\n"; + //echo "\n".$date_iso."\n".$row->vondatum."\n"; if ($date_iso>$row->vondatum && $date_iso<$row->bisdatum) - for ($j=$erstestunde;$j<=$letztestunde;$j++) + for ($j=$this->min_stunde;$j<=$this->max_stunde;$j++) $this->zeitwunsch[$i][$j]=-3; if ($date_iso==$row->vondatum && $date_iso<$row->bisdatum) { if (is_null($row->vonstunde)) - $row->vonstunde=$erstestunde; - for ($j=$row->vonstunde;$j<=$letztestunde;$j++) + $row->vonstunde=$this->min_stunde; + for ($j=$row->vonstunde;$j<=$this->max_stunde;$j++) $this->zeitwunsch[$i][$j]=-3; } if ($date_iso>$row->vondatum && $date_iso==$row->bisdatum) { if (is_null($row->bisstunde)) - $row->bisstunde=$letztestunde; - for ($j=$erstestunde;$j<=$row->bisstunde;$j++) + $row->bisstunde=$this->max_stunde; + for ($j=$this->min_stunde;$j<=$row->bisstunde;$j++) $this->zeitwunsch[$i][$j]=-3; } if ($date_iso==$row->vondatum && $date_iso==$row->bisdatum) { if (is_null($row->vonstunde)) - $row->vonstunde=$erstestunde; + $row->vonstunde=$this->min_stunde; if (is_null($row->bisstunde)) - $row->bisstunde=$letztestunde; + $row->bisstunde=$this->max_stunde; for ($j=$row->vonstunde;$j<=$row->bisstunde;$j++) $this->zeitwunsch[$i][$j]=-3; } @@ -245,11 +256,11 @@ class zeitwunsch /** * Zeitwunsch der Personen in Lehreinheiten laden - * @return array mit Fachbereichen oder false=fehler + * @return true oder false */ function loadZwLE($le_id,$datum=null) { - $this->init(); + //$this->init(); // SUB-Select fuer LVAs $sql_query_leid=''; $sql_query_le='SELECT DISTINCT mitarbeiter_uid FROM campus.vw_lehreinheit WHERE '; @@ -272,85 +283,59 @@ class zeitwunsch while ($row=pg_fetch_object($result)) $this->zeitwunsch[$row->tag][$row->stunde]=$row->gewicht; + // *********************************************************** // Zeitsperren fuer die aktuelle Woche holen - if ($datum!=null) + + if (!is_null($datum)) { $beginn=montag($datum); - $ende=jump_day($beginn,7); - $beginniso=date("Y-m-d",$beginn); - $endeiso=date("Y-m-d",$ende); - $sql_query="SELECT vondatum,vonstunde,bisdatum,bisstunde - FROM campus.tbl_zeitsperre - WHERE mitarbeiter_uid IN ($sql_query_le) - AND vondatum<='$endeiso' AND bisdatum>'$beginniso'"; - //echo $sql_query; + $start=date('Y-m-d',$beginn); + $ende=date('Y-m-d',jump_day($beginn,7)); + // Zeitsperren abfragen - if(!$result=pg_query($this->conn, $sql_query)) + $sql="SELECT vondatum,vonstunde,bisdatum,bisstunde + FROM campus.tbl_zeitsperre + WHERE mitarbeiter_uid IN ($sql_query_le) AND vondatum<='$ende' AND bisdatum>'$start'"; + if(!$result=pg_query($this->conn, $sql)) { $this->errormsg=pg_last_error($this->conn); return false; } 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,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 - $stundebeginn=$this->min_stunde; - if ($ende>$endeDB) - $ende=$endeDB; - else - $stundeende=$this->max_stunde; - $tagbeginn=date("w",$beginn); - $tagende=date("w",$ende); - if ($tagende==0) + $beginn=montag($datum); + for ($i=1;$i<=7;$i++) { - $tagende=6; - $stundeende=$this->max_stunde; - } - 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++) + $date_iso=date('Y-m-d',$beginn); + //echo "\n".$date_iso."\n".$row->vondatum."\n"; + if ($date_iso>$row->vondatum && $date_iso<$row->bisdatum) + for ($j=$this->min_stunde;$j<=$this->max_stunde;$j++) + $this->zeitwunsch[$i][$j]=-3; + if ($date_iso==$row->vondatum && $date_iso<$row->bisdatum) { - if ($first) - { - $h=$stundebeginn; - $first=false; - } - 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; - } + if (is_null($row->vonstunde)) + $row->vonstunde=$this->min_stunde; + for ($j=$row->vonstunde;$j<=$this->max_stunde;$j++) + $this->zeitwunsch[$i][$j]=-3; } + if ($date_iso>$row->vondatum && $date_iso==$row->bisdatum) + { + if (is_null($row->bisstunde)) + $row->bisstunde=$this->max_stunde; + for ($j=$this->min_stunde;$j<=$row->bisstunde;$j++) + $this->zeitwunsch[$i][$j]=-3; + } + if ($date_iso==$row->vondatum && $date_iso==$row->bisdatum) + { + if (is_null($row->vonstunde)) + $row->vonstunde=$this->min_stunde; + if (is_null($row->bisstunde)) + $row->bisstunde=$this->max_stunde; + for ($j=$row->vonstunde;$j<=$row->bisstunde;$j++) + $this->zeitwunsch[$i][$j]=-3; + } + $beginn=jump_day($beginn,1); + } } } return true;