From efa3de7c6438b5600bf6177fc56b5b845955f85f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 8 Nov 2011 16:25:12 +0000 Subject: [PATCH] =?UTF-8?q?Check=20beim=20Speichern=20von=20Urlauben=20ein?= =?UTF-8?q?gebaut,=20damit=20doppelte=20Urlaubstage=20nicht=20gebucht=20we?= =?UTF-8?q?rden=20k=C3=B6nnen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/profile/urlaubstool.php | 234 ++++++++++-------- cis/private/profile/zeitsperre_resturlaub.php | 14 +- include/zeitsperre.class.php | 47 ++++ system/checksystem.php | 1 + 4 files changed, 189 insertions(+), 107 deletions(-) diff --git a/cis/private/profile/urlaubstool.php b/cis/private/profile/urlaubstool.php index 789e6478b..817e2b9be 100644 --- a/cis/private/profile/urlaubstool.php +++ b/cis/private/profile/urlaubstool.php @@ -19,7 +19,9 @@ * 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'); @@ -166,10 +168,9 @@ if (isset($_GET['rechts_x']) || isset($_POST['rechts_x'])) //Eintragung löschen if((isset($_GET['delete']) || isset($_POST['delete']))) { - //print_r($_GET['delete']); - //echo "
"; - $qry="DELETE FROM campus.tbl_zeitsperre WHERE zeitsperre_id=".$_GET['delete']." AND (freigabevon!='' OR freigabevon IS NULL)"; - $result = $db->db_query($qry); + $zeitsperre = new zeitsperre(); + if(!$zeitsperre->delete($_GET['delete'])) + echo $zeitsperre->errormsg; } //Eintragung speichern @@ -182,97 +183,117 @@ if(isset($_GET['speichern']) && isset($_GET['wtag'])) $erreichbar='n'; } $wtag=$_GET['wtag']; - $akette[0]=date("Y-m-d",strtotime($wtag[0])); - $ekette[0]=date("Y-m-d",strtotime($wtag[0])); + $akette[0]=$wtag[0]; + $ekette[0]=$wtag[0]; for($i=1,$j=0;$iUrlaubEingetragen($uid, $akette[$i], $ekette[$i])) { - $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",strtotime($akette[$i]))."', - NULL,'".date("Y-m-d", strtotime($ekette[$i]))."',NULL,'".$vertretung."',NULL,NULL,now(),'".$uid."','".$erreichbar."',NULL,NULL - )"; + $vgmail.='
'.$p->t('zeitsperre/urlaubBereitsEingetragen').''; + $error=true; + break; } - else - { - $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",strtotime($akette[$i]))."', - NULL,'".date("Y-m-d", strtotime($ekette[$i]))."',NULL,NULL,NULL,NULL,now(),'".$uid."','".$erreichbar."',NULL,NULL - )"; - } - $result = $db->db_query($qryins); } - //Mail an Vorgesetzten - $vorgesetzter = $ma->getVorgesetzte($uid); - if($vorgesetzter) + + if(!$error) { - $to=''; - foreach($ma->vorgesetzte as $vg) - { - if($to!='') - { - $to.=', '.$vg.'@'.DOMAIN; - } - else - { - $to.=$vg.'@'.DOMAIN; - } - } - //$to = 'oesi@technikum-wien.at'; - $benutzer = new benutzer(); - $benutzer->load($uid); - $message = "Dies ist eine automatische Mail! \n". - "$benutzer->nachname $benutzer->vorname hat neuen Urlaub eingetragen:\n"; - 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()) + echo $zeitsperre->errormsg; + } - - //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.="\nSie können diesen unter folgender Adresse freigeben:\n". - APP_ROOT."cis/private/profile/urlaubsfreigabe.php?uid=$uid&year=".$jahr; - - $mail = new mail($to, 'vilesci@'.DOMAIN,'Freigabeansuchen Urlaub', $message); - if($mail->send()) + //Mail an Vorgesetzten + $vorgesetzter = $ma->getVorgesetzte($uid); + if($vorgesetzter) { - $vgmail="
".$p->t('urlaubstool/freigabemailWurdeVersandt',array($to))."!"; + $to=''; + foreach($ma->vorgesetzte as $vg) + { + if($to!='') + { + $to.=', '.$vg.'@'.DOMAIN; + } + else + { + $to.=$vg.'@'.DOMAIN; + } + } + //$to = 'oesi@technikum-wien.at'; + $benutzer = new benutzer(); + $benutzer->load($uid); + $message = "Dies ist eine automatische Mail! \n". + "$benutzer->nachname $benutzer->vorname hat neuen Urlaub eingetragen:\n"; + + for($i=0;$i=9) + $jahr = date("Y", strtotime($akette[0]))+1; + else + $jahr = date("Y", strtotime($akette[0])); + + $message.="\nSie können diesen unter folgender Adresse freigeben:\n". + APP_ROOT."cis/private/profile/urlaubsfreigabe.php?uid=$uid&year=".$jahr; + + $mail = new mail($to, 'vilesci@'.DOMAIN,'Freigabeansuchen Urlaub', $message); + if($mail->send()) + { + $vgmail="
".$p->t('urlaubstool/freigabemailWurdeVersandt',array($to))."!"; + } + else + { + $vgmail="
".$p->t('urlaubstool/fehlerBeimSendenAufgetreten',array($to))."!"; + } } else { - $vgmail="
".$p->t('urlaubstool/fehlerBeimSendenAufgetreten',array($to))."!"; + $vgmail="
".$p->t('urlaubstool/konnteKeinFreigabemailVersendetWerden').""; } } - else - { - $vgmail="
".$p->t('urlaubstool/konnteKeinFreigabemailVersendetWerden').""; - } } @@ -315,7 +336,7 @@ if ((isset($wmonat) || isset($wmonat))&&(isset($wjahr) || isset($wjahr))) { $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='".$uid."' AND (vondatum<='".$wbis."' AND bisdatum>'".$wvon."') "; + $qry="SELECT * FROM campus.tbl_zeitsperre WHERE zeitsperretyp_kurzbz='Urlaub' AND mitarbeiter_uid='".addslashes($uid)."' AND (vondatum<='".addslashes($wbis)."' AND bisdatum>'".addslashes($wvon)."') "; //echo "
"."db:".$qry; if($result = $db->db_query($qry)) { @@ -374,39 +395,40 @@ $PHP_SELF = $_SERVER['PHP_SELF']; $datum_obj = new datum(); ?> - - - - - - -<?php echo $p->t('urlaubstool/urlaubstool');?> - +"http://www.w3.org/TR/html4/loose.dtd"> + + + + + + + + <?php echo $p->t('urlaubstool/urlaubstool');?> + ".$p->t('urlaubstool/urlaubstool')." (".$uid.")"; @@ -619,7 +641,7 @@ $content.=''; $content.=''; $content.=''; $content.=''; -$content.=''; +$content.='
'; $content.=''; for ($i=0;$i<6;$i++) diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php index cd42baa50..bac58a03c 100644 --- a/cis/private/profile/zeitsperre_resturlaub.php +++ b/cis/private/profile/zeitsperre_resturlaub.php @@ -281,6 +281,18 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_ $error = true; $error_msg.=$p->t('zeitsperre/urlaubKannNichtMehrEditiertWerden'); } + 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']; @@ -325,7 +337,7 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_ $message = "Dies ist eine automatische Mail! \n". "$benutzer->nachname $benutzer->vorname hat einen neuen Urlaub eingetragen:\n". - "$zeitsperre->bezeichnung von $zeitsperre->vondatum bis $zeitsperre->bisdatum\n\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; diff --git a/include/zeitsperre.class.php b/include/zeitsperre.class.php index 726451af1..c1ba34d72 100644 --- a/include/zeitsperre.class.php +++ b/include/zeitsperre.class.php @@ -395,5 +395,52 @@ class zeitsperre extends basis_db return false; } } + + /** + * Prueft ob innerhalb des angegebenen Zeitraums bereits ein Urlaub eingetragen ist + * + * @param $uid + * @param $von + * @param $bis + * @param $id Eintrag mit dieser ID wird nicht beruecksichtigt (zB bei Editieren von Eintraegen) + */ + function UrlaubEingetragen($uid, $von, $bis, $id=null) + { + + $qry = "SELECT + 1 + FROM + campus.tbl_zeitsperre + WHERE + zeitsperretyp_kurzbz='Urlaub' + AND mitarbeiter_uid='".addslashes($uid)."' + AND + ( + (vondatum BETWEEN '".addslashes($von)."' AND '".addslashes($bis)."') + OR + (bisdatum BETWEEN '".addslashes($von)."' AND '".addslashes($bis)."') + OR + (vondatum<='".addslashes($von)."' AND bisdatum>='".addslashes($bis)."') + )"; + if(!is_null($id)) + $qry.=" AND zeitsperre_id<>'".addslashes($id)."'"; + + if($result = $this->db_query($qry)) + { + if($this->db_num_rows($result)>0) + { + return true; + } + else + { + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } } ?> \ No newline at end of file diff --git a/system/checksystem.php b/system/checksystem.php index b5cf41bbf..a0a82cba6 100644 --- a/system/checksystem.php +++ b/system/checksystem.php @@ -2912,6 +2912,7 @@ if(!$result = @$db->db_query("SELECT research_area FROM public.tbl_preincoming L GRANT USAGE ON SCHEMA fue TO wawi; GRANT SELECT ON fue.tbl_ressource TO wawi; GRANT SELECT ON fue.tbl_projekt_ressource TO wawi; + GRANT SELECT ON fue.tbl_projekt TO wawi; "; if(!$db->db_query($qry))
'.$tagbez[$lang->index][1].''.$tagbez[$lang->index][2].''.$tagbez[$lang->index][3].''.$tagbez[$lang->index][4].''.$tagbez[$lang->index][5].''.$tagbez[$lang->index][6].''.$tagbez[$lang->index][7].'