Files
FHC-Core/cis/private/profile/urlaubsfreigabe.php
T
Andreas Österreicher 975ab6d146
2008-06-05 15:24:30 +00:00

242 lines
6.9 KiB
PHP

<?php
/* Copyright (C) 2008 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
* Rudolf Hangl <rudolf.hangl@technikum-wien.at> and
*/
require_once('../../config.inc.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/zeitsperre.class.php');
if(!$conn = pg_pconnect(CONN_STRING))
die('Fehler beim Connecten zur Datenbank');
$user = get_uid();
if(isset($_GET['year']) && is_numeric($_GET['year']))
$year = $_GET['year'];
else
{
//Bis August das aktuelle Jahr anzeigen
//Ab September das naechste
if(date('m')<9)
$year = date('Y');
else
$year = date('Y')+1;
}
if(isset($_GET['uid']))
$uid=$_GET['uid'];
else
$uid='';
$datum_obj = new datum();
echo '<html>
<head>
<title>Urlaubsfreigabe</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link rel="stylesheet" href="../../../skin/style.css.php" type="text/css">
</head>
<body id="inhalt">
<table class="tabcontent" id="inhalt">
<tr>
<td class="tdwidth10">&nbsp;</td>
<td>
<table class="tabcontent">
<tr>
<td class="ContentHeader"><font class="ContentHeader">&nbsp;Urlaubsfreigabe</font></td>
</tr>
</table>
<br>
';
//Untergebene holen
$qry = "SELECT * FROM public.tbl_benutzerfunktion WHERE (funktion_kurzbz='fbl' OR funktion_kurzbz='stgl') AND uid='".addslashes($user)."'";
if($result = pg_query($conn, $qry))
{
$institut='';
$stge='';
while($row = pg_fetch_object($result))
{
if($row->funktion_kurzbz=='fbl')
{
if($institut!='')
$institut.=',';
$institut.="'".addslashes($row->fachbereich_kurzbz)."'";
}
elseif($row->funktion_kurzbz=='stgl')
{
if($stge!='')
$stge.=',';
$stge.="'".$row->studiengang_kz."'";
}
}
}
$qry = "SELECT distinct uid FROM public.tbl_benutzerfunktion WHERE funktion_kurzbz='Institut' AND (false ";
if($institut!='')
$qry.=" OR fachbereich_kurzbz in($institut)";
if($stge!='')
$qry.=" OR studiengang_kz in($stge)";
$qry.=")";
$untergebene='';
if($result = pg_query($conn, $qry))
{
while($row = pg_fetch_object($result))
{
if($untergebene!='')
$untergebene.=',';
$untergebene.="'".addslashes($row->uid)."'";
}
}
if($untergebene=='')
die('Es sind Ihnen keine Mitarbeiter zugeteilt für die sie den Urlaub freigeben dürfen');
$qry = "SELECT * FROM public.tbl_person JOIN public.tbl_benutzer USING(person_id) WHERE uid in($untergebene)";
$mitarbeiter = array();
if($result = pg_query($conn, $qry))
{
while($row = pg_fetch_object($result))
{
$mitarbeiter[$row->uid]['vorname']=$row->vorname;
$mitarbeiter[$row->uid]['nachname']=$row->nachname;
$mitarbeiter[$row->uid]['titelpre']=$row->titelpre;
$mitarbeiter[$row->uid]['titelpost']=$row->titelpost;
}
}
if($uid!='' && !isset($mitarbeiter[$uid]) && $uid!=$user)
die('Sie haben keine Berechtigung fuer diesen Mitarbeiter');
//Freigeben eines Urlaubes
if(isset($_GET['action']) && $_GET['action']=='freigabe')
{
$zeitsperre = new zeitsperre($conn);
if($zeitsperre->load($_GET['id']))
{
if(isset($mitarbeiter[$zeitsperre->mitarbeiter_uid]))
{
$zeitsperre->freigabeamum = date('Y-m-d H:i:s');
$zeitsperre->freigabevon = $user;
if(!$zeitsperre->save(false))
echo "<b>Fehler bei der Freigabe: $zeitsperre->errormsg</b>";
}
else
{
echo '<b>Sie haben keine Berechtigung den Urlaub für diesen Mitarbeiter freizugeben</b>';
}
}
else
{
echo '<b>Die Zeitsperre konnte nicht geladen werden</b>';
}
}
//Monat zeichenen
function draw_monat($monat)
{
global $untergebene, $mitarbeiter, $conn, $year, $datum_obj, $uid;
echo '<td style="border: 1px solid black; height:100px; width: 30%" valign="top">';
echo '<center><b>';
echo date('F',mktime(0,0,0,$monat,1,date('Y')));
echo " ".($monat>8?$year-1:$year);
echo '</b></center>';
//Alle Anzeigen bei denen das von- oder bisdatum in dieses monat fallen
$qry = "SELECT * FROM campus.tbl_zeitsperre WHERE zeitsperretyp_kurzbz='Urlaub'
AND
(
(date_part('month', vondatum)='$monat' AND date_part('year', vondatum)='".($monat>8?$year-1:$year)."')
OR
(date_part('month', bisdatum)='$monat' AND date_part('year', bisdatum)='".($monat>8?$year-1:$year)."')
)";
if($uid=='')
$qry.=" AND mitarbeiter_uid in($untergebene)";
else
$qry.=" AND mitarbeiter_uid='".addslashes($uid)."'";
$qry.="ORDER BY vondatum, mitarbeiter_uid";
if($result = pg_query($conn, $qry))
{
while($row = pg_fetch_object($result))
{
$freigabe='';
if($row->freigabeamum!='')
{
$freigabe = "Freigabe am ".$datum_obj->formatDatum($row->freigabeamum, 'd.m.Y')." von Benutzer $row->freigabevon";
}
echo "<span title='$freigabe'>";
echo $mitarbeiter[$row->mitarbeiter_uid]['nachname'].' '.$datum_obj->formatDatum($row->vondatum,'d.m.Y')." - ".$datum_obj->formatDatum($row->bisdatum,'d.m.Y');
if($row->freigabeamum=='')
echo " <a href='".$_SERVER['PHP_SELF']."?action=freigabe&id=$row->zeitsperre_id&year=$year&uid=$uid' class='Item'>Freigabe</a>";
echo "</span>";
echo '<br>';
}
}
echo '</td>';
}
//Jahr mit Pfeilen zum blaettern anzeigen
echo '<center>';
echo "<a href='".$_SERVER['PHP_SELF']."?uid=$uid&year=".($year-1)."' class='Item' title='Ein Jahr zurück'><img src='../../../skin/images/left.gif'></a>";
echo '&nbsp;<font size="+1"><b>';
echo ($year-1).'/'.$year;
echo '</b></font>&nbsp;';
echo "<a href='".$_SERVER['PHP_SELF']."?uid=$uid&year=".($year+1)."' class='Item' title='Ein Jahr vor'><img src='../../../skin/images/right.gif'></a>";
echo '</center>';
if($uid!='')
{
echo "<a href='".$_SERVER['PHP_SELF']."?year=$year' class='Item'>Alle Mitarbeiter anzeigen</a><br>";
}
echo '<br>';
//Tabelle mit den Monaten ausgeben
echo '<table cellspacing=0 width="100%" style="border: 1px solid black;"><tr>';
$monat=9;
for($i=0;$i<12;$i++)
{
if($i%3==0)
{
echo '</tr><tr>';
}
draw_monat($monat);
$monat++;
if($monat>12)
$monat=1;
}
echo '</tr></table>
</td>
</tr>
</table>
</body>
</html>';
?>