/** * MakeIndAbs() * * Crea una classifica assoluta (eventualemente mettendo a posto Individuals tramite MakeIndividuals()) * * @param int[] $Dists: vettore delle distanze su cui operare. Se null la funzione lavora * su tutte le distanze della gara più sulla zero che significa abs totale * @return int: 0 nessun errore 1 altrimenti */ function MakeIndAbs($Dists = null) { $Errore = 0; if (is_null($Dists)) { // scopro quante distanze ha la gara $q = "SELECT ToNumDist FROM Tournament WHERE ToId={$_SESSION['TourId']} "; $r = safe_r_sql($q); if ($r && safe_num_rows($r) == 1) { $row = safe_fetch($r); for ($i = 0; $i <= $row->ToNumDist; ++$i) { $Dists[] = $i; } } else { return 1; } } //print_r($Dists);exit; $affected = array(); $x = MakeIndividuals($affected); if (!$x) { if (count($affected) > 0) { foreach ($Dists as $d) { $y = Obj_RankFactory::create('Abs', array('events' => $affected, 'dist' => $d))->calculate(); if (!$y) { $Errore = 1; break; } } } } else { $Errore = 1; } return $Errore; }
function recalculateIndividuals_20101211($TournamentID) { // Popolo la tabella degli Individuals $events = array(); MakeIndividuals($events, $TournamentID); // Ottengo il numero di Distanze $MySql = "SELECT ToNumDist FROM Tournament WHERE ToId=" . StrSafe_DB($TournamentID); $rs = safe_r_SQL($MySql); $MyRow = safe_fetch($rs); safe_free_result($rs); // Calcolo la tabella Individuals per ogni distanza + il finale for ($i = 0; $i <= $MyRow->ToNumDist; $i++) { $rank = Obj_RankFactory::create('Abs', array('tournament' => $TournamentID, 'dist' => $i, 'skipExisting' => 1)); if ($rank) { $rank->calculate(); } } //Prendo le posizione dei Coin toss dalla tabella delle finali - SE senza eliminatorie $MySql = "UPDATE Individuals\n\t\tINNER JOIN Finals ON IndId=FinAthlete AND IndEvent=FinEvent AND IndTournament=FinTournament\n\t\tINNER JOIN Events ON EvCode=FinEvent AND EvTeamEvent=0 AND EvTournament=FinTournament\n\t\tINNER JOIN Grids ON GrMatchNo=FinMatchNo AND GrPhase=IF(EvFinalFirstPhase=24,32,EvFinalFirstPhase)\n\t\tSET IndRank=GrPosition\n\t\tWHERE FinTournament='{$TournamentID}' AND FinAthlete!=0 AND (EvElim1=0 AND EvElim2=0)"; safe_w_SQL($MySql); // Gestisco le posizioni a seguito dello shootoff di entrata - SE le IndRank sono a 0 $MySql = "SELECT IndId, IndEvent, QuScore, QuGold, QuXnine, IndRank\n\t\tFROM Individuals\n\t\tINNER JOIN Qualifications ON IndId=QuId\n\t\tINNER JOIN Events ON EvCode=IndEvent AND EvTeamEvent=0 AND EvTournament=IndTournament\n\t\tLEFT JOIN Finals ON IndTournament=FinTournament AND IndEvent=FinEvent AND IndId=FinAthlete\n\t\tLEFT JOIN Eliminations AS e1 ON e1.ElElimPhase=0 AND IndTournament=e1.ElTournament AND IndEvent=e1.ElEventCode AND IndId=e1.ElId\n\t\tLEFT JOIN Eliminations AS e2 ON e2.ElElimPhase=1 AND IndTournament=e2.ElTournament AND IndEvent=e2.ElEventCode AND IndId=e2.ElId\n\t\tWHERE IndTournament='{$TournamentID}' AND IndSO=1 AND IndRank=0 AND ((EvElim2=0 AND FinAthlete IS NULL) OR (EvElim2>0 AND EvElim1=0 AND e2.ElId IS NULL) OR (EvElim2>0 AND EvElim1>0 AND e1.ElId IS NULL))\n\t\tORDER BY IndEvent, QuScore DESC, QuGold DESC, QuXnine DESC, IndId\n\t\t"; $rs = safe_r_SQL($MySql); $curGroup = "-----"; $myPos = -1; $myRank = -1; $oldScore = -1; $oldGold = -1; $oldXnine = -1; while ($MyRow = safe_fetch($rs)) { if ($curGroup != $MyRow->IndEvent) { $curGroup = $MyRow->IndEvent; $myPos = $MyRow->IndRank; } $myPos++; if ($MyRow->QuScore != $oldScore || $MyRow->QuGold != $oldGold || $MyRow->QuXnine != $oldXnine) { $myRank = $myPos; } $MySql = "UPDATE Individuals\n\t\t\tSET IndRank = {$myRank}\n\t\t\tWHERE IndId='{$MyRow->IndId}' AND IndEvent='{$MyRow->IndEvent}' AND IndTournament='{$TournamentID}'"; safe_w_SQL($MySql); $oldScore = $MyRow->QuScore; $oldGold = $MyRow->QuGold; $oldXnine = $MyRow->QuXnine; } //Sistemo le Rank di quelli che NON hanno passato i gironi ELiminatori (se c'erano i gironi) e i flag di SO/CT $MySql = "SELECT EvCode, EvFinalFirstPhase, EvElim1, EvElim2 FROM Events WHERE (EvElim1!=0 OR EvElim2!=0) AND EvTournament=" . StrSafe_DB($TournamentID) . " AND EvTeamEvent=0"; $rs = safe_r_SQL($MySql); $eventsC = array(); while ($MyRow = safe_fetch($rs)) { if ($MyRow->EvElim1 > 0) { $eventsC[] = $MyRow->EvCode . "@1"; } if ($MyRow->EvElim2 > 0) { $eventsC[] = $MyRow->EvCode . "@2"; } } Obj_RankFactory::create('ElimInd', array('tournament' => $TournamentID, 'eventsC' => $eventsC, 'skipExisting' => 1))->calculate(); /* $MySql = "SELECT ElId, ElElimPhase, ElEventCode, ElQualRank, ElScore, ElGold, ElXnine, ElRank FROM Eliminations INNER JOIN Events ON EvCode=ElEventCode AND EvTeamEvent=0 AND EvTournament=ElTournament WHERE ElTournament='{$TournamentID}' AND ((EvElim1>0 AND EvE1ShootOff!=0 AND ElElimPhase=0) OR (EvElim2>0 AND EvE2ShootOff!=0 AND ElElimPhase=1)) ORDER BY ElEventCode, ElElimPhase, ElScore DESC, ElRank ASC, ElGold DESC, ElXnine DESC, ElId "; $rs = safe_r_SQL($MySql); $curGroup = "-----"; $myPos = -1; $myRank = -1; $oldScore = -1; $oldGold = -1; $oldXnine = -1; while($MyRow = safe_fetch($rs)) { if($curGroup != $MyRow->ElElimPhase . "|". $MyRow->ElEventCode) { $curGroup = $MyRow->ElElimPhase . "|". $MyRow->ElEventCode; $myPos = 0; } $myPos++; if($MyRow->ElScore != $oldScore || $MyRow->ElGold != $oldGold || $MyRow->ElXnine != $oldXnine) $myRank=$myPos; if($MyRow->ElRank == 0) { $MySql = "UPDATE Eliminations SET ElRank = {$myRank} WHERE ElElimPhase='{$MyRow->ElElimPhase}' AND ElEventCode='{$MyRow->ElEventCode}' AND ElTournament='{$TournamentID}' AND ElQualRank='{$MyRow->ElQualRank}'"; safe_w_SQL($MySql); } $oldScore = $MyRow->ElScore; $oldGold = $MyRow->ElGold; $oldXnine = $MyRow->ElXnine; } */ // Calcolo le rank Finali venendo dalle qualifiche $MySql = "SELECT EvCode, EvFinalFirstPhase, EvElim1, EvElim2 FROM Events WHERE EvTournament=" . StrSafe_DB($TournamentID) . " AND EvTeamEvent=0"; $rs = safe_r_SQL($MySql); $eventsC = array(); while ($MyRow = safe_fetch($rs)) { $eventsC[] = $MyRow->EvCode . "@-3"; if ($MyRow->EvElim1 > 0) { $eventsC[] = $MyRow->EvCode . "@-1"; } if ($MyRow->EvElim2 > 0) { $eventsC[] = $MyRow->EvCode . "@-2"; } $eventsC[] = $MyRow->EvCode . "@" . $MyRow->EvFinalFirstPhase; } Obj_RankFactory::create('FinalInd', array('tournament' => $TournamentID, 'eventsC' => $eventsC))->calculate(); safe_free_result($rs); }
foreach ($entry as $k => $v) { $tmp[] = $k . "=" . $v; } $upBody = join(',', $tmp); $query = "UPDATE " . "Entries " . "SET " . $upBody . " " . "WHERE " . "EnId=" . StrSafe_DB($id) . " "; $rs = safe_w_sql($query); if (safe_w_affected_rows()) { safe_w_sql("update Entries set EnBadgePrinted=0 where EnId={$id}"); safe_w_sql("update Qualifications set QuBacknoPrinted=0 where QuId={$id}"); } $query = "DELETE FROM " . "Photos " . "WHERE " . "PhEnId=" . StrSafe_DB($id) . " "; $rs = safe_w_sql($query); //print $query;exit; $athletes = getAthletes($id); $affected = array(); MakeIndividuals($affected); /* print '<pre>'; print_r($athletes); print '</pre>';*/ } /****** End Controller ******/ /****** Output ******/ $xmlDoc = new DOMDocument('1.0', PageEncode); $xmlRoot = $xmlDoc->createElement('response'); $xmlDoc->appendChild($xmlRoot); // Header $xmlHeader = $xmlDoc->createElement('header'); $xmlRoot->appendChild($xmlHeader); $node = $xmlDoc->createElement('error', $error); $xmlHeader->appendChild($node); $node = $xmlDoc->createElement('row', intval($row));