/** * seed entries * ------------ */ function AA_heats_seedEntries($event) { require './lib/cl_gui_dropdown.lib.php'; require './lib/cl_gui_select.lib.php'; require './lib/common.lib.php'; require './lib/utils.lib.php'; include './config.inc.php'; $filmnumber = false; $relay = AA_checkRelay($event); $combined = AA_checkCombined($event); // combined event $teamsm = AA_checkTeamSM($event); // team sm event $cGroup = $_POST['cGroup']; // combined group to seed $comb_last = AA_checkCombinedLast($event); // combined event last discipline if (isset($_POST['round'])) { $round = $_POST['round']; } else { if (isset($_GET['round'])) { $round = $_GET['round']; } } $size = $_POST['size']; if (!empty($_POST['tracks'])) { $tracks = $_POST['tracks']; } else { $tracks = $size; } $mode = 0; if (!empty($_POST['mode'])) { $mode = $_POST['mode']; } // // read athletes/relays, ordered by mode type // // get type of contest // if this is an svm contest, sort with first heat runner $svmContest = AA_checkSVMNatAC($event); if ($svmContest) { $orderFirst = "s.Erstserie ASC,"; // those with 'y' come first } else { $orderFirst = ""; } // discipline type for top performance mode and for determining the need of a filmnumber $result = mysql_query("\r\n\t\tSELECT\r\n\t\t\td.Typ\r\n\t\tFROM\r\n\t\t\tdisziplin AS d\r\n\t\t\t, wettkampf AS w\r\n\t\tWHERE xWettkampf = {$event}\r\n\t\tAND d.xDisziplin = w.xDisziplin\r\n\t"); if (mysql_errno() > 0) { AA_printErrorMsg(mysql_errno() . ": " . mysql_error()); $order = "RAND()"; } else { $row = mysql_fetch_row($result); } if ($mode == 0 && !$svmContest) { // open mode // random order $order = "RAND()"; $badValue = "0"; if ($row[0] == $cfgDisciplineType[$strDiscTypeTrack] || $row[0] == $cfgDisciplineType[$strDiscTypeTrackNoWind] || $row[0] == $cfgDisciplineType[$strDiscTypeRelay] || $row[0] == $cfgDisciplineType[$strDiscTypeDistance]) { $filmnumber = true; } } elseif ($mode == 3 && !$svmContest) { $order = "t.Name"; // field disciplines $badValue = "0"; $orderFirst = ''; } elseif ($svmContest) { // SVM mode if ($row[0] == $cfgDisciplineType[$strDiscTypeTrack] || $row[0] == $cfgDisciplineType[$strDiscTypeTrackNoWind] || $row[0] == $cfgDisciplineType[$strDiscTypeRelay] || $row[0] == $cfgDisciplineType[$strDiscTypeDistance]) { $order = "best ASC, RAND()"; // track disciplines $badValue = "99999999"; $filmnumber = true; } else { $order = "best ASC, RAND()"; // field disciplines $badValue = "0"; } } else { // top performance mode if ($row[0] == $cfgDisciplineType[$strDiscTypeTrack] || $row[0] == $cfgDisciplineType[$strDiscTypeTrackNoWind] || $row[0] == $cfgDisciplineType[$strDiscTypeRelay] || $row[0] == $cfgDisciplineType[$strDiscTypeDistance]) { $order = "best ASC, RAND()"; // track disciplines $badValue = "99999999"; $filmnumber = true; } else { if ($row[0] == $cfgDisciplineType[$strDiscTypeHigh]) { $order = "best DESC, RAND()"; // field disciplines (high) } else { $order = "best ASC, RAND()"; // field disciplines } $badValue = "0"; } mysql_free_result($result); } // // read merged rounds and select all events // $eventMerged = false; $sqlEvents = AA_getMergedEvents($round); if ($sqlEvents == '') { $sqlEvents = " s.xWettkampf = " . $event . " "; } else { $sqlEvents = " s.xWettkampf IN " . $sqlEvents . " "; $eventMerged = true; } $mergedRounds = AA_getMergedRounds($round); if ($mergedRounds == '') { $sqlRounds = "= " . $round; } else { $sqlRounds = "IN " . $mergedRounds; } // read entries either for athletes, relays or athletes in combined event // if (!$combined) { if ($relay == FALSE && !$svmContest) { // single event $query = "SELECT xStart, if(Bestleistung = 0, {$badValue}, Bestleistung) as best, r.xRunde, t.Name" . " FROM start as s LEFT JOIN anmeldung as a ON (s.xAnmeldung = a.xAnmeldung) LEFT JOIN team as t ON (a.xTeam = t.xTeam) LEFT JOIN runde as r On (r.xWettkampf=s.xWettkampf) " . " WHERE " . $sqlEvents . " AND s.Anwesend = 0" . " AND s.xAnmeldung > 0" . " AND a.xAnmeldung = s.xAnmeldung" . " AND r.xRunde " . $sqlRounds . " ORDER BY {$order}"; } elseif ($relay == FALSE && $svmContest) { // single event but svm $query = "SELECT s.xStart, if(Bestleistung = 0, {$badValue}, Bestleistung) as best, r.xRunde, t.Name" . " FROM start as s, anmeldung as a LEFT JOIN team as t ON (a.xTeam = t.xTeam) LEFT JOIN runde as r On (r.xWettkampf=s.xWettkampf) " . " WHERE " . $sqlEvents . " AND s.Anwesend = 0" . " AND s.xAnmeldung > 0" . " AND a.xAnmeldung = s.xAnmeldung" . " AND r.xRunde " . $sqlRounds . " ORDER BY {$orderFirst} {$order}"; } else { // relay event $query = "SELECT xStart, if(Bestleistung = 0, {$badValue}, Bestleistung) as best, r.xRunde, t.Name" . " FROM start as s Left JOIN staffel as st ON (s.xStaffel = st.xStaffel) LEFT JOIN team as t ON (t.xTeam = st.xTeam) LEFT JOIN runde as r On (r.xWettkampf=s.xWettkampf) " . " WHERE " . $sqlEvents . " AND s.Anwesend = 0" . " AND s.xStaffel > 0" . " AND r.xRunde " . $sqlRounds . " ORDER BY {$order}"; } } else { // combined if ($comb_last == 1) { // last combined --> all athletes together $order = str_replace("DESC", "ASC", $order); // last combined checks the best points --> order always ASC if (!empty($cGroup)) { $query = "SELECT xStart, if(BestleistungMK = 0, {$badValue}, BestleistungMK) as best, a.xAthlet, t.Name" . " FROM start as s, anmeldung as a LEFT JOIN team as t ON (a.xTeam = t.xTeam)" . " WHERE " . $sqlEvents . " AND s.xAnmeldung = a.xAnmeldung" . " AND a.Gruppe = '{$cGroup}'" . " AND s.Anwesend = 0" . " AND s.xAnmeldung > 0" . " ORDER BY {$order}"; } else { $query = "SELECT xStart, if(BestleistungMK = 0, {$badValue}, BestleistungMK) as best, a.xAthlet,r.xRunde, t.Name" . " FROM start as s, anmeldung as a LEFT JOIN team as t ON (a.xTeam = t.xTeam) LEFT JOIN runde as r On (r.xWettkampf=s.xWettkampf) " . " WHERE " . $sqlEvents . " AND s.xAnmeldung = a.xAnmeldung" . " AND s.Anwesend = 0" . " AND s.xAnmeldung > 0" . " ORDER BY {$order}"; } } else { if (!empty($cGroup)) { $query = "SELECT xStart, if(Bestleistung = 0, {$badValue}, Bestleistung) as best, a.xAthlet, t.Name" . " FROM start as s, anmeldung as a LEFT JOIN team as t ON (a.xTeam = t.xTeam)" . " WHERE " . $sqlEvents . " AND s.xAnmeldung = a.xAnmeldung" . " AND a.Gruppe = '{$cGroup}'" . " AND s.Anwesend = 0" . " AND s.xAnmeldung > 0" . " ORDER BY {$order}"; } else { $query = "SELECT xStart, if(Bestleistung = 0, {$badValue}, Bestleistung) as best, a.xAthlet,r.xRunde, t.Name" . " FROM start as s, anmeldung as a LEFT JOIN team as t ON (a.xTeam = t.xTeam) LEFT JOIN runde as r On (r.xWettkampf=s.xWettkampf) " . " WHERE " . $sqlEvents . " AND s.xAnmeldung = a.xAnmeldung" . " AND s.Anwesend = 0" . " AND s.xAnmeldung > 0" . " ORDER BY {$order}"; } } } if ($teamsm && !empty($cGroup)) { // teamsm event with groups $query = "SELECT xStart, if(Bestleistung = 0, {$badValue}, Bestleistung) as best, t.Name" . " FROM start as s, anmeldung as a LEFT JOIN team as t ON (a.xTeam = t.xTeam)" . " WHERE s.xWettkampf = " . $event . " AND s.xAnmeldung = a.xAnmeldung" . " AND a.Gruppe = '{$cGroup}'" . " AND s.Anwesend = 0" . " AND s.xAnmeldung > 0" . " ORDER BY {$order}"; } if ($_POST['mode'] == 3) { // count team $count_team = 0; $pos = strpos($query, "ORDER"); $query_team = substr($query, 0, $pos); $query_team .= " GROUP BY t.Name"; $res_group = mysql_query($query_team); if (mysql_errno() > 0) { AA_printErrorMsg(mysql_errno() . ": " . mysql_error()); } else { $count_team = mysql_num_rows($res_group); } } $result = mysql_query($query); $entries = mysql_num_rows($result); // keep nbr of entries $noTeam = true; while ($row_check = mysql_fetch_row($result)) { // only check for teams for this event if ($_POST['mode'] == 3) { if ($combined && empty($cGroup)) { if (!empty($row_check[4])) { $noTeam = false; } } else { if (!empty($row_check[3])) { $noTeam = false; } } } } $result = mysql_query($query); // reset to first record if (mysql_errno() > 0) { AA_printErrorMsg(mysql_errno() . ": " . mysql_error()); } if ($noTeam && $_POST['mode'] == 3) { // no teams exist for this event AA_printErrorMsg($strNoTeam); } else { if ($entries > 0) { mysql_query("LOCK TABLES resultat READ, rundenset READ, wettkampf READ , meeting READ, runde WRITE, serie WRITE" . ", serienstart WRITE, runde as r READ, wettkampf as w READ, kategorie as k READ, disziplin as d READ"); // check if round still exists if (AA_checkReference("runde", "xRunde", $round) == 0) { AA_printErrorMsg($strRound . $strErrNotValid); } else { // check if there are any results for this round $res = mysql_query("SELECT xResultat" . " FROM resultat" . ", serienstart" . ", serie" . " WHERE serie.xRunde " . $sqlRounds . " AND serienstart.xSerie = serie.xSerie" . " AND resultat.xSerienstart = serienstart.xSerienstart"); if (mysql_errno() > 0) { AA_printErrorMsg(mysql_errno() . ": " . mysql_error()); } else { if (mysql_num_rows($res) > 0) { mysql_free_result($res); AA_printErrorMsg($strErrResultsEntered); } else { mysql_free_result($res); $OK = TRUE; // // Delete current start per heat // $res = mysql_query("SELECT xSerie" . " FROM serie" . " WHERE xRunde " . $sqlRounds); if (mysql_errno() > 0) { AA_printErrorMsg(mysql_errno() . ": " . mysql_error()); $OK = FALSE; } else { while ($row = mysql_fetch_row($res)) { mysql_query("DELETE FROM serienstart" . " WHERE xSerie = " . $row[0]); if (mysql_errno() > 0) { AA_printErrorMsg(mysql_errno() . ": " . mysql_error()); $OK = FALSE; } } } mysql_free_result($res); // // Delete heat // if ($OK == TRUE) { // delete this round's heats mysql_query("DELETE FROM serie" . " WHERE xRunde " . $sqlRounds); if (mysql_errno() > 0) { AA_printErrorMsg(mysql_errno() . ": " . mysql_error()); } else { // Update round data and seed entries AA_utils_changeRoundStatus($round, $cfgRoundStatus['heats_in_progress']); if (!empty($GLOBALS['AA_ERROR'])) { AA_printErrorMsg($GLOBALS['AA_ERROR']); } mysql_query("\r\n\t\t\t\t\t\t\tUPDATE runde SET\r\n\t\t\t\t\t\t\t\tBahnen = {$tracks}\r\n\t\t\t\t\t\t\tWHERE xRunde = {$round}\r\n\t\t\t\t\t\t"); if (mysql_errno() > 0) { AA_printErrorMsg(mysql_errno() . ": " . mysql_error()); } else { // create heats $filmnr = 0; if ($filmnumber) { $filmnr = AA_heats_getNextFilm(); } // get TV Name $tvname = ''; $sql = "SELECT \r\n k.Name, k.Geschlecht, d.Name, d.Code , rt.Name , r.xRundentyp\r\n FROM\r\n runde AS r\r\n LEFT JOIN wettkampf AS w ON (r.xWettkampf = w.xWettkampf)\r\n LEFT JOIN kategorie AS k ON (w.xKategorie = k.xKategorie) \r\n LEFT JOIN disziplin AS d ON (w.xDisziplin = d.xDisziplin) \r\n LEFT JOIN rundentyp AS rt ON (rt.xRundentyp = r.xRundentyp) \r\n WHERE\r\n r.xrunde = " . $round . "\r\n AND w.xMeeting = " . $_COOKIE['meeting_id']; if (mysql_errno() > 0) { // DB error AA_printErrorMsg(mysql_errno() . ": " . mysql_error()); } $res_tv = mysql_query($sql); $lang = $_COOKIE['language']; if (mysql_num_rows($res_tv) == 1) { $row_tv = mysql_fetch_row($res_tv); if ($row_tv[1] == 'm') { $tvname = $cfgTVDef[$lang]['m'] . " "; } else { $tvname = $cfgTVDef[$lang]['w'] . " "; } // $tvname .= ' (' . $row_tv[0] . ') '; if ($row_tv[3] >= 232 && $row_tv[3] <= 236) { $tvname .= $cfgTVDef[$lang][232]; } elseif ($row_tv[3] >= 252 && $row_tv[3] <= 256) { $tvname .= $cfgTVDef[$lang][252]; } elseif ($row_tv[3] == 258) { $tvname .= $cfgTVDef[$lang][258]; } elseif ($row_tv[3] >= 259 && $row_tv[3] <= 261) { $tvname .= $cfgTVDef[$lang][259]; } elseif ($row_tv[3] >= 268 && $row_tv[3] <= 271) { $tvname .= $cfgTVDef[$lang][268]; } elseif ($row_tv[3] == 280) { $tvname .= $cfgTVDef[$lang][280]; } elseif ($row_tv[3] >= 289 && $row_tv[3] <= 291) { $tvname .= $cfgTVDef[$lang][289]; } elseif ($row_tv[3] >= 298 && $row_tv[3] <= 301) { $tvname .= $cfgTVDef[$lang][298]; } elseif ($row_tv[3] >= 347 && $row_tv[3] <= 353) { $tvname .= $cfgTVDef[$lang][347]; } elseif ($row_tv[3] >= 356 && $row_tv[3] <= 361) { $tvname .= $cfgTVDef[$lang][356]; } elseif ($row_tv[3] >= 375 && $row_tv[3] <= 381) { $tvname .= $cfgTVDef[$lang][375]; } elseif ($row_tv[3] >= 387 && $row_tv[3] <= 391) { $tvname .= $cfgTVDef[$lang][387]; } elseif ($row_tv[3] >= 385 && $row_tv[3] <= 386) { $tvname .= $cfgTVDef[$lang][385]; } else { $tvname .= $row_tv[2]; } if ($row_tv[5] != 9) { // typ ?= ohne $tvname .= " " . $row_tv[4]; // Name of type of round } } $h = ceil($entries / $size); // calc. nbr of heats if ($_POST['mode'] == 3) { if ($h > $count_team && $count_team != 0) { $h = $count_team; } } for ($i = 1; $i <= $h; $i++) { if ($row_tv[5] != 9) { // typ != ohne mysql_query("INSERT INTO serie SET" . " xRunde = " . $round . ", xAnlage = 0" . ", Bezeichnung = " . $i . ", Film = " . $filmnr . ", MaxAthlet = " . $cfgMaxAthlete . ", TVName = '" . $tvname . " " . $i . "'"); } else { mysql_query("INSERT INTO serie SET" . " xRunde = " . $round . ", xAnlage = 0" . ", Bezeichnung = " . $i . ", Film = " . $filmnr . ", MaxAthlet = " . $cfgMaxAthlete . ", TVName = '" . $tvname . "'"); } if (mysql_errno() > 0) { // DB error AA_printErrorMsg(mysql_errno() . ": " . mysql_error()); } else { $heats[] = mysql_insert_id(); if ($filmnumber) { $filmnr++; } } } // // Mode: open or top performances together // --------------------------------------- if ($_POST['mode'] == 0 || $_POST['mode'] == 1 || $_POST['mode'] == 3) { // seed qualified athletes to heats // distribute athletes from center to outer tracks $i = 0; // heat nbr $p = 1; // first position while ($row = mysql_fetch_row($result)) { if ($p > $size) { // heat full -> start new heat if ($_POST['mode'] == 3) { if ($combined && empty($cGroup)) { if ($row[4] != $team_keep) { $i++; // next heat $p = 1; // restart with first position } } else { if ($row[3] != $team_keep) { $i++; // next heat $p = 1; // restart with first position } } } else { $i++; // next heat $p = 1; // restart with first position } } if (!empty($cfgTrackOrder[$tracks][$p]) && $_POST['mode'] != 3) { $pos = $cfgTrackOrder[$tracks][$p]; } else { $pos = $p; } $remark = ''; if ($combined) { $remark = AA_getResultRemark($row[2]); } if ($eventMerged) { if ($combined) { $roundTogether = $row[3]; } else { $roundTogether = $row[2]; } mysql_query("INSERT INTO serienstart SET" . " Position = " . $pos . ", Bahn = " . $pos . ", xSerie = " . $heats[$i] . ", xStart = " . $row[0] . ", RundeZusammen = " . $roundTogether . ", Bemerkung = '" . $remark . "'"); } else { mysql_query("INSERT INTO serienstart SET" . " Position = " . $pos . ", Bahn = " . $pos . ", xSerie = " . $heats[$i] . ", xStart = " . $row[0] . ", Bemerkung = '" . $remark . "'"); } if (mysql_errno() > 0) { // DB error AA_printErrorMsg(mysql_errno() . ": " . mysql_error()); } $p++; // next position if ($combined) { $team_keep = $row[4]; } else { $team_keep = $row[3]; } } for ($j = $i + 1; $j < $h; $j++) { $sql_del = "DELETE FROM serie WHERE Bezeichnung=" . ($j + 1); mysql_query($sql_del); } } else { if ($_POST['mode'] == 2) { // distribute entries to heats $i = 0; $p = 1; $e = 0; // even or odd --> fill the heats forward or backward if (!empty($cfgTrackOrder[$tracks][$p])) { $pos = $cfgTrackOrder[$tracks][$p]; } else { $pos = $p; } while ($row = mysql_fetch_row($result)) { if ($i >= count($heats) || $i < 0) { // end of heat array $e++; if ($e % 2 != 0) { $i = count($heats) - 1; // restart with last heat } else { $i = 0; // restart with first heat } $p++; // next position if (!empty($cfgTrackOrder[$tracks][$p])) { $pos = $cfgTrackOrder[$tracks][$p]; } else { $pos = $p; } } if ($eventMerged) { if ($combined) { $roundTogether = $row[3]; } else { $roundTogether = $row[2]; } mysql_query("INSERT INTO serienstart SET" . " Position = " . $pos . ", Bahn = " . $pos . ", xSerie = " . $heats[$i] . ", xStart = " . $row[0] . ", RundeZusammen = " . $roundTogether); } else { $sql = "INSERT INTO serienstart SET" . " Position = " . $pos . ", Bahn = " . $pos . ", xSerie = " . $heats[$i] . ", xStart = " . $row[0]; mysql_query($sql); } if (mysql_errno() > 0) { // DB error AA_printErrorMsg(mysql_errno() . ": " . mysql_error()); } if ($e % 2 != 0) { $i--; // previous heat } else { $i++; // next heat } } } } // ET mode } // ET DB error (status update) } // ET DB error (delete rounds) } // ET DB error (delete starts) } } // ET results } // ET round still active mysql_query("UNLOCK TABLES"); } } // ET DB error, entries found }
if ($tracks > 0) { // discipline run in tracks ?> <tr> <th class='dialog'><?php echo $strNbrOfTracks; ?> </th> <?php $dd = new GUI_ConfigDropDown('tracks', 'cfgTrackOrder', $tracks, '', true); ?> </tr> <?php } $presets = AA_results_getPresets($round); $svmContest = AA_checkSVMNatAC($presets['event']); if ($svmContest && ($type == $cfgDisciplineType[$strDiscTypeJump] || $type == $cfgDisciplineType[$strDiscTypeJumpNoWind] || $type == $cfgDisciplineType[$strDiscTypeHigh] || $type == $cfgDisciplineType[$strDiscTypeThrow])) { ?> <input type="hidden" name="mode" value="0"/> <?php } else { ?> <tr> <th class='dialog'><?php echo $strMode; ?> </th> <td><input name='mode' type='radio' value='0' checked> <?php echo $strModeOpen; ?>