From b00d5b96c6d33572b6d7c68688d6d1c4fbd0f0f4 Mon Sep 17 00:00:00 2001 From: ichdasich Date: Wed, 10 Sep 2008 03:42:44 +0000 Subject: moved /inc to ../includes git-svn-id: svn://svn.cccv.de/engel-system@281 29ba0400-6e00-0410-a75a-ca02368028f8 --- includes/funktion_schichtplan.php | 379 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 379 insertions(+) create mode 100755 includes/funktion_schichtplan.php (limited to 'includes/funktion_schichtplan.php') 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 @@ +edit
\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.="$Man:
"; + else + $Spalten.="".$Man.":
"; + + + /////////////////////////////////////////////////////////////////// + // 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"). ":
\n\t\t"; + else + $Spalten.= Get_Text("inc_schicht_sind"). ":
\n\t\t"; + + foreach( $TempValue["Engel"] as $TempEngelEntry=> $TempEngelID ) + { + if( $_SESSION['CVS'][ "admin/user.php" ] == "Y" ) + $Spalten.= " "; + + if( $_SESSION['CVS'][ "admin/schichtplan.php" ] == "Y" ) + { + if( UIDgekommen( $TempEngelID ) == "1") + $Spalten.= "  ". + UID2Nick( $TempEngelID ). + ($_GET["Icon"]==1? DisplayAvatar( $TempEngelID ): ""). + "
\n\t\t"; + else + $Spalten.= "  ". + UID2Nick( $TempEngelID ). + ($_GET["Icon"]==1? DisplayAvatar( $TempEngelID ): ""). + "
\n\t\t"; + } + else + $Spalten.= "  ". UID2Nick( $TempEngelID ). + ($_GET["Icon"]==1? DisplayAvatar( $TempEngelID ): ""). + "
\n\t\t"; + if( $_SESSION['CVS'][ "admin/user.php" ] == "Y" ) + $Spalten.= "
"; + } + $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.= "
\n\t\t  "; + $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.= ""; + } + } + else + { + if( isset($TempValue["free"])) + if( $TempValue["free"] > 0 ) + $Spalten.= "
\n\t\t  

Fehlen noch: ". + $TempValue["free"]. "

"; + } + $Spalten.= "
\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 "

". Get_Text("pub_schichtplan_colision"). "

"; + echo "". + mysql_result($ErgSonder, 0, "DateS"). + " '". mysql_result($ErgSonder, 0, "Man")."' (RID $raum) (00-24)". + "
\n\t\t"; + } + } + elseif( (mysql_num_rows( $ErgSonder) == 1) ) + { + $Spalten[0].= "\t\t\n". + "\t\t\t

↑↑↑

". + Ausgabe_Feld_Inhalt( mysql_result($ErgSonder, 0, "SID"), + mysql_result($ErgSonder, 0, "Man") ). + "\t\t\t

↓↓↓

". + "\n\t\t\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 "

". Get_Text("pub_schichtplan_colision"). "

"; + echo "". + mysql_result($ErgSonder, 0, "DateS"). + " '". mysql_result($ErgSonder, 0, "Man")."' (RID $raum) (00-xx)". + "
\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\n". + "\t\t\t

↑↑↑

". + Ausgabe_Feld_Inhalt( mysql_result($ErgSonder, 0, "SID"), + mysql_result($ErgSonder, 0, "Man") ). + "\n\t\t\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 \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\n". + "\t\t\t". + Ausgabe_Feld_Inhalt( mysql_result($Erg, $i, "SID"), + mysql_result($Erg, $i, "Man") ). + (( ($ZeitZeiger+$len) > 24)? "\t\t\t

↓↓↓

" : ""). + "\n\t\t\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)

"; + } + } + if( $ZeitZeiger < 24 ) + $Spalten[($ZeitZeiger * $GlobalZeileProStunde)].= + "\t\t \n"; +} // function CreateRoomShifts + + +/*####################################################### +# Ausgabe der freien schichten # +#######################################################*/ +function showEmptyShifts( ) +{ + global $con, $DEBUG, $RoomID, $gmdateOffset; + + echo "\n"; + echo "\n"; + echo "\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\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; ($i0) + { + $angezeigt++; + echo "\n"; + echo "\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\n"; + } + } + + echo "
". Get_Text("inc_schicht_date"). "". Get_Text("inc_schicht_time"). "". Get_Text("inc_schicht_room"). "". Get_Text("inc_schicht_commend"). "
". substr(mysql_result( $Erg, $i, "DateS"), 0, 10). "". substr(mysql_result( $Erg, $i, "DateS"), 11). "". $RoomID[mysql_result( $Erg, $i, "RID")]. "". + ausgabe_Feld_Inhalt( mysql_result( $Erg, $i, "SID"), mysql_result( $Erg, $i, "Man")). + "
\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); +} + +?> -- cgit v1.2.3-54-g00ecf