/**
 * 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);
}
Example #3
0
    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));