, * Andreas Oesterreicher and * Rudolf Hangl . */ /** * Seite zum Eintragen von Urlaubstagen */ require_once('../../../config/cis.config.inc.php'); require_once('../../../include/functions.inc.php'); require_once('../../../include/zeitsperre.class.php'); require_once('../../../include/datum.class.php'); require_once('../../../include/person.class.php'); require_once('../../../include/benutzer.class.php'); require_once('../../../include/mitarbeiter.class.php'); require_once('../../../include/mail.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/globals.inc.php'); require_once('../../../include/sprache.class.php'); require_once('../../../include/zeitaufzeichnung.class.php'); $sprache = getSprache(); $lang = new sprache(); $lang->load($sprache); $p = new phrasen($sprache); if (!$db = new basis_db()) die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung')); $content_resturlaub = ''; $resturlaubstage = '0'; $mehrarbeitsstunden = '0'; $anspruch = '25'; $zaehl=1; $tage=array(); //Array Tage für Kalenderanzeige $hgfarbe=array_fill(0,44,'#E9ECEE'); //Array mit Hintegrundfarben der Kalenderfelder $datensatz=array_fill(0,44,0); $freigabevon=array(); $freigabeamum=array(); $vertretung_uid=array(); $erreichbarkeit_kurzbz=array(); /* Monatsnamenarray kommt aus globals.inc.php */ //$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) $akette=array_fill(0,1,0); $ekette=array_fill(0,1,0); $links=''; $rechts=''; $tag=array(); $vertretung=''; $erreichbar=''; $vgmail=''; $vtmail=''; $spmonat=array(); $hgchange=false; $wvon=''; $wbis=''; $datensatz=''; $t=getdate(); $uid = get_uid(); $taste=0; $ma= new mitarbeiter(); for($i=0;$i<6;$i++) { $jahre[$i]="$t[year]"+($i-1); } if (isset($_GET['wtag']) || isset($_POST['wtag'])) { $wtag=(isset($_GET['wtag'])?$_GET['wtag']:$_POST['wtag']); } else { $wtag=date("d.m.Y"); } if (isset($_GET['wmonat']) || isset($_POST['wmonat'])) { $wmonat=(isset($_GET['wmonat'])?$_GET['wmonat']:$_POST['wmonat']); } else { $wmonat="$t[mon]"-1; } if (isset($_GET['wjahr']) || isset($_POST['wjahr'])) { $wjahr=(isset($_GET['wjahr'])?$_GET['wjahr']:$_POST['wjahr']); } else { $wjahr=1; } 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'])) { for($i=0;$i<44;$i++) { if(!isset($hgfarbe[$i]) || $hgfarbe[$i]!='#FFFC7F') $hgfarbe[$i]='#E9ECEE'; } } } if (isset($_GET['links_x']) || isset($_POST['links_x'])) { if ($wmonat==0) { if($wjahr>0) { $wmonat=11; $wjahr=$wjahr-1; } } else { $wmonat=$wmonat-1; $wjahr=$wjahr; } } if (isset($_GET['rechts_x']) || isset($_POST['rechts_x'])) { if($wmonat==11) { if($wjahr<4) { $wmonat=0; $wjahr=$wjahr+1; } } else { $wmonat=$wmonat+1; $wjahr=$wjahr; } } //Bereits freigegebenen Eintrag löschen //Eintragung löschen if((isset($_GET['delete']) && isset($_GET['informSupervisor'])) || (isset($_POST['delete']) && isset($_POST['informSupervisor']))) { $zeitsperre = new zeitsperre(); $zeitsperre->load($_GET['delete']); $vondatum = $zeitsperre->getVonDatum(); $bisdatum = $zeitsperre->getBisDatum(); if(!$zeitsperre->delete($_GET['delete'])) echo $zeitsperre->errormsg; //Mail an Vorgesetzten $prsn = new person(); $vorgesetzter = $ma->getVorgesetzte($uid); if($vorgesetzter) { $to=''; $fullName =''; foreach($ma->vorgesetzte as $vg) { if($to!='') { $to.=', '.$vg.'@'.DOMAIN; $name = $prsn->getFullNameFromBenutzer($vg); $fullName.=', '.$name; } else { $to.=$vg.'@'.DOMAIN; $name = $prsn->getFullNameFromBenutzer($vg); $fullName.=$name; } } $benutzer = new benutzer(); $benutzer->load($uid); $message = $p->t('urlaubstool/diesIstEineAutomatischeMail')."\n". $p->t('urlaubstool/xHatUrlaubGeloescht',array($benutzer->nachname,$benutzer->vorname)).":\n"; $message.= $p->t('urlaubstool/von')." ".date("d.m.Y", strtotime($vondatum))." ".$p->t('urlaubstool/bis')." ".date("d.m.Y", strtotime($bisdatum))."\n"; $mail = new mail($to, 'vilesci@'.DOMAIN,$p->t('urlaubstool/freigegebenerUrlaubGeloescht'), $message); if($mail->send()) { $vgmail="".$p->t('urlaubstool/VorgesetzteInformiert',array($fullName)).""; } else { $vgmail="
".$p->t('urlaubstool/fehlerBeimSendenAufgetreten',array($fullName))."!"; } } else { $vgmail="
".$p->t('urlaubstool/konnteKeinFreigabemailVersendetWerden').""; } } //Eintragung löschen if((isset($_GET['delete']) || isset($_POST['delete']))) { $zeitsperre = new zeitsperre(); if(!$zeitsperre->delete($_GET['delete'])) echo $zeitsperre->errormsg; } //Eintragung speichern if(isset($_GET['speichern']) && isset($_GET['wtag'])) { $vertretung = $_GET['vertretung_uid']; $bn = new benutzer(); if($vertretung != '' && !$bn->load($vertretung)) { $vgmail.='
'.$p->t('zeitsperre/vertretungNichtKorrekt').''; $error = true; } else { $erreichbar=$_GET['erreichbar']; if($erreichbar=='') { $erreichbar='n'; } $wtag=$_GET['wtag']; $akette[0]=$wtag[0]; $ekette[0]=$wtag[0]; for($i=1,$j=0;$iexistsZeitaufzeichnung($uid, $vonDatum->format('d.m.Y'), $bisDatum->format('d.m.Y'))) { $error = true; $vgmail .= '
'.$p->t('zeitsperre/zeitaufzeichnungVorhanden'). ' '. $vonDatum->format('d.m.Y'). ' - '. $bisDatum->format('d.m.Y'). ''; break; } } //Prüfen ob eine ganztägige Zeitsperre eingetragen ist und ggf abbrechen $daysToCheck = array(); for ($i = 0; $i < count($akette); $i++) { $zeitsperre = new zeitsperre(); $vonDatum = new DateTime($akette[$i]); $bisDatum = new DateTime($ekette[$i]); //add here to array, weil in der foreach-Schleife, das bisdatum nicht inkludiert ist $daysToCheck[] = $bisDatum->format("Y-m-d"); $daterange = new DatePeriod($vonDatum, new DateInterval('P1D'), $bisDatum); foreach($daterange as $date) { $daysToCheck[] = $date->format("Y-m-d"); } } foreach ($daysToCheck AS $date) { $zeitsperre->getSperreByDate($uid, $date, null, zeitsperre::NUR_BLOCKIERENDE_ZEITSPERREN); foreach ($zeitsperre->result as $z) { if ($z->zeitsperretyp_kurzbz) { $error = true; $z->zeitsperretyp_kurzbz == 'Urlaub' ? $vgmail.='
'.$p->t('zeitsperre/urlaubBereitsEingetragen').'' : $vgmail .= '
'.$p->t('zeitsperre/zeitsperreEingetragen',[$date, $z->zeitsperretyp_kurzbz]). ''; break; } } } } if(!$error) { for($i=0;$inew = true; $zeitsperre->zeitsperretyp_kurzbz='Urlaub'; $zeitsperre->mitarbeiter_uid=$uid; $zeitsperre->bezeichnung='Urlaub'; $zeitsperre->vondatum=$akette[$i]; $zeitsperre->vonstunde=''; $zeitsperre->bisdatum=$ekette[$i]; $zeitsperre->bisstunde=''; $zeitsperre->vertretung_uid=$vertretung; $zeitsperre->updateamum=''; $zeitsperre->updatevon=''; $zeitsperre->insertamum=date('Y-m-d H:i:s'); $zeitsperre->insertvon=$uid; $zeitsperre->erreichbarkeit=$erreichbar; $zeitsperre->freigabeamum=''; $zeitsperre->freigabevon=''; if(!$zeitsperre->save()) { $error = true; echo $zeitsperre->errormsg; } } if(!$error) { //Mail an Vorgesetzten $prsn = new person(); $vorgesetzter = $ma->getVorgesetzte($uid); if($vorgesetzter) { $to=''; $fullName =''; foreach($ma->vorgesetzte as $vg) { if($to!='') { $to.=', '.$vg.'@'.DOMAIN; $name = $prsn->getFullNameFromBenutzer($vg); $fullName.=', '.$name; } else { $to.=$vg.'@'.DOMAIN; $name = $prsn->getFullNameFromBenutzer($vg); $fullName.=$name; } } $benutzer = new benutzer(); $benutzer->load($uid); $message = $p->t('urlaubstool/diesIstEineAutomatischeMail')."\n". $p->t('urlaubstool/xHatNeuenUrlaubEingetragen',array($benutzer->nachname,$benutzer->vorname)).":\n"; for($i=0;$it('urlaubstool/von')." ".date("d.m.Y", strtotime($akette[$i]))." ".$p->t('urlaubstool/bis')." ".date("d.m.Y", strtotime($ekette[$i]))."\n"; } //Ab September wird das neue Jahr uebergeben if(date("m",strtotime($akette[0]))>=9) $jahr = date("Y", strtotime($akette[0]))+1; else $jahr = date("Y", strtotime($akette[0])); $message.="\n".$p->t('urlaubstool/sieKoennenDiesenUnterFolgenderAdresseFreigeben').":\n". APP_ROOT."cis/private/profile/urlaubsfreigabe.php?uid=$uid&year=".$jahr; $mail = new mail($to, 'vilesci@'.DOMAIN,$p->t('urlaubstool/freigabeansuchenUrlaub'), $message); if($mail->send()) { $vgmail="".$p->t('urlaubstool/freigabemailWurdeVersandt',array($fullName)).""; } else { $vgmail="
".$p->t('urlaubstool/fehlerBeimSendenAufgetreten',array($to))."!"; } } else { $vgmail="
".$p->t('urlaubstool/konnteKeinFreigabemailVersendetWerden').""; } if($vertretung=='') { $vtmail="
".$p->t('urlaubstool/keineVertretungEingetragen').""; } } } } //Eintragungen laden if ((isset($wmonat) || isset($wmonat))&&(isset($wjahr) || isset($wjahr))) { //Urlaubstageage markieren $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]); if($wmonat==0) { $mendev = cal_days_in_month(CAL_GREGORIAN, 12, $jahre[$wjahr]-1); } else { $mendev = cal_days_in_month(CAL_GREGORIAN, ($wmonat), $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])); $ttt=getdate(mktime(0, 0, 0, ($wmonat+1) , $mende, $jahre[$wjahr])); if($wmonat==0) { $wvon=date("Y-m-d",mktime(0, 0, 0, 12 , $mendev-($wotag-1), ($jahre[$wjahr])-1)); } else { $wvon=date("Y-m-d",mktime(0, 0, 0, ($wmonat) , $mendev-($wotag-1), ($jahre[$wjahr]))); } if($wmonat==11) { $wbis=date("Y-m-d",mktime(0, 0, 0, 1 , (7-($ttt['wday']==0?7:$ttt['wday'])), $jahre[$wjahr]+1)); } else { $wbis=date("Y-m-d",mktime(0, 0, 0, ($wmonat+2) , (7-($ttt['wday']==0?7:$ttt['wday'])), $jahre[$wjahr])); } $qry="SELECT * FROM campus.tbl_zeitsperre WHERE zeitsperretyp_kurzbz='Urlaub' AND mitarbeiter_uid=".$db->db_add_param($uid)." AND (vondatum<=".$db->db_add_param($wbis)." AND bisdatum>".$db->db_add_param($wvon).") "; //echo "
"."db:".$qry; if($result = $db->db_query($qry)) { while($row = $db->db_fetch_object($result)) { //echo " ".$row->vondatum; //echo "-".$row->bisdatum; for($i=1;$i<=$mende+($wotag-1)+(7-($ttt['wday']==0?7:$ttt['wday']));$i++) { if(date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $i-$wotag+1, $jahre[$wjahr]))>=$row->vondatum && date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $i-$wotag+1, $jahre[$wjahr]))<=$row->bisdatum) { if($row->freigabevon!='' && $row->vondatum<=date("Y-m-d",time())) { $hgfarbe[$i]='#bbb'; } elseif ($row->freigabevon!='' && $row->vondatum>date("Y-m-d",time())) { $hgfarbe[$i]='#CDDDEE'; } else { $hgfarbe[$i]='#FFFC7F'; } $datensatz[$i]=$row->zeitsperre_id; $freigabevon[$i]=$row->freigabevon; $freigabeamum[$i]=$row->freigabeamum; $vertretung_uid[$i]=$row->vertretung_uid; $erreichbarkeit_kurzbz[$i]=$row->erreichbarkeit_kurzbz; } else { if($hgfarbe[$i]!='#FFFC7F' && $hgfarbe[$i]!='#bbb' && $hgfarbe[$i]!='#CDDDEE') { $hgfarbe[$i]='#E9ECEE'; $datensatz[$i]=0; $freigabevon[$i]=$row->freigabevon; $freigabeamum[$i]=$row->freigabeamum; $vertretung_uid[$i]=$row->vertretung_uid; $erreichbarkeit_kurzbz[$i]=$row->erreichbarkeit_kurzbz; } } } for($i=$mende+$wotag+(7-($ttt['wday']==0?7:$ttt['wday']));$i<44;$i++) { $hgfarbe[$i]='#E9ECEE'; $datensatz[$i]=0; $freigabevon[$i]=$row->freigabevon; $freigabeamum[$i]=$row->freigabeamum; $vertretung_uid[$i]=$row->vertretung_uid; $erreichbarkeit_kurzbz[$i]=$row->erreichbarkeit_kurzbz; } } } } $PHP_SELF = $_SERVER['PHP_SELF']; $datum_obj = new datum(); ?> loadAddons(); foreach($addon_obj->result as $addon) { if(file_exists('../../../addons/'.$addon->kurzbz.'/cis/init.js.php')) { echo ' '; } } // Wenn Seite fertig geladen ist Addons aufrufen echo ' '; ?> <?php echo $p->t('urlaubstool/urlaubstool');?> ".$p->t('urlaubstool/urlaubstool')." (".$uid.")"; //Anzeige Resturlaubsberechnung echo ''; echo '
'; //Formular Auswahl Monat und Jahr für Kalender echo '
'.$vgmail.' '.$vtmail.'
  \n"; echo ' '; echo ' 
'.$p->t('urlaubstool/vertretung').': '; //Tage $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]); if($wmonat==0) { $mendev = cal_days_in_month(CAL_GREGORIAN, 12, $jahre[$wjahr]-1); } else { $mendev = cal_days_in_month(CAL_GREGORIAN, ($wmonat), $jahre[$wjahr]); } $ttt=getdate(mktime(0, 0, 0, ($wmonat+1) , $mende, $jahre[$wjahr])); //echo "monatsende:".$mende; for($i=1;$i<43;$i++) { if($i>=$wotag && $zaehl<=$mende) { $tage[$i]=$zaehl; $zaehl++; } elseif ($i<$wotag) { if($wmonat==0) { $tage[$i]=date("d.m.Y", mktime(0, 0, 0, 12 , $mendev+$i-($wotag-1), $jahre[$wjahr]-1)); } else { $tage[$i]=date("d.m.Y", mktime(0, 0, 0, ($wmonat) , $mendev+$i-($wotag-1), $jahre[$wjahr])); } } elseif ($i>$mende && $i<=$mende+($wotag-1)+(7-($ttt['wday']==0?7:$ttt['wday']))) { if($wmonat==11) { $tage[$i]=date("d.m.Y", mktime(0, 0, 0, 1 , $i-$mende-$wotag+1, $jahre[$wjahr+1])); } else { $tage[$i]=date("d.m.Y", mktime(0, 0, 0, ($wmonat+2) , $i-$mende-$wotag+1, $jahre[$wjahr])); } } else { $tage[$i]=''; } } echo '
'; for($i=1;$i<=7;$i++) echo "\n".''; echo ''; for ($i=0;$i<6;$i++) { echo "\n".''; for ($j=1;$j<8;$j++) { echo "\n"; if(strlen(stristr($tage[$j+7*$i],"."))>0) { if($j%6==0 || $j==7) { echo ''; } elseif($hgfarbe[$j+7*$i]=='#E9ECEE') { echo ''.$tage[$j+7*$i].'
'; if(strlen(stristr($tage[$j+7*$i],"."))>0) { echo ''; } else { echo ''; } } else { echo ''.$tage[$j+7*$i].'
'; if(!isset($freigabeamum[$j+7*$i]) && !isset($freigabevon[$j+7*$i])) { echo 'nicht freigegeben'; } elseif(isset($freigabeamum[$j+7*$i])) { echo 'freigegeben '; if($hgfarbe[$j+7*$i]=='#CDDDEE') { $k=$j+7*$i; echo ""; echo 'loeschen'; } } else { echo 'freigegeben'; } } } else { echo ' 
'; } } echo ''; } echo '
'.$tagbez[$lang->index][$i].'
'; } else { echo ''; } } else { if($j%6==0 || $j==7) { echo ''; } else { echo ''; } } if($tage[$j+7*$i]!='') { if($hgfarbe[$j+7*$i]=='#FFFC7F' )//|| $hgfarbe[$j+7*$i]=='#CDDDEE') { echo 't('urlaubstool/erreichbar').': '.$erreichbarkeit_kurzbz[$j+7*$i].'">'.$tage[$j+7*$i].'
';; $k=$j+7*$i; echo ""; echo 'loeschen
'; ?>