$rs = safe_w_sql($query); if (!$rs) { $error = 1; } if ($recalc) { // ricalcolo il vecchio e il nuovo if (!is_null($indFEvent)) { RecalculateShootoffAndTeams($indFEvent, $teamFEvent, $country, $div, $cl, $zero); } // rank di classe x tutte le distanze $q = "SELECT ToNumDist FROM Tournament WHERE ToId={$_SESSION['TourId']}"; $r = safe_r_sql($q); $tmpRow = safe_fetch($r); for ($i = 0; $i < $tmpRow->ToNumDist; ++$i) { if (!is_null($indFEvent)) { CalcQualRank($i, $div . $cl); } } MakeIndAbs(); } } else { $error = 1; } /****** End Controller ******/ /****** Output ******/ $xmlDoc = new DOMDocument('1.0', PageEncode); $xmlRoot = $xmlDoc->createElement('response'); $xmlDoc->appendChild($xmlRoot); // Header $xmlHeader = $xmlDoc->createElement('header'); $xmlRoot->appendChild($xmlHeader);
/** * Viene chiamata per azzerare gli shootoff delle qualifiche * * @param array int $ids: vettore degli id di cui bisogna azzerare lo shootoof * @param boolean &$error: true se il post processo genera un errore */ private function resetQualsShootOff($ids, &$error) { /* * Se non ci sono ids buoni non ho shootoff, non ho la generazione di nulla * e il post-processing fallisce */ if (count($ids) == 0) { $error = true; return; } // shootoff $query = "UPDATE Events INNER JOIN EventClass ON EvCode=EcCode AND (EvTeamEvent='0' OR EvTeamEvent='1') AND EcTournament=" . $this->getTourId() . " " . "INNER JOIN Entries ON EcDivision=EnDivision AND EcClass=EnClass AND EnId IN(" . join(',', $ids) . ") " . "SET EvShootOff='0' " . "WHERE (EvTeamEvent='0' OR EvTeamEvent='1') AND EvTournament=" . $this->getTourId() . " "; $rs = safe_w_sql($query); set_qual_session_flags(); if (debug) { print $query . '<br><br>'; } // rank e squadre $query = "SELECT CONCAT(EnDivision,EnClass) AS MyEvent, EnCountry as MyTeam,EnDivision,EnClass " . "FROM Entries " . "WHERE EnId IN(" . join(',', $ids) . ") AND EnTournament=" . $this->getTourId() . " "; $rs = safe_r_sql($query); if (debug) { print $query . '<br><br>'; } if (safe_num_rows($rs) > 0) { while ($rr = safe_fetch($rs)) { $Evento = $rr->MyEvent; $Category = $rr->MyEvent; $Societa = $rr->MyTeam; $Div = $rr->EnDivision; $Cl = $rr->EnClass; // rank distanza if (CalcQualRank($this->getDistance(), $Evento)) { $error = true; } else { // rank totale if (CalcQualRank(0, $Evento)) { $error = true; } else { // squadre if (MakeTeams($Societa, $Category)) { $error = true; } else { if (MakeTeamsAbs($Societa, $Div, $Cl)) { $error = true; } } } } } } else { $error = true; } }
$Category = $rr->MyEvent; $Societa = $rr->MyTeam; $Div = $rr->EnDivision; $Cl = $rr->EnClass; if (CalcQualRank($_REQUEST['Dist'], $Evento)) { $Errore = 1; } } else { $Errore = 1; } if ($Errore == 0) { if (debug) { print $Evento . '<br>'; } // se non ho errori calcolo la rank globale per l'evento if (CalcQualRank(0, $Evento)) { $Errore = 1; } } // eventi di cui calcolare le rank assolute $events4abs = array(); $q = "SELECT EcCode FROM EventClass WHERE EcTournament={$_SESSION['TourId']} AND EcTeamEvent=0 AND EcDivision='" . $Div . "' AND EcClass='" . $Cl . "' "; $r = safe_r_sql($q); if ($r) { while ($tmp = safe_fetch($r)) { $events4abs[] = $tmp->EcCode; } } else { $Errore = 1; } // nuovo by simo
$Update = "UPDATE Qualifications SET " . "QuD" . $Dist . "Score=" . StrSafe_DB($Score) . "," . "QuD" . $Dist . "Gold=" . StrSafe_DB($Gold) . "," . "QuD" . $Dist . "Xnine=" . StrSafe_DB($XNine) . "," . "QuD" . $Dist . "ArrowString=" . StrSafe_DB($ArrowString) . "," . "QuD" . $Dist . "Hits=GREATEST(LENGTH(RTRIM(QuD" . $Dist . "ArrowString))," . StrSafe_DB($LastArr) . ")," . "QuScore=QuD1Score+QuD2Score+QuD3Score+QuD4Score+QuD5Score+QuD6Score+QuD7Score+QuD8Score," . "QuGold=QuD1Gold+QuD2Gold+QuD3Gold+QuD4Gold+QuD5Gold+QuD6Gold+QuD7Gold+QuD8Gold," . "QuXnine=QuD1Xnine+QuD2Xnine+QuD3Xnine+QuD4Xnine+QuD5Xnine+QuD6Xnine+QuD7Xnine+QuD8Xnine, " . "QuHits=QuD1Hits+QuD2Hits+QuD3Hits+QuD4Hits+QuD5Hits+QuD6Hits+QuD7Hits+QuD8Hits, " . "QuTimestamp=" . StrSafe_DB(date('Y-m-d H:i:s')) . " " . "WHERE QuId=" . StrSafe_DB($myRow->HdEnId) . " "; $RsUp = safe_w_sql($Update); useArrowsSnapshot($xSession, $Dist, substr($myRow->HdTargetNo, 1, -1), substr($myRow->HdTargetNo, 1, -1), $LastArr); recalSnapshot($xSession, $Dist, substr($myRow->HdTargetNo, 1, -1), substr($myRow->HdTargetNo, 1, -1)); //print $Update . '<br><br>'; // if() if ($RsUp) { $Msg .= get_text('CmdOk') . '<br>'; } else { $Msg .= '<br>'; } } // rank distanza CalcQualRank($Dist, '%'); // rank totale CalcQualRank(0, '%'); // rank abs sulla distanza CalcRank($Dist); // rank abs totale CalcRank(0); // squadre MakeTeams(NULL, NULL); MakeTeamsAbs(NULL, null, null); $Msg .= get_text('CmdImport', 'HTT') . ": " . get_text('CmdOk'); } if (!empty($_SESSION['OvrHost'])) { OvrExport($xSession, $Dist, $LastArr); } } else { $Sql = "SELECT HhtData.* " . "FROM HhtData " . ($team == 0 ? "INNER JOIN Finals ON HdEvent=FinEvent AND HdMatchNo=FinMatchNo AND HdTournament=FinTournament AND HdTeamEvent=0 " : "INNER JOIN TeamFinals ON HdEvent=TfEvent AND HdMatchNo=TfMatchNo AND HdTournament=TfTournament AND HdTeamEvent=1 ") . "WHERE HdFinScheduling=" . StrSafe_DB($when) . " AND HdTeamEvent=" . StrSafe_DB($team) . " AND HdArrowStart=" . StrSafe_DB($FirstArr) . " AND HdTournament=" . StrSafe_DB($_SESSION['TourId']) . " AND HdHhtId=" . StrSafe_DB($_REQUEST['x_Hht']) . " " . "ORDER BY HdTargetNo ASC "; $Rs = safe_r_sql($Sql);
/** * calcola la rank abs di distanza o totale * @param int $Dist * @return int: 0->ok, 1->errore */ function CalcRank($Dist = 0, $IncludeNullPoints = false) { $Errore = 0; $affected = array(); if (MakeIndividuals($affected)) { // debug_svela('qui'); $Errore = 1; } else { if (CalcQualRank($Dist, '%')) { $Errore = 1; } else { // eventi a cui azzerare gli spareggi (oltre agli $affected) $events = array(); // se la dist non è zero faccio la rank di distanza su tutti if ($Dist != 0) { if (!Obj_RankFactory::create('Abs', array('events' => '%', 'dist' => $Dist))->calculate()) { $Errore = 1; } } else { // salvo la tabella if (CreateTmpIndAndSnap() == 1) { $Errore = 1; } else { // faccio la rank ma non tocco i valori già esistenti $Opts = array('events' => '%', 'dist' => $Dist, 'skipExisting' => 1); if ($IncludeNullPoints) { $Opts['includeNullPoints'] = true; } if (!Obj_RankFactory::create('Abs', $Opts)->calculate()) { $Errore = 1; } // confronto con la vecchia tabella $events = FindIndEventsWithSOChanged(); if ($events === false) { $Errore = 1; } else { if (count($events) > 0) { $affected = array_merge($affected, $events); } // azzero gli shootoff foreach ($affected as $e) { $x = ResetShootoff($e, 0, 0); if (!$x) { $Errore = 1; } } if ($Errore == 0) { // adesso gli eventi senza spareggi (anche quelli che non provengono da questa elaborazione) $events = array(); $q = "\r\n\t\t\t\t\t\t\t\tSELECT EvCode FROM Events\r\n\t\t\t\t\t\t\t\tWHERE\r\n\t\t\t\t\t\t\t\t\tEvTournament={$_SESSION['TourId']} AND EvTeamEvent=0 AND\r\n\t\t\t\t\t\t\t\t\tEvShootOff=0 AND EvE1ShootOff=0 AND EvE2ShootOff=0\r\n\t\t\t\t\t\t\t"; $r = safe_r_sql($q); if (!$r) { $Errore = 1; } else { while ($row = safe_fetch($r)) { $events[] = $row->EvCode; } // ricalcolo la loro rank if (count($events) > 0) { if (!Obj_RankFactory::create('Abs', array('events' => $events, 'dist' => $Dist))->calculate()) { $Errore = 1; } } } } } } } } } DropTmpInd(); return $Errore; }