summaryrefslogtreecommitdiff
path: root/includes/funktion_schichtplan.php
diff options
context:
space:
mode:
authorichdasich <ichdasich@29ba0400-6e00-0410-a75a-ca02368028f8>2008-09-10 03:42:44 +0000
committerichdasich <ichdasich@29ba0400-6e00-0410-a75a-ca02368028f8>2008-09-10 03:42:44 +0000
commitb00d5b96c6d33572b6d7c68688d6d1c4fbd0f0f4 (patch)
treecf02da8b2839bea3b6a966b575f2ba84966676bb /includes/funktion_schichtplan.php
parent34aff10f383fe963cd3f8fd7f096321302e1efb6 (diff)
moved /inc to ../includes
git-svn-id: svn://svn.cccv.de/engel-system@281 29ba0400-6e00-0410-a75a-ca02368028f8
Diffstat (limited to 'includes/funktion_schichtplan.php')
-rwxr-xr-xincludes/funktion_schichtplan.php379
1 files changed, 379 insertions, 0 deletions
diff --git a/includes/funktion_schichtplan.php b/includes/funktion_schichtplan.php
new file mode 100755
index 00000000..b8babed9
--- /dev/null
+++ b/includes/funktion_schichtplan.php
@@ -0,0 +1,379 @@
+<?php
+
+
+/*#######################################################
+# gibt die engelschischten aus #
+#######################################################*/
+function ausgabe_Feld_Inhalt( $SID, $Man )
+{
+// gibt, nach übergabe der der SchichtID (SID) und der RaumBeschreibung,
+// die eingetragenden und und offenden Schichteintäge zurück
+ global $EngelType, $EngelTypeID, $TID2Name, $con, $DEBUG, $gmdateOffset;
+
+ $Spalten = "";
+
+ if( !isset($_GET["Icon"]))
+ $_GET["Icon"]=1;
+
+ ///////////////////////////////////////////////////////////////////
+ // Schow Admin Page
+ ///////////////////////////////////////////////////////////////////
+ if( $_SESSION['CVS'][ "admin/schichtplan.php" ] == "Y" )
+ {
+ $Spalten.= "<a href=\"./../admin/schichtplan.php?action=change&SID=$SID\">edit</a><br>\n\t\t";
+ }
+
+
+ ///////////////////////////////////////////////////////////////////
+ // Ausgabe des Schischtnamens
+ ///////////////////////////////////////////////////////////////////
+ $SQL = "SELECT `URL` FROM `Shifts` WHERE (`SID` = '$SID');";
+ $Erg = mysql_query($SQL, $con);
+ if( mysql_result($Erg, 0, 0) != "")
+ $Spalten.="<a href=\"". mysql_result($Erg, 0, 0). "\" target=\"_black\"><u>$Man:</u></a><br>";
+ else
+ $Spalten.="<u>".$Man.":</u><br>";
+
+
+ ///////////////////////////////////////////////////////////////////
+ // SQL abfrage für die benötigten schichten
+ ///////////////////////////////////////////////////////////////////
+ $SQL = "SELECT * FROM `ShiftEntry` WHERE (`SID` = '$SID') ORDER BY `TID`, `UID` DESC ;";
+ $Erg = mysql_query($SQL, $con);
+
+ $Anzahl = mysql_num_rows($Erg);
+ $Feld=0;
+ $Temp_TID_old=-1;
+ for( $i = 0; $i < $Anzahl; $i++ )
+ {
+ if( isset($Temp[$Feld]["TID"]))
+ $Temp_TID_old = $Temp[$Feld]["TID"];
+ if( isset($Temp[$Feld]["UID"]))
+ $Temp_UID_old = $Temp[$Feld]["UID"];
+
+ $Temp_TID = mysql_result($Erg, $i, "TID");
+
+ // wenn sich der Type ändert wird zumnästen feld geweckselt
+ if( $Temp_TID_old != $Temp_TID )
+ $Feld++;
+
+ $Temp[$Feld]["TID"] = $Temp_TID;
+ $Temp[$Feld]["UID"] = mysql_result($Erg, $i, "UID");
+
+ // sonderfall ersten durchlauf
+ if( $i == 0 )
+ {
+ $Temp_TID_old = $Temp[$Feld]["TID"];
+ $Temp_UID_old = $Temp[$Feld]["UID"];
+ }
+
+ // ist es eine zu vergeben schicht?
+ if( $Temp[$Feld]["UID"] == 0 )
+ {
+ if( isset($Temp[$Feld]["free"]))
+ $Temp[$Feld]["free"]++;
+ else
+ $Temp[$Feld]["free"]=1;
+ }
+ else
+ $Temp[$Feld]["Engel"][] = $Temp[$Feld]["UID"];
+ } // FOR
+
+
+ ///////////////////////////////////////////////////////////////////
+ // Aus gabe der Schicht
+ ///////////////////////////////////////////////////////////////////
+ if( isset($Temp))
+ if( count($Temp) )
+ foreach( $Temp as $TempEntry => $TempValue )
+ {
+ if( !isset($TempValue["free"]))
+ $TempValue["free"] = 0;
+
+ // ausgabe EngelType
+ $Spalten.= $EngelTypeID[ $TempValue["TID"] ]. " ";
+
+ // ausgabe Eingetragener Engel
+ if( isset($TempValue["Engel"]))
+ if( count($TempValue["Engel"]) > 0 )
+ {
+ if( count($TempValue["Engel"]) == 1 )
+ $Spalten.= Get_Text("inc_schicht_ist"). ":<br>\n\t\t";
+ else
+ $Spalten.= Get_Text("inc_schicht_sind"). ":<br>\n\t\t";
+
+ foreach( $TempValue["Engel"] as $TempEngelEntry=> $TempEngelID )
+ {
+ if( $_SESSION['CVS'][ "admin/user.php" ] == "Y" )
+ $Spalten.= " <a href=\"./../admin/user.php?enterUID=$TempEngelID&Type=Normal\">";
+
+ if( $_SESSION['CVS'][ "admin/schichtplan.php" ] == "Y" )
+ {
+ if( UIDgekommen( $TempEngelID ) == "1")
+ $Spalten.= "&nbsp;&nbsp;<span style=\"color: blue;\">".
+ UID2Nick( $TempEngelID ).
+ ($_GET["Icon"]==1? DisplayAvatar( $TempEngelID ): "").
+ "</span><br>\n\t\t";
+ else
+ $Spalten.= "&nbsp;&nbsp;<span style=\"color: red;\">".
+ UID2Nick( $TempEngelID ).
+ ($_GET["Icon"]==1? DisplayAvatar( $TempEngelID ): "").
+ "</span><br>\n\t\t";
+ }
+ else
+ $Spalten.= "&nbsp;&nbsp;". UID2Nick( $TempEngelID ).
+ ($_GET["Icon"]==1? DisplayAvatar( $TempEngelID ): "").
+ "<br>\n\t\t";
+ if( $_SESSION['CVS'][ "admin/user.php" ] == "Y" )
+ $Spalten.= " </a>";
+ }
+ $Spalten = substr( $Spalten, 0, strlen($Spalten)-7 );
+ }
+
+ // ausgabe benötigter Engel
+ ////////////////////////////
+ //in vergangenheit
+ $SQLtime = "SELECT `DateE` FROM `Shifts` WHERE (`SID`='$SID' AND `DateE` >= '".
+ gmdate("Y-m-d H:i:s", time()+ $gmdateOffset). "')";
+ $Ergtime = mysql_query($SQLtime, $con);
+ if( mysql_num_rows( $Ergtime) > 0)
+ {
+ //wenn keien rechte definiert sind
+ if( !isset($_SESSION['CVS'][ $TID2Name[$TempValue["TID"]] ]))
+ $_SESSION['CVS'][ $TID2Name[$TempValue["TID"]] ] = "Y";
+
+ if( $_SESSION['CVS'][ $TID2Name[$TempValue["TID"]] ] == "Y")
+ if( $TempValue["free"] > 0 )
+ {
+ $Spalten.= "<br>\n\t\t&nbsp;&nbsp;<a href=\"./schichtplan_add.php?SID=$SID&TID=".
+ $TempValue["TID"]."\">";
+ $Spalten.= $TempValue["free"];
+ if( $TempValue["free"] != 1 )
+ $Spalten.= Get_Text("inc_schicht_weitere").
+ " ".Get_Text("inc_schicht_Engel").
+ Get_Text("inc_schicht_wird");
+ else
+ $Spalten.= Get_Text("inc_schicht_weiterer").
+ " ".Get_Text("inc_schicht_Engel").
+ Get_Text("inc_schicht_werden");
+ $Spalten.= Get_Text("inc_schicht_noch_gesucht");
+ $Spalten.= "</a>";
+ }
+ }
+ else
+ {
+ if( isset($TempValue["free"]))
+ if( $TempValue["free"] > 0 )
+ $Spalten.= "<br>\n\t\t&nbsp;&nbsp;<h3><a>Fehlen noch: ".
+ $TempValue["free"]. "</a></h3>";
+ }
+ $Spalten.= "<br>\n\t\t";
+
+ } // FOREACH
+ return $Spalten;
+} // function Ausgabe_Feld_Inhalt
+
+
+
+/*#######################################################
+# gibt die engelschischten Druckergerecht aus #
+#######################################################*/
+function Ausgabe_Feld_Inhalt_Druck($RID, $Man )
+{
+// gibt, nach übergabe der der SchichtID (SID) und der RaumBeschreibung,
+// die eingetragenden und und offenden Schichteintäge zurück
+
+
+} // function Ausgabe_Feld_Inhalt
+
+
+
+
+/*#######################################################
+# Ausgabe der Raum Spalten #
+#######################################################*/
+function CreateRoomShifts( $raum )
+{
+ global $Spalten, $ausdatum, $con, $DEBUG, $GlobalZeileProStunde, $error_messages;
+
+ /////////////////////////////////////////////////////////////
+ // beginnt die erste schicht vor dem heutigen tag und geht darüber hinaus
+ /////////////////////////////////////////////////////////////
+ $SQLSonder = "SELECT `SID`, `DateS`, `DateE` , `Len`, `Man` FROM `Shifts` ".
+ "WHERE ((`RID` = '$raum') AND (`DateE` > '$ausdatum 23:59:59') AND ".
+ "(`DateS` < '$ausdatum 00:00:00') ) ORDER BY `DateS`;";
+ $ErgSonder = mysql_query($SQLSonder, $con);
+ if( (mysql_num_rows( $ErgSonder) > 1) )
+ {
+ if( $_SESSION['CVS'][ "admin/schichtplan.php" ] == "Y" )
+ {
+ echo "<h1>". Get_Text("pub_schichtplan_colision"). "</h1> ";
+ echo "<a href=\"./../admin/schichtplan.php?action=change&SID=". mysql_result($ErgSonder, 0, "SID"). "\">".
+ mysql_result($ErgSonder, 0, "DateS").
+ " '". mysql_result($ErgSonder, 0, "Man")."' (RID $raum) (00-24)".
+ "</a><br>\n\t\t";
+ }
+ }
+ elseif( (mysql_num_rows( $ErgSonder) == 1) )
+ {
+ $Spalten[0].= "\t\t<td valign=\"top\" rowspan=\"". (24 * $GlobalZeileProStunde). "\">\n".
+ "\t\t\t<h3>&uarr;&uarr;&uarr;</h3>".
+ Ausgabe_Feld_Inhalt( mysql_result($ErgSonder, 0, "SID"),
+ mysql_result($ErgSonder, 0, "Man") ).
+ "\t\t\t<h3>&darr;&darr;&darr;</h3>".
+ "\n\t\t</td>\n";
+ return;
+ }
+
+ $ZeitZeiger = 0;
+
+ /////////////////////////////////////////////////////////////
+ // beginnt die erste schicht vor dem heutigen tag?
+ /////////////////////////////////////////////////////////////
+ $SQLSonder = "SELECT `SID`, `DateS`, `DateE` , `Len`, `Man` FROM `Shifts` ".
+ "WHERE ((`RID` = '$raum') AND (`DateE` > '$ausdatum 00:00:00') AND ".
+ "(`DateS` < '$ausdatum 00:00:00') ) ORDER BY `DateS`;";
+ $ErgSonder = mysql_query($SQLSonder, $con);
+ if( (mysql_num_rows( $ErgSonder) > 1) )
+ {
+ if( $_SESSION['CVS'][ "admin/schichtplan.php" ] == "Y" )
+ {
+ echo "<h1>". Get_Text("pub_schichtplan_colision"). "</h1> ";
+ echo "<a href=\"./../admin/schichtplan.php?action=change&SID=". mysql_result($ErgSonder, 0, "SID"). "\">".
+ mysql_result($ErgSonder, 0, "DateS").
+ " '". mysql_result($ErgSonder, 0, "Man")."' (RID $raum) (00-xx)".
+ "</a><br>\n\t\t";
+ }
+ }
+ elseif( (mysql_num_rows( $ErgSonder) == 1) )
+ {
+ $ZeitZeiger = substr( mysql_result($ErgSonder, 0, "DateE"), 11, 2 )+
+ (substr( mysql_result($ErgSonder, 0, "DateE"), 14, 2 ) / 60);
+ $Spalten[0].= "\t\t<td valign=\"top\" rowspan=\"". ($ZeitZeiger * $GlobalZeileProStunde). "\">\n".
+ "\t\t\t<h3>&uarr;&uarr;&uarr;</h3>".
+ Ausgabe_Feld_Inhalt( mysql_result($ErgSonder, 0, "SID"),
+ mysql_result($ErgSonder, 0, "Man") ).
+ "\n\t\t</td>\n";
+ }
+
+ /////////////////////////////////////////////////////////////
+ // gibt die schichten für den tag aus
+ /////////////////////////////////////////////////////////////
+ $SQL = "SELECT `SID`, `DateS`, `Len`, `Man` FROM `Shifts` ".
+ "WHERE ((`RID` = '$raum') and ".
+ "(`DateS` >= '$ausdatum $ZeitZeiger:00:00') and ".
+ "(`DateS` like '$ausdatum%')) ORDER BY `DateS`;";
+ $Erg = mysql_query($SQL, $con);
+ for( $i = 0; $i < mysql_num_rows($Erg); ++$i )
+ {
+ $ZeitPos = substr( mysql_result($Erg, $i, "DateS"), 11, 2 )+
+ (substr( mysql_result($Erg, $i, "DateS"), 14, 2 ) / 60);
+ $len = mysql_result($Erg, $i, "Len");
+
+ if( $len <= 0)
+ array_push( $error_messages, "Error in shift denition SID=". mysql_result($Erg, $i, "SID"). " Len=$len");
+
+ if( $ZeitZeiger < $ZeitPos )
+ {
+ $Spalten[$ZeitZeiger * $GlobalZeileProStunde].=
+ "\t\t<td valign=\"top\" rowspan=\"". ( ($ZeitPos - $ZeitZeiger ) * $GlobalZeileProStunde ). "\">&nbsp;</td>\n";
+
+ $ZeitZeiger += $ZeitPos - $ZeitZeiger;
+ }
+ if($ZeitZeiger == $ZeitPos )
+ {
+ //sonderfall wenn die schicht über dei 24 stunden hinaus geht
+ // (eintrag abkürzen, pfeiel ausgeben)
+ $Spalten[$ZeitZeiger * $GlobalZeileProStunde].=
+ "\t\t<td valign=\"top\" rowspan=\"".
+ ( ( ($len+$ZeitZeiger)? $len : 24-$len+$ZeitZeiger) * $GlobalZeileProStunde).
+ "\">\n".
+ "\t\t\t".
+ Ausgabe_Feld_Inhalt( mysql_result($Erg, $i, "SID"),
+ mysql_result($Erg, $i, "Man") ).
+ (( ($ZeitZeiger+$len) > 24)? "\t\t\t<h3>&darr;&darr;&darr;</h3>" : "").
+ "\n\t\t</td>\n";
+ $ZeitZeiger += $len;
+ }
+ else
+ {
+ echo Get_Text("pub_schichtplan_colision"). " ".
+ mysql_result($Erg, $i, "DateS").
+ " '". mysql_result($Erg, $i, "Man"). "' ".
+ " (". mysql_result($Erg, $i, "SID"). " R$raum) (xx-xx)<br><br>";
+ }
+ }
+ if( $ZeitZeiger < 24 )
+ $Spalten[($ZeitZeiger * $GlobalZeileProStunde)].=
+ "\t\t<td valign=\"top\" rowspan=\"".
+ ((24 - $ZeitZeiger) * $GlobalZeileProStunde ).
+ "\">&nbsp;</td>\n";
+} // function CreateRoomShifts
+
+
+/*#######################################################
+# Ausgabe der freien schichten #
+#######################################################*/
+function showEmptyShifts( )
+{
+ global $con, $DEBUG, $RoomID, $gmdateOffset;
+
+ echo "<table border=\"1\">\n";
+ echo "<tr>\n";
+ echo "\t<th>". Get_Text("inc_schicht_date"). "</th>\n";
+ echo "\t<th>". Get_Text("inc_schicht_time"). "</th>\n";
+ echo "\t<th>". Get_Text("inc_schicht_room"). "</th>\n";
+ echo "\t<th>". Get_Text("inc_schicht_commend"). "</th>\n";
+ echo "</tr>\n";
+
+ $sql = "SELECT `SID`, `DateS`, `Man`, `RID` FROM `Shifts` ".
+ "WHERE (`Shifts`.`DateS`>='". gmdate("Y-m-d H:i:s", time()+$gmdateOffset). "') ".
+ "ORDER BY `DateS`, `RID`;";
+ $Erg = mysql_query($sql, $con);
+
+ $angezeigt = 0;
+ for ($i=0; ($i<mysql_num_rows($Erg)) && ($angezeigt< 15); $i++)
+ if( isset($RoomID[mysql_result( $Erg, $i, "RID")]))
+ if( $RoomID[mysql_result( $Erg, $i, "RID")]!="" )
+ {
+ $Sql2 = "SELECT `UID` FROM `ShiftEntry` ".
+ "WHERE `SID`=". mysql_result( $Erg, $i, "SID"). " AND ".
+ "`UID`='0';";
+ $Erg2 = mysql_query($Sql2, $con);
+
+ if( mysql_num_rows($Erg2)>0)
+ {
+ $angezeigt++;
+ echo "<tr>\n";
+ echo "\t<td>". substr(mysql_result( $Erg, $i, "DateS"), 0, 10). "</td>\n";
+ echo "\t<td>". substr(mysql_result( $Erg, $i, "DateS"), 11). "</td>\n";
+ echo "\t<td>". $RoomID[mysql_result( $Erg, $i, "RID")]. "</td>\n";
+ echo "\t<td>".
+ ausgabe_Feld_Inhalt( mysql_result( $Erg, $i, "SID"), mysql_result( $Erg, $i, "Man")).
+ "</td>\n";
+ echo "</tr>\n";
+ }
+ }
+
+ echo "</table>\n";
+
+} //function showEmptyShifts
+
+
+/*#######################################################
+# Gibt die anzahl der Schichten im Raum zurück #
+#######################################################*/
+function SummRoomShifts( $raum )
+{
+ global $ausdatum, $con, $DEBUG, $GlobalZeileProStunde;
+
+ $SQLSonder = "SELECT `SID`, `DateS`, `Len`, `Man` FROM `Shifts` ".
+ "WHERE ((`RID` = '$raum') AND (`DateE` >= '$ausdatum 00:00:00') AND ".
+ "(`DateS` <= '$ausdatum 23:59:59') ) ORDER BY `DateS`;";
+
+ $ErgSonder = mysql_query($SQLSonder, $con);
+
+ return mysql_num_rows($ErgSonder);
+}
+
+?>