, * Andreas Oesterreicher and * Rudolf Hangl . */ // ** // * @brief bietet die Moeglichkeit zur Anzeige und // * Aenderung der Zeitwuensche und Zeitsperren 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/benutzerberechtigung.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/zeitaufzeichnung.class.php'); $sprache = getSprache(); $p = new phrasen($sprache); if (!$db = new basis_db()) die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung')); $uid = get_uid(); $PHP_SELF = $_SERVER['PHP_SELF']; $typen_arr = array("Urlaub", "PflegeU", "ZA", "Krank", "DienstF", "DienstV", "CovidSB", "CovidKS"); if(isset($_GET['type'])) $type=$_GET['type']; //Wenn User Administrator ist und UID uebergeben wurde, dann die Zeitsperren //des uebergebenen Users anzeigen if(isset($_GET['uid'])) { $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($uid); if($rechte->isBerechtigt('admin')) { $uid = $_GET['uid']; } else { die($p->t('global/FuerDieseAktionBenoetigenSieAdministrationsrechte')); } } $datum_obj = new datum(); $ma= new mitarbeiter(); // definiert bis zu welchem Datum die Eintragung nicht mehr möglich ist $zaufzeichnung = new zeitaufzeichnung(); if ($sperrdat = $zaufzeichnung->getEintragungGesperrtBisForUser($uid)) $gesperrt_bis = $sperrdat; else if (defined('CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS') && CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS != '') $gesperrt_bis = CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS; else $gesperrt_bis = '2015-08-31'; //echo $gesperrt_bis; //Stundentabelleholen if(! $result_stunde=$db->db_query("SELECT * FROM lehre.tbl_stunde ORDER BY stunde")) die($db->db_last_error()); $num_rows_stunde=$db->db_num_rows($result_stunde); ?> <?php echo $p->t('zeitsperre/zeitsperre');?> 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 ' '; ?>

t('zeitsperre/zeitsperren');?>


checkDatum($_POST['vondatum'])) { $error=true; $error_msg .= $p->t('zeitsperre/vonDatumUngueltig').' '; } //bis-datum pruefen $datum_obj->formatDatum($_POST['bisdatum'] if(isset($_POST['bisdatum']) && !$datum_obj->checkDatum($_POST['bisdatum'])) { $error=true; $error_msg .= $p->t('zeitsperre/bisDatumUngueltig').' '; } //Prüfen auf vorhandene Zeitaufzeichnung if (isset($_POST['bisdatum']) && isset($_POST['vondatum']) && $zaufzeichnung->existsZeitaufzeichnung($uid, $_POST['vondatum'], $_POST['bisdatum']) // Nur Zeitaufzeichnungsrelevante Typen sollen das speichern blockieren && in_array($_POST['zeitsperretyp_kurzbz'], zeitsperre::getBlockierendeZeitsperren())) { $error = true; $error_msg .= $p->t('zeitsperre/zeitaufzeichnungVorhanden'); } //Prüfen auf vorhandene Zeitsperre if (isset($_POST['bisdatum']) && isset($_POST['vondatum']) && in_array($_POST['zeitsperretyp_kurzbz'], zeitsperre::getBlockierendeZeitsperren())) { $von = $_POST['vondatum']; $von2 = new DateTime($von); $von2 = $von2->format('Y-m-d'); $zeitsperre = new zeitsperre(); if ($zeitsperre->getSperreByDate($uid, $von2, null, zeitsperre::NUR_BLOCKIERENDE_ZEITSPERREN)) { foreach ($zeitsperre->result as $z) { // Beim editieren nicht mit dem eigenen Eintrag kollidieren if($_GET['type'] == 'edit_sperre' && $z->zeitsperre_id == $_GET['id']) continue; $typ = $z->zeitsperretyp_kurzbz; $error = true; $error_msg .= $p->t('zeitsperre/zeitsperreEingetragen', [$von, $typ]); } } } //von - bis-datum pruefen von darf nicht groesser als bis sein // 09.02.2009 simane $vondatum=0; if(isset($_POST['vondatum'])) { $date=explode('.',$_POST['vondatum']); if (@checkdate($date[1], $date[0], $date[2])) { $vondatum=$date[2].$date[1].$date[0]; $vondatum_iso = $date[2].'-'.$date[1].'-'.$date[0]; } else { $error=true; $error_msg .= $p->t('zeitsperre/vonDatumUngueltig').' '; } } else { $error=true; } $bisdatum=0; if(isset($_POST['bisdatum'])) { $date=explode('.',$_POST['bisdatum']); if (@checkdate($date[1], $date[0], $date[2])) { $bisdatum=$date[2].$date[1].$date[0]; } else { $error=true; $error_msg .= $p->t('zeitsperre/bisDatumUngueltig').' '; } } else { $error=true; } if($vondatum > $bisdatum) { $error=true; $error_msg .= $p->t('zeitsperre/vonDatumGroesserAlsBisDatum').'! '; } //von-datum pruefen TODO if($vondatum_iso < $gesperrt_bis && in_array($_POST['zeitsperretyp_kurzbz'],$typen_arr)) { $error=true; $error_msg .= $p->t('zeitsperre/vorSperrdatum'); } $zeitsperre = new zeitsperre(); if($_GET['type']=='edit_sperre') { if(!is_numeric($_GET['id'])) { $error=true; $error_msg.=$p->t('zeitsperre/ungueltigeId').' '; } else { //wenn die zeitsperre bereits existiert, dann wird sie geladen $zeitsperre->load($_GET['id']); $zeitsperre->new=false; $zeitsperre->zeitsperre_id = $_GET['id']; //pruefen ob die geladene id auch von der person ist die angemeldet ist if($zeitsperre->mitarbeiter_uid!=$uid) die($p->t('zeitsperre/sieHabenKeineBerechtigung')); } } else { $zeitsperre->new=true; $zeitsperre->insertamum = date('Y-m-d H:i:s'); $zeitsperre->insertvon = $uid; } if(!$error && $_POST['zeitsperretyp_kurzbz']=='Urlaub') { if($zeitsperre->zeitsperre_id!='') $id = $zeitsperre->zeitsperre_id; else $id = null; if($zeitsperre->UrlaubEingetragen($uid, $datum_obj->formatDatum($_POST['vondatum']),$datum_obj->formatDatum($_POST['bisdatum']), $id)) { $error = true; $error_msg.=$p->t('zeitsperre/urlaubBereitsEingetragen'); } } if(!$error) { $zeitsperre->zeitsperretyp_kurzbz = $_POST['zeitsperretyp_kurzbz']; $zeitsperre->mitarbeiter_uid = $uid; $zeitsperre->bezeichnung = $_POST['bezeichnung']; $zeitsperre->vondatum = $datum_obj->formatDatum($_POST['vondatum']); $zeitsperre->vonstunde = $_POST['vonstunde']; $zeitsperre->bisdatum = $datum_obj->formatDatum($_POST['bisdatum']); $zeitsperre->bisstunde = $_POST['bisstunde']; $zeitsperre->erreichbarkeit_kurzbz = $_POST['erreichbarkeit']; $zeitsperre->vertretung_uid = $_POST['vertretung_uid']; $zeitsperre->updateamum = date('Y-m-d H:i:s'); $zeitsperre->updatevon = $uid; if($zeitsperre->save()) { echo "

".$p->t('global/erfolgreichgespeichert')."

"; if(URLAUB_TOOLS) { if($zeitsperre->new && $zeitsperre->zeitsperretyp_kurzbz=='Urlaub') { //Beim Anlegen von neuen Urlauben wird ein Mail an den Vorgesetzten versendet um diesen Freizugeben $prsn = new person(); $vorgesetzter = $ma->getVorgesetzte($uid); if($vorgesetzter) { $to=''; $fullName=''; foreach($ma->vorgesetzte as $vg) { if (!empty($to)) { $to.=','; $fullName.=','; } $to.=trim($vg.'@'.DOMAIN); $name = $prsn->getFullNameFromBenutzer($vg); $fullName.=$name; } $benutzer = new benutzer(); $benutzer->load($uid); if($datum_obj->formatDatum($zeitsperre->vondatum, 'm')>=9) $jahr = $datum_obj->formatDatum($zeitsperre->vondatum, 'Y')+1; else $jahr = $datum_obj->formatDatum($zeitsperre->vondatum, 'Y'); $message = "Dies ist eine automatische Mail! \n". "$benutzer->nachname $benutzer->vorname hat einen neuen Urlaub eingetragen:\n". "$zeitsperre->bezeichnung von ".$datum_obj->formatDatum($zeitsperre->vondatum,'d.m.Y')." bis ".$datum_obj->formatDatum($zeitsperre->bisdatum,'d.m.Y')."\n\n". "Sie können diesen unter folgender Adresse freigeben:\n". APP_ROOT."cis/private/profile/urlaubsfreigabe.php?uid=$uid&year=".$jahr; $from='vilesci@'.DOMAIN; $mail = new mail($to, $from, 'Freigabeansuchen', $message); if($mail->send()) { echo "
".$p->t('urlaubstool/freigabemailWurdeVersandt',array($fullName)).""; } else { echo "
".$p->t('urlaubstool/fehlerBeimSendenAufgetreten',array($fullName)).""; } } else { echo "
".$p->t('urlaubstool/konnteKeinFreigabemailVersendetWerden').""; } } } } else echo "".$p->t('global/fehleraufgetreten').""; } else echo "$error_msg"; } //loeschen eines bereits freigegebenen Urlaubs if((isset($_GET['type']) && $_GET['type']=='delete_sperre' && isset($_GET['informSupervisor']))) { $zeitsperre = new zeitsperre(); $zeitsperre->load($_GET['id']); $vondatum = $zeitsperre->getVonDatum(); $bisdatum = $zeitsperre->getBisDatum(); if(!$zeitsperre->delete($_GET['id'])) 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()) { echo "
".$p->t('urlaubstool/VorgesetzteInformiert',array($fullName)).""; } else { echo "
".$p->t('urlaubstool/fehlerBeimSendenAufgetreten',array($fullName))."!"; } } else { $vgmail="
".$p->t('urlaubstool/konnteKeinFreigabemailVersendetWerden').""; } } //loeschen einer zeitsperre if(isset($_GET['type']) && $_GET['type']=='delete_sperre' && !isset($_GET['informSupervisor']) ) { $zeit = new zeitsperre(); $zeit->load($_GET['id']); //pruefen ob die person die den datensatz loeschen will auch der //besitzer dieses datensatzes ist if($zeit->mitarbeiter_uid==$uid) { if ($zeit->vondatum < $gesperrt_bis && in_array($zeit->zeitsperretyp_kurzbz,$typen_arr)) { echo "".$p->t('zeitsperre/vorSperrdatum').""; } else if($zeit->delete($_GET['id'])) { echo $p->t('global/erfolgreichgelöscht'); } else echo "".$p->t('global/fehleraufgetreten').""; } else echo "".$p->t('zeitsperre/keineBerechtigungDatensatzLoeschen').""; } //zeitsperren des users laden $zeit = new zeitsperre(); $zeit->getzeitsperren($uid); $content_table='

'; $qry = "SELECT * FROM campus.tbl_erreichbarkeit"; $erreichbarkeit_arr=array(); if($result = $db->db_query($qry)) { while($row = $db->db_fetch_object($result)) { $erreichbarkeit_arr[$row->erreichbarkeit_kurzbz]=$row->beschreibung; } } //liste aller zeitsperren ausgeben if(count($zeit->result)>0) { $content_table.= ''; $i=0; foreach ($zeit->result as $row) { $i++; //name der vertretung holen $qry = "SELECT vorname || ' ' || nachname as kurzbz FROM public.tbl_mitarbeiter, public.tbl_benutzer, public.tbl_person WHERE tbl_benutzer.uid=tbl_mitarbeiter.mitarbeiter_uid AND tbl_benutzer.person_id=tbl_person.person_id AND mitarbeiter_uid=".$db->db_add_param($row->vertretung_uid); $result_vertretung = $db->db_query($qry); $row_vertretung = $db->db_fetch_object($result_vertretung); $content_table.= ""; if ($row->zeitsperretyp_kurzbz == 'DienstV' || $row->zeitsperretyp_kurzbz == 'ZVerfueg') $content_table .= ''; else if ($row->vondatum < $gesperrt_bis AND in_array($row->zeitsperretyp_kurzbz,$typen_arr)) $content_table .= ''; else $content_table.=""; if ($row->vondatum < $gesperrt_bis AND in_array($row->zeitsperretyp_kurzbz,$typen_arr)) $content_table .= ''; else if($row->vondatum>=date("Y-m-d",time()) && $row->zeitsperretyp_kurzbz=='Urlaub') { $content_table.="\n"; } elseif($row->zeitsperretyp_kurzbz!='Urlaub' && $row->zeitsperretyp_kurzbz != 'ZVerfueg') { $content_table.="\n"; } else $content_table .= ''; $content_table.=""; } $content_table.= '
'.$p->t('global/bezeichnung').''.$p->t('zeitsperre/grund').''.$p->t('global/von').''.$p->t('global/bis').''.$p->t('urlaubstool/vertretung').''.$p->t('urlaubstool/erreichbarkeit').''.$p->t('zeitsperre/freigegeben').'
$row->bezeichnung $row->zeitsperretyp_beschreibung ".$datum_obj->convertISODate($row->vondatum)." ".($row->vonstunde!=''?'('.$row->vonstunde.')':'')." ".$datum_obj->convertISODate($row->bisdatum)." ".($row->bisstunde!=''?'('.$row->bisstunde.')':'')." ".(isset($row_vertretung->kurzbz)?$row_vertretung->kurzbz:'')." ".(isset($erreichbarkeit_arr[$row->erreichbarkeit])?$erreichbarkeit_arr[$row->erreichbarkeit]:'')." ".($row->freigabeamum!=''?'Ja':'')."  ".$p->t('zeitsperre/edit')." ".$p->t('zeitsperre/loeschen')."".$p->t('zeitsperre/loeschen')." 
'; } else $content_table.= $p->t('zeitsperre/keineZeitsperrenEingetragen')."!"; $zeitsperre = new zeitsperre(); $action = "$PHP_SELF?type=new_sperre"; //wenn ein datensatz editiert werden soll, dann diesen laden if(isset($_GET['type']) && $_GET['type']=='edit') { if(isset($_GET['id']) && is_numeric($_GET['id'])) { $zeitsperre->load($_GET['id']); //pruefen ob dieser datensatz auch dem angemeldeten user gehoert if($zeitsperre->mitarbeiter_uid!=$uid) { die("".$p->t('zeitsperre/sieHabenKeineBerechtigungZuAendern').""); } $action = "$PHP_SELF?type=edit_sperre&id=".$_GET['id']; } else { die("".$p->t('global/fehlerBeiDerParameteruebergabe').""); } } if($zeitsperre->freigabeamum!='' && $zeitsperre->zeitsperretyp_kurzbz=='Urlaub') { $readonly=' readonly="readonly"'; //für Textfelder $disabled=' disabled'; //für select-options $style=' style="border: 1px solid #999; color: #999;"'; //disabled-Optik $class = ''; } else { $readonly=''; $disabled=''; $style=''; $class = ' class="datepicker_datum"'; } //formular zum editieren und neu anlegen der zeitsperren $content_form=''; $content_form.= '
'; $content_form.= "\n"; $content_form.= ''; $content_form.= ''; $content_form.= '"; $content_form.= '"; $content_form.= "'; $content_form.= "'; $content_form.= ''; $content_form .= ''; $content_form.= ""; $content_form.= '
'.$p->t('zeitsperre/grund').'
'.$p->t('global/bezeichnung').'
'.$p->t('global/von').' '; //dropdown fuer vonstunde $content_form.= $p->t('zeitsperre/stundeInklusive'); $content_form.= "
'.$p->t('global/bis').' '; //dropdown fuer bisstunde $content_form.= $p->t('zeitsperre/stundeInklusive'); $content_form.= "
".$p->t('urlaubstool/vertretung')."
".$p->t('urlaubstool/erreichbarkeit')."'; if(isset($_GET['type']) && $_GET['type']=='edit') $content_form.= ""; else $content_form.= ""; $content_form.= '
 
" .$p->t('zeitsperre/achtungEsWerdenAlleEingegebenenTage')."
'; echo ''; echo ''; echo "'; echo ""; echo ''; echo ''; echo '
"; echo $content_form; echo '
'; echo $content_table; echo '
'; ?>
showHideStudeDropDown();'; ?>