$r) { $Room[$i] = array ( 'RID' => $r['RID'], 'Name' => $r['Name'] ); $RoomID[$r['RID']] = $r['Name']; } // erstellt ein Array der Engeltypen $engel_types = sql_select("SELECT `TID`, `Name` FROM `EngelType` ORDER BY `Name`"); foreach ($engel_types as $engel_type) { $EngelType[$i] = array ( 'TID' => $engel_type['TID'], 'Name' => $engel_type['Name'] . Get_Text("inc_schicht_engel") ); $EngelTypeID[$engel_type['TID']] = $engel_type['Name'] . Get_Text("inc_schicht_engel"); $TID2Name[$engel_type['TID']] = $engel_type['Name']; } // Erste Schicht suchen $Pos = 0; $first_shift = sql_select("SELECT `DateS` FROM `Shifts` ORDER BY `DateS` LIMIT 1"); if (count($first_shift) > 0) { do { // Startdatum einlesen und link ausgeben $DateS = substr($first_shift[0]['DateS'], 0, 10); $VeranstaltungsTage[$Pos++] = $DateS; // auslesen den endes und eventuelle weitere tage ausgeben $last_shift = sql_select("SELECT MAX(`DateE`) FROM `Shifts` WHERE ( (`DateS` like '" . sql_escape($DateS) . "%') AND NOT (`DateE` like '%00:00:00'))"); $DateE = substr($last_shift[0]['DateE'], 0, 10); if (strlen($DateE) == 0) $DateE = $DateS; else while ($DateS != $DateE) { $DateS = DatumUm1TagErhoehen($DateS); $VeranstaltungsTage[$Pos++] = $DateS; } // suchen den nächsten eintrag $first_shift = sql_select("SELECT `DateS` FROM `Shifts` " . "WHERE (`DateS` > '" . sql_escape($DateE) . " 23:59:59' ) " . "ORDER BY `DateS` " . "LIMIT 1"); } while (count($first_shift) > 0); } $VeranstaltungsTageMax = $Pos -1; } /*####################################################### # 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 /////////////////////////////////////////////////////////////////// $Spalten .= funktion_isLinkAllowed_addLink_OrEmpty("admin/schichtplan.php?action=change&SID=$SID", "edit
\n"); /////////////////////////////////////////////////////////////////// // 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"; else $Spalten .= Get_Text("inc_schicht_sind") . ":
\n"; foreach ($TempValue["Engel"] as $TempEngelEntry => $TempEngelID) { if (funktion_isLinkAllowed("admin/user.php") === TRUE) { // add color, wenn Engel "Gekommen" $TempText = ((UIDgekommen($TempEngelID) == "1") ? "" : "") . UID2Nick($TempEngelID) . ""; } else { $TempText = UID2Nick($TempEngelID); } // add link to user $TempText = funktion_isLinkAllowed_addLink_OrLinkText("admin/userChangeNormal.php?enterUID=$TempEngelID&Type=Normal", $TempText); $Spalten .= "  " . $TempText . (($_GET["Icon"] == 1) ? DisplayAvatar($TempEngelID) : "") . "
\n"; } $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  "; $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  

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

"; } $Spalten .= "
\n"; } // 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 (funktion_isLinkAllowed("admin/schichtplan.php") === TRUE) { echo "

" . Get_Text("pub_schichtplan_colision") . "

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

↑↑↑

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

↓↓↓

" . "\n\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 (funktion_isLinkAllowed("admin/schichtplan.php") === TRUE) { echo "

" . Get_Text("pub_schichtplan_colision") . "

"; for ($i = 0; $i < mysql_num_rows($ErgSonder); $i++) { echo "" . mysql_result($ErgSonder, $i, "DateS") . " '" . mysql_result($ErgSonder, $i, "Man") . "' (RID $raum) (00-xx)" . "
\n"; } } } 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] .= "\n" . "

↑↑↑

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

↓↓↓

" : "") . "\n\n"; $ZeitZeiger += $len; } else { echo "

" . Get_Text("pub_schichtplan_colision") . "

"; echo "" . 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)] .= " \n"; } // function CreateRoomShifts /*####################################################### # Ausgabe der freien schichten # #######################################################*/ function showEmptyShifts() { global $con, $debug, $RoomID, $gmdateOffset; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\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;($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 "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\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); } function DatumUm1TagErhoehen($Datum) { $Jahr = substr($Datum, 0, 4); $Monat = substr($Datum, 5, 2); $Tag = substr($Datum, 8, 2); $Tag++; switch ($Monat) { case 1 : $Mmax = 31; break; case 2 : $Mmax = 28; break; case 3 : $Mmax = 31; break; case 4 : $Mmax = 30; break; case 5 : $Mmax = 31; break; case 6 : $Mmax = 30; break; case 7 : $Mmax = 31; break; case 8 : $Mmax = 31; break; case 9 : $Mmax = 30; break; case 10 : $Mmax = 31; break; case 11 : $Mmax = 30; break; case 12 : $Mmax = 31; break; } if ($Tag > $Mmax) { $Tag = 1; $Monat++; } if ($Monat > 12) { $Monat = 1; $Jahr++; } $Tag = strlen($Tag) == 1 ? "0" . $Tag : $Tag; $Monat = strlen($Monat) == 1 ? "0" . $Monat : $Monat; return ("$Jahr-$Monat-$Tag"); } ?>