diff options
Diffstat (limited to 'includes/sys_shift.php')
-rw-r--r-- | includes/sys_shift.php | 454 |
1 files changed, 0 insertions, 454 deletions
diff --git a/includes/sys_shift.php b/includes/sys_shift.php deleted file mode 100644 index 728e7a83..00000000 --- a/includes/sys_shift.php +++ /dev/null @@ -1,454 +0,0 @@ -<?php - - -/** - * Shiftlänge ausrechnen, kommt im Format 12:23h zurück - */ -function shift_length($shift) { - $length = round(($shift['end'] - $shift['start']) / (60 * 60), 0) . ":"; - $length .= str_pad((($shift['end'] - $shift['start']) % (60 * 60)) / 60, 2, "0", STR_PAD_LEFT) . "h"; - return $length; -} - -function load_shift_basics() { - global $VeranstaltungsTageMax, $Room, $RoomID, $EngelType, $EngelTypeID, $TID2Name, $Veranstaltungstage; - - // erstellt ein Array der Räume - $rooms = sql_select("SELECT `RID`, `Name` FROM `Room` WHERE `Show`='Y' ORDER BY `Number`, `Name`"); - foreach ($rooms as $i => $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 * FROM `EngelType` ORDER BY `name`"); - foreach ($engel_types as $engel_type) { - $EngelType[$i] = array ( - 'id' => $engel_type['id'], - 'name' => $engel_type['name'] . Get_Text("inc_schicht_engel") - ); - $EngelTypeID[$engel_type['id']] = $engel_type['name'] . Get_Text("inc_schicht_engel"); - $TID2Name[$engel_type['id']] = $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<br />\n"); - - /////////////////////////////////////////////////////////////////// - // Ausgabe des Schichtnamens - /////////////////////////////////////////////////////////////////// - $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` = '" . sql_escape($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"; - else - $Spalten .= Get_Text("inc_schicht_sind") . ":<br />\n"; - - foreach ($TempValue["Engel"] as $TempEngelEntry => $TempEngelID) { - if (funktion_isLinkAllowed("admin/user.php") === TRUE) { - // add color, wenn Engel "Gekommen" - $TempText = ((UIDgekommen($TempEngelID) == "1") ? "<span style=\"color: blue;\">" : "<span style=\"color: red;\">") . - UID2Nick($TempEngelID) . "</span>"; - } 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) : "") . - "<br />\n"; - - } - $Spalten = substr($Spalten, 0, strlen($Spalten) - 7); - } - - // ausgabe ben�tigter Engel - //////////////////////////// - //in vergangenheit - $SQLtime = "SELECT `DateE` FROM `Shifts` WHERE (`SID`='" . sql_escape($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 <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 <h3><a>Fehlen noch: " . - $TempValue["free"] . "</a></h3>"; - } - $Spalten .= "<br />\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` = '" . sql_escape($raum) . "') AND (`DateE` > '$ausdatum 23:59:59') AND " . - "(`DateS` < '" . sql_escape($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 "<h1>" . Get_Text("pub_schichtplan_colision") . "</h1> "; - for ($i = 0; $i < mysql_num_rows($ErgSonder); $i++) { - echo "<a href=\"./../admin/schichtplan.php?action=change&SID=" . - mysql_result($ErgSonder, $i, "SID") . "\">" . - mysql_result($ErgSonder, $i, "DateS") . - " '" . mysql_result($ErgSonder, $i, "Man") . "' (RID $raum) (00-24)" . - "</a><br />\n"; - } - } - } - elseif ((mysql_num_rows($ErgSonder) == 1)) { - $Spalten[0] .= "<td valign=\"top\" rowspan=\"" . (24 * $GlobalZeileProStunde) . "\">\n" . - "<h3>↑↑↑</h3>" . - Ausgabe_Feld_Inhalt(mysql_result($ErgSonder, 0, "SID"), mysql_result($ErgSonder, 0, "Man")) . - "<h3>↓↓↓</h3>" . - "\n</td>\n"; - return; - } - - $ZeitZeiger = 0; - - ///////////////////////////////////////////////////////////// - // beginnt die erste schicht vor dem heutigen tag? - ///////////////////////////////////////////////////////////// - $SQLSonder = "SELECT `SID`, `DateS`, `DateE` , `Len`, `Man` FROM `Shifts` " . - "WHERE ((`RID` = '" . sql_escape($raum) . "') AND (`DateE` > '" . sql_escape($ausdatum) . " 00:00:00') AND " . - "(`DateS` < '" . sql_escape($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 "<h1>" . Get_Text("pub_schichtplan_colision") . "</h1> "; - for ($i = 0; $i < mysql_num_rows($ErgSonder); $i++) { - echo "<a href=\"./../admin/schichtplan.php?action=change&SID=" . - mysql_result($ErgSonder, $i, "SID") . "\">" . - mysql_result($ErgSonder, $i, "DateS") . - " '" . mysql_result($ErgSonder, $i, "Man") . "' (RID $raum) (00-xx)" . - "</a><br />\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] .= "<td valign=\"top\" rowspan=\"" . ($ZeitZeiger * $GlobalZeileProStunde) . "\">\n" . - "<h3>↑↑↑</h3>" . - Ausgabe_Feld_Inhalt(mysql_result($ErgSonder, 0, "SID"), mysql_result($ErgSonder, 0, "Man")) . - "\n</td>\n"; - } - - ///////////////////////////////////////////////////////////// - // gibt die schichten f�r den tag aus - ///////////////////////////////////////////////////////////// - $SQL = "SELECT `SID`, `DateS`, `Len`, `Man` FROM `Shifts` " . - "WHERE ((`RID` = '" . sql_escape($raum) . "') and " . - "(`DateS` >= '" . sql_escape($ausdatum) . ' ' . sql_escape($ZeitZeiger) . ":00:00') and " . - "(`DateS` like '" . sql_escape($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] .= "<td valign=\"top\" rowspan=\"" . (($ZeitPos - $ZeitZeiger) * $GlobalZeileProStunde) . "\"> </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] .= "<td valign=\"top\" rowspan=\"" . - ((($len + $ZeitZeiger) ? $len : 24 - $len + $ZeitZeiger) * $GlobalZeileProStunde) . - "\">\n" . - "" . - Ausgabe_Feld_Inhalt(mysql_result($Erg, $i, "SID"), mysql_result($Erg, $i, "Man")) . - ((($ZeitZeiger + $len) > 24) ? "<h3>↓↓↓</h3>" : "") . - "\n</td>\n"; - $ZeitZeiger += $len; - } else { - echo "<h1>" . Get_Text("pub_schichtplan_colision") . "</h1> "; - echo "<a href=\"./../admin/schichtplan.php?action=change&SID=" . - mysql_result($Erg, $i, "SID") . "\">" . - mysql_result($Erg, $i, "DateS") . - " '" . mysql_result($Erg, $i, "Man") . "' " . - " (" . mysql_result($Erg, $i, "SID") . " R$raum) (xx-xx)</a><br /><br />"; - } - } - if ($ZeitZeiger < 24) - $Spalten[($ZeitZeiger * $GlobalZeileProStunde)] .= "<td valign=\"top\" rowspan=\"" . - ((24 - $ZeitZeiger) * $GlobalZeileProStunde) . - "\"> </td>\n"; -} // function CreateRoomShifts - -/*####################################################### -# Ausgabe der freien schichten # -#######################################################*/ -function showEmptyShifts() { - global $con, $debug, $RoomID, $gmdateOffset; - - echo "<table border=\"1\">\n"; - echo "<tr>\n"; - echo "<th>" . Get_Text("inc_schicht_date") . "</th>\n"; - echo "<th>" . Get_Text("inc_schicht_time") . "</th>\n"; - echo "<th>" . Get_Text("inc_schicht_room") . "</th>\n"; - echo "<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 "<td>" . substr(mysql_result($Erg, $i, "DateS"), 0, 10) . "</td>\n"; - echo "<td>" . substr(mysql_result($Erg, $i, "DateS"), 11) . "</td>\n"; - echo "<td>" . $RoomID[mysql_result($Erg, $i, "RID")] . "</td>\n"; - echo "<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` = '" . sql_escape($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"); -} -?> |