, * Andreas Oesterreicher , * Rudolf Hangl , * Manuela Thamer */ /** * 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/sancho.inc.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'); $datum_obj = new datum(); $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'])) { $zeitsperre = new zeitsperre(); $zeitsperre->load($_GET['delete']); $vondatum = $zeitsperre->getVonDatum(); $bisdatum = $zeitsperre->getBisDatum(); $vondatum = $datum_obj->formatDatum($vondatum, 'd.m.Y'); $bisdatum = $datum_obj->formatDatum($bisdatum, 'd.m.Y'); if(!$zeitsperre->delete($_GET['delete'])) { echo $zeitsperre->errormsg; } else { //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); //new sanchomail $nameMitarbeiter = $benutzer->vorname. " ". $benutzer->nachname; $beschreibung = $zeitsperre->bezeichnung; $subject = "Urlaub wurde gelöscht"; $mailvorlage = 'Sancho_Mail_Urlaub_Loeschen'; $from='vilesci@'.DOMAIN; //Sanchomail mit Vorlage Sancho Mail Urlaub $template_data = array( 'vorgesetzter' => $fullName, 'nameMitarbeiter' => $nameMitarbeiter, 'beschreibung' =>$beschreibung, 'vonDatum' => $vondatum, 'bisDatum' => $bisdatum ); if (sendSanchoMail($mailvorlage, $template_data, $to, $subject)) { $vgmail="".$p->t('urlaubstool/VorgesetzteInformiert', array($fullName)).""; } else { $vgmail="
".$p->t('urlaubstool/fehlerBeimSendenAufgetreten', array($fullName))."!"; } } } } //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); $nameMitarbeiter = $benutzer->vorname. " ". $benutzer->nachname; $beschreibung = (!empty($zeitsperre->bezeichnung) ? $zeitsperre->bezeichnung : $zeitsperre->beschreibung); // $message = $p->t('urlaubstool/diesIstEineAutomatischeMail')."\n". // $p->t('urlaubstool/xHatNeuenUrlaubEingetragen',array($benutzer->nachname,$benutzer->vorname)).":\n"; for($i=0; $i=9) $jahr = date("Y", strtotime($akette[0]))+1; else $jahr = date("Y", strtotime($akette[0])); $link = " Link Urlaubstool "; $subject = "Freigabeansuchen Urlaub"; $mailvorlage = 'Sancho_Mail_Urlaub_Neu'; $from='vilesci@'.DOMAIN; // Überprüfen, ob addon casetime aktiv ist $addon_obj = new addon(); $addoncasetime = $addon_obj->checkActiveAddon("casetime"); $urlaubssaldo = ""; if($addoncasetime) { require_once('../../../addons/casetime/config.inc.php'); require_once('../../../addons/casetime/include/functions.inc.php'); $urlaubssaldo = getCastTimeUrlaubssaldo($uid); $urlaubssaldo = $urlaubssaldo->{'AktuellerStand'}; } //Sanchomail mit Vorlage Sancho Mail Urlaub Neu $template_data = array( 'vorgesetzter' => $fullName, 'nameMitarbeiter' => $nameMitarbeiter, 'beschreibung' =>$beschreibung, 'vonDatum' => $von, 'bisDatum' => $bis, 'Link'=> $link, 'urlaubssaldo' => $urlaubssaldo ); if (sendSanchoMail($mailvorlage, $template_data, $to, $subject)) // $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
'; ?>