diff --git a/cis/private/profile/urlaubstool.php b/cis/private/profile/urlaubstool.php index 48f45794d..acff3dbb9 100644 --- a/cis/private/profile/urlaubstool.php +++ b/cis/private/profile/urlaubstool.php @@ -20,7 +20,6 @@ * Rudolf Hangl . */ - //DB Verbindung herstellen require_once('../../config.inc.php'); require_once('../../../include/functions.inc.php'); require_once('../../../include/zeitsperre.class.php'); @@ -28,7 +27,8 @@ require_once('../../../include/resturlaub.class.php'); require_once('../../../include/person.class.php'); require_once('../../../include/benutzer.class.php'); - + + //DB Verbindung herstellen if (!$conn = @pg_pconnect(CONN_STRING)) die('Es konnte keine Verbindung zum Server aufgebaut werden.'); @@ -38,13 +38,14 @@ $resturlaubstage = '0'; $mehrarbeitsstunden = '0'; $anspruch = '25'; $zaehl=1; -$tage=array(); //Array Tage für Kalenderanzeige +$tage=array(); //Array Tage für Kalenderanzeige $hgfarbe=array_fill(0,44,'white'); //Array mit Hintegrundfarben der Kalenderfelder $monatsname = array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"); -$jahre = array(); //Array Jahreszahlen für Auswahl (immer aktuelles Jahr und die 4 nächsten Jahre) +$jahre = array(); //Array Jahreszahlen für Auswahl (immer aktuelles Jahr und die 4 nächsten Jahre) $akette=array_fill(0,2,0); $ekette=array_fill(0,2,0); $spmonat=array(); +$hgchange=false; $wvon=''; $wbis=''; $t=getdate(); @@ -70,141 +71,30 @@ else $wjahr=0; } -if(isset($_GET['spmonat']) || isset($_POST['spmonat'])) +if (isset($_GET['kastl']) || isset($_POST['kastl'])) + $kastl=(isset($_GET['kastl'])?$_GET['kastl']:$_POST['kastl']); +else { - $spmonat=explode(",",$_GET['spmonat']); - $mbeginn=mktime(0, 0, 0, ($wmonat+1) , 1, $jahre[$wjahr]); - $ttt=getdate($mbeginn); - $wotag="$ttt[wday]"; - if ($wotag==0) - { - $wotag=7; - } - $mende=cal_days_in_month(CAL_GREGORIAN, ($wmonat+1), $jahre[$wjahr]); - $wvon=date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , 1, $jahre[$wjahr])); - $wbis=date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $mende, $jahre[$wjahr])); - for($i=1,$j=0;$i<44;$i++) - { - //ketten bilden - if($spmonat[$i]=='lime') - { - if($akette[$j]==0 || $spmonat[$i-1]!='lime') - { - $j++; - $akette[$j]=$i-$wotag+1; - $ekette[$j]=$i-$wotag+1; - } - elseif($spmonat[$i-1]=='lime') - { - $ekette[$j]=$i-$wotag+1; - } - } - } - //print_r($akette); - //print_r($ekette); - if($ekette[1]!=0) - { - //Unterscheidung anhand bestehender Einträge - //Urlaub vom Vormonat überragend - $qry="SELECT * FROM campus.tbl_zeitsperre WHERE zeitsperretyp_kurzbz='Urlaub' AND mitarbeiter_uid='".$uid."' AND vondatum<='".$wvon."' AND bisdatum>='".$wvon."' AND bisdatum<='".$wbis."' ;"; - if($result = pg_query($conn, $qry)) - { - if(pg_num_rows($result)==1) - { - if($row = pg_fetch_object($result)) - { - if($akette[1]==1) - { - $qryupd="UPDATE campus.tbl_zeitsperre SET bisdatum='".date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $ekette[1], $jahre[$wjahr]))."' WHERE zeitsperre_id='".$row->zeitsperre_id."';"; - $result = pg_query($conn, $qryupd); - $akette[1]=0; - $ekette[1]=0; - //echo "
".$qryupd; - } - } - } - } - //Urlaub ins nächste Monat überragend - $qry="SELECT * FROM campus.tbl_zeitsperre WHERE zeitsperretyp_kurzbz='Urlaub' AND mitarbeiter_uid='".$uid."' AND bisdatum>='".$wbis."' AND vondatum>='".$wvon."' AND vondatum<='".$wbis."' ;"; - if($result = pg_query($conn, $qry)) - { - if(pg_num_rows($result)==1) - { - if($row = pg_fetch_object($result)) - { - if($ekette[count($akette)-1]==$mende) - { - $qryupd="UPDATE campus.tbl_zeitsperre SET vondatum='".date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $akette[count($akette)-1], $jahre[$wjahr]))."' WHERE zeitsperre_id='".$row->zeitsperre_id."';"; - $result = pg_query($conn, $qryupd); - $akette[count($akette)-1]=0; - $ekette[count($ekette)-1]=0; - //print_r($akette); - //print_r($ekette); - //echo "
".$qryupd; - - } - } - } - } - //Urlaub überragt beide Monatsenden - $qry="SELECT * FROM campus.tbl_zeitsperre WHERE zeitsperretyp_kurzbz='Urlaub' AND mitarbeiter_uid='".$uid."' AND bisdatum>='".$wbis."' AND vondatum<='".$wvon."' ;"; - if($result = pg_query($conn, $qry)) - { - if($row = pg_fetch_object($result)) - { - //"Abschneiden" des Eintrags am Ende des vorigen Monats - $qryupd="UPDATE campus.tbl_zeitsperre SET - bisdatum='".date("Y-m-d",mktime(0, 0, 0, ($wmonat) , cal_days_in_month(CAL_GREGORIAN, ($wmonat), $jahre[$wjahr]), $jahre[$wjahr]))."' - WHERE zeitsperre_id='".$row->zeitsperre_id."';"; - $result = pg_query($conn, $qryupd); - //Einfügen eines Eintrags ab dem 1Tag des nächsten Monats - $qryins="INSERT INTO campus.tbl_zeitsperre ( - zeitsperretyp_kurzbz,mitarbeiter_uid,bezeichnung,vondatum,vonstunde,bisdatum,bisstunde,vertretung_uid, - updateamum,updatevon,insertamum,insertvon, erreichbarkeit_kurzbz, freigabeamum, freigabevon) VALUES ( - 'Urlaub','".$uid."', 'Urlaub', '".date("Y-m-d",mktime(0, 0, 0, ($wmonat+2) , 1, $jahre[$wjahr]))."', - NULL,'".$row->bisdatum."',NULL,NULL,NULL,NULL,now(),'".$uid."','n',NULL,NULL - )"; - $result = pg_query($conn, $qryins); - //echo "
".$qryupd; - //echo "
"."1-".$qryins; - //Einfügen des Urlaubs innerhalb des Monats - for($i=0;$i"."2-".$qryins; - } - } - } - } - //Urlaub innerhalb des Monats - $qrydel="DELETE FROM campus.tbl_zeitsperre WHERE zeitsperretyp_kurzbz='Urlaub' AND mitarbeiter_uid='".$uid."' AND vondatum>='".$wvon."' AND bisdatum<='".$wbis."' ;"; - $result = pg_query($conn, $qrydel); - //echo "
".$qrydel; - for($i=0;$i"."3-".$qryins; - } - } - } - + $kastl=0; } + +if (isset($_GET['hgfarbe'])) +{ + $hgfarbe=explode(",",$_GET['hgfarbe']); +} +else +{ + + if (!isset($_GET['spmonat'])) + { + for($i=0;$i<44;$i++) + { + if(!isset($hgfarbe[$i]) || $hgfarbe[$i]!='lime') + $hgfarbe[$i]='white'; + } + } +} + //if ((isset($_GET['wmonat']) || isset($_POST['wmonat']))&&(isset($_GET['wjahr']) || isset($_POST['wjahr']))) if ((isset($wmonat) || isset($wmonat))&&(isset($wjahr) || isset($wjahr))) { @@ -241,31 +131,170 @@ if ((isset($wmonat) || isset($wmonat))&&(isset($wjahr) || isset($wjahr))) } } } - //print_r($hgfarbe); } } -if (isset($_GET['kastl']) || isset($_POST['kastl'])) - $kastl=(isset($_GET['kastl'])?$_GET['kastl']:$_POST['kastl']); -else -{ - $kastl=0; -} - -if (isset($_GET['hgfarbe'])) -{ - $hgfarbe=explode(",",$_GET['hgfarbe']); -} -else +if(isset($_GET['spmonat']) || isset($_POST['spmonat'])) { + $spmonat=explode(",",$_GET['spmonat']); + //print_r($spmonat); + //echo'
'; + //print_r($hgfarbe); for($i=0;$i<44;$i++) - { - if(!isset($hgfarbe[$i]) || $hgfarbe[$i]!='lime') - $hgfarbe[$i]='white'; + { + $hgchange=false; + if($spmonat[$i]!==$hgfarbe[$i]) + { + $hgchange=true; + break; + } + else + { + $hgchange=false; + } } + if ($hgchange) + { + $mbeginn=mktime(0, 0, 0, ($wmonat+1) , 1, $jahre[$wjahr]); + $ttt=getdate($mbeginn); + $wotag="$ttt[wday]"; + if ($wotag==0) + { + $wotag=7; + } + $mende=cal_days_in_month(CAL_GREGORIAN, ($wmonat+1), $jahre[$wjahr]); + $wvon=date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , 1, $jahre[$wjahr])); + $wbis=date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $mende, $jahre[$wjahr])); + for($i=1,$j=0;$i<44;$i++) + { + //ketten bilden + if($spmonat[$i]=='lime') + { + if($akette[$j]==0 || $spmonat[$i-1]!='lime') + { + $j++; + $akette[$j]=$i-$wotag+1; + $ekette[$j]=$i-$wotag+1; + } + elseif($spmonat[$i-1]=='lime') + { + $ekette[$j]=$i-$wotag+1; + } + } + } + //print_r($akette); + //print_r($ekette); + if($ekette[1]!=0) + { + //Unterscheidung anhand bestehender Einträge + //Urlaub vom Vormonat überragend + $qry="SELECT * FROM campus.tbl_zeitsperre WHERE zeitsperretyp_kurzbz='Urlaub' AND mitarbeiter_uid='".$uid."' AND vondatum<'".$wvon."' AND bisdatum>='".$wvon."' AND bisdatum<='".$wbis."' ;"; + if($result = pg_query($conn, $qry)) + { + if(pg_num_rows($result)==1) + { + if($row = pg_fetch_object($result)) + { + if($akette[1]==1) + { + $qryupd="UPDATE campus.tbl_zeitsperre SET bisdatum='".date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $ekette[1], $jahre[$wjahr]))."', updateamum=now(), updatevon='".$uid."' WHERE zeitsperre_id='".$row->zeitsperre_id."';"; + $result = pg_query($conn, $qryupd); + $akette[1]=0; + $ekette[1]=0; + //echo "
".$qryupd; + } + } + } + } + //Urlaub ins nächste Monat überragend + $qry="SELECT * FROM campus.tbl_zeitsperre WHERE zeitsperretyp_kurzbz='Urlaub' AND mitarbeiter_uid='".$uid."' AND bisdatum>'".$wbis."' AND vondatum>='".$wvon."' AND vondatum<='".$wbis."' ;"; + if($result = pg_query($conn, $qry)) + { + if(pg_num_rows($result)==1) + { + if($row = pg_fetch_object($result)) + { + if($ekette[count($akette)-1]==$mende) + { + $qryupd="UPDATE campus.tbl_zeitsperre SET vondatum='".date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $akette[count($akette)-1], $jahre[$wjahr]))."', updateamum=now(), updatevon='".$uid."' WHERE zeitsperre_id='".$row->zeitsperre_id."';"; + $result = pg_query($conn, $qryupd); + $akette[count($akette)-1]=0; + $ekette[count($ekette)-1]=0; + //print_r($akette); + //print_r($ekette); + //echo "
".$qryupd; + + } + } + } + } + //Urlaub überragt beide Monatsenden + $qry="SELECT * FROM campus.tbl_zeitsperre WHERE zeitsperretyp_kurzbz='Urlaub' AND mitarbeiter_uid='".$uid."' AND bisdatum>='".$wbis."' AND vondatum<='".$wvon."' ;"; + if($result = pg_query($conn, $qry)) + { + if($row = pg_fetch_object($result)) + { + //"Abschneiden" des Eintrags am Ende des vorigen Monats + $qryupd="UPDATE campus.tbl_zeitsperre SET + bisdatum='".date("Y-m-d",mktime(0, 0, 0, ($wmonat) , cal_days_in_month(CAL_GREGORIAN, ($wmonat), $jahre[$wjahr]), $jahre[$wjahr]))."', + updateamum=now(), updatevon='".$uid."' WHERE zeitsperre_id='".$row->zeitsperre_id."';"; + $result = pg_query($conn, $qryupd); + //Einfügen eines Eintrags ab dem 1Tag des nächsten Monats + $qryins="INSERT INTO campus.tbl_zeitsperre ( + zeitsperretyp_kurzbz,mitarbeiter_uid,bezeichnung,vondatum,vonstunde,bisdatum,bisstunde,vertretung_uid, + updateamum,updatevon,insertamum,insertvon, erreichbarkeit_kurzbz, freigabeamum, freigabevon) VALUES ( + 'Urlaub','".$uid."', 'Urlaub', '".date("Y-m-d",mktime(0, 0, 0, ($wmonat+2) , 1, $jahre[$wjahr]))."', + NULL,'".$row->bisdatum."',NULL,NULL,NULL,NULL,now(),'".$uid."','n',NULL,NULL + )"; + $result = pg_query($conn, $qryins); + //echo "
".$qryupd; + //echo "
"."1-".$qryins; + //Einfügen des Urlaubs innerhalb des Monats + for($i=0;$i"."2-".$qryins; + } + } + } + } + //Urlaub innerhalb des Monats + $qrydel="DELETE FROM campus.tbl_zeitsperre WHERE zeitsperretyp_kurzbz='Urlaub' AND mitarbeiter_uid='".$uid."' AND vondatum>='".$wvon."' AND bisdatum<='".$wbis."' ;"; + $result = pg_query($conn, $qrydel); + //echo "
".$qrydel; + for($i=0;$i"."3-".$qryins; + } + } + } + } + $hgfarbe=explode(",",$_GET['spmonat']); } + + + + + $PHP_SELF = $_SERVER['PHP_SELF']; $datum_obj = new datum(); @@ -352,7 +381,7 @@ for($i=0;$i<5;$i++) $content.=""; } $content.=''; -$content.=" "; +$content.=" "; $content.=''; //Tage