function SetElimArrowValue($Phase, $Event, $Target, $ArIndex, $ArSymbol, $Output = 'XML', $CompId = '') { require_once 'Common/Lib/Obj_RankFactory.php'; $JsonResult = array(); $JsonResult['error'] = 1; $JsonResult['qutarget'] = $_REQUEST['qutarget']; $JsonResult['distnum'] = $_REQUEST['distnum']; $JsonResult['arrowindex'] = $_REQUEST['arrowindex']; $JsonResult['arrowsymbol'] = ''; $JsonResult['curscore'] = ''; $JsonResult['curgold'] = ''; $JsonResult['curxnine'] = ''; $JsonResult['score'] = ''; $JsonResult['gold'] = ''; $JsonResult['xnine'] = ''; if (empty($CompId)) { $CompId = $_SESSION['TourId']; } $q = safe_r_sql("select * from Eliminations\r\n\t\twhere ElElimPhase=" . ($Phase[1] - 1) . "\r\n\t\tand ElEventCode='{$Event}'\r\n\t\tand ElTargetNo='{$Target}'\r\n\t\tand ElTournament={$CompId}\r\n\t\t"); if ($r = safe_fetch($q)) { $Arrowstring = str_pad($r->ElArrowString, $ArIndex + 1, ' ', STR_PAD_RIGHT); $xx = GetLetterFromPrint($ArSymbol); $Arrowstring[$ArIndex] = str_pad($xx, 1, ' ', STR_PAD_RIGHT); list($CurScore, $CurGold, $CurXNine) = ValutaArrowStringGX($Arrowstring); safe_w_sql("update Eliminations\r\n\t\t\tset ElArrowString='{$Arrowstring}',\r\n\t\t\tElScore={$CurScore},\r\n\t\t\tElGold={$CurGold},\r\n\t\t\tElXnine={$CurXNine}\r\n\t\t\twhere ElElimPhase=" . ($Phase[1] - 1) . "\r\n\t\t\tand ElEventCode='{$Event}'\r\n\t\t\tand ElTargetNo='{$Target}'\r\n\t\t\tand ElTournament={$CompId}"); if (safe_w_affected_rows()) { if ($Phase[1] == 1) { require_once 'Common/Fun_Sessions.inc.php'; ResetElimRows($Event, 2); } Obj_RankFactory::create('ElimInd', array('tournament' => $CompId, 'eventsC' => array($Event . '@' . $Phase[1])))->calculate(); } $JsonResult['error'] = 0; $JsonResult['arrowsymbol'] = $xx ? strtoupper($ArSymbol) : ''; $JsonResult['curscore'] = $CurScore; $JsonResult['curgold'] = $CurGold; $JsonResult['curxnine'] = $CurXNine; $JsonResult['score'] = $CurScore; $JsonResult['gold'] = $CurGold; $JsonResult['xnine'] = $CurXNine; } return $JsonResult; }
require_once dirname(dirname(__FILE__)) . '/config.php'; require_once 'Common/Lib/ArrTargets.inc.php'; require_once 'Common/Fun_Various.inc.php'; CheckTourSession(true); if (isset($_REQUEST['command'])) { if ($_REQUEST['command'] == 'SAVE') { // maneggio i simboli degli ori e delle x $golds = explode(',', $_REQUEST['d_ToGoldsChars']); $_REQUEST['d_ToGoldsChars'] = ''; foreach ($golds as $g) { $_REQUEST['d_ToGoldsChars'] .= GetLetterFromPrint(trim($g)); } $xnine = explode(',', $_REQUEST['d_ToXNineChars']); $_REQUEST['d_ToXNineChars'] = ''; foreach ($xnine as $x) { $_REQUEST['d_ToXNineChars'] .= GetLetterFromPrint(trim($x)); } $up = array(); foreach ($_REQUEST as $k => $v) { if (substr($k, 0, 2) == 'd_') { $v = StrSafe_DB($v); list(, $field) = explode('_', $k); $up[] = "{$field}={$v} "; } } $up = implode(',', $up); $q = "\r\n\t\t\t\tUPDATE\r\n\t\t\t\t\tTournament\r\n\t\t\t\tSET\r\n\t\t\t\t\t{$up}\r\n\t\t\t\tWHERE\r\n\t\t\t\t\tToId={$_SESSION['TourId']}\r\n\t\t\t"; //print $q;Exit; $r = safe_r_sql($q); // Get the "extra" options Set_Tournament_Option('OlympicFont', $font = preg_replace('/[^a-z0-9_ -]+/sim', '', $_REQUEST['OlympicFont']));
foreach ($_REQUEST['P_' . $ee . '_' . $mm] as $setPoint) { if (!is_numeric($setPoint) && $setPoint != '' or $setPoint > $MaxScores['MaxEnd']) { $Set_Error[$ee . '_' . $mm] = true; } } $Update .= ",FinSetPoints='" . implode("|", $_REQUEST['P_' . $ee . '_' . $mm]) . "' "; $Update .= ",FinScore='" . array_sum($_REQUEST['P_' . $ee . '_' . $mm]) . "' "; } } //Cerco i Tie if (isset($_REQUEST['T_' . $ee . '_' . $mm])) { // devo scrivere i punti di tie $tiebreak = ''; if (isset($_REQUEST['t_' . $ee . '_' . $mm]) && is_array($_REQUEST['t_' . $ee . '_' . $mm])) { foreach ($_REQUEST['t_' . $ee . '_' . $mm] as $TieKey => $TieValue) { $tiebreak .= GetLetterFromPrint($TieValue) != ' ' ? GetLetterFromPrint($TieValue) : ' '; } } $Update .= ",FinTieBreak=" . StrSafe_DB($tiebreak) . " "; // devo settare la tendina del tie $t = ""; if (!(is_numeric($_REQUEST['T_' . $ee . '_' . $mm]) && $_REQUEST['T_' . $ee . '_' . $mm] >= 0)) { $t = 0; } else { $t = $_REQUEST['T_' . $ee . '_' . $mm]; } /* Nel caso $t=1 la verifica che sia assegnato a chi ha l'ultima freccia di tiebreak più alta è fatta dai passaggi di classe. Segnalo se entrambe le persone hanno il bye */ $TieOk = true;
} } else { require_once 'Final/Fun_MatchTotal.inc.php'; $tgtType = 0; $Error = 1; $SQL = "SELECT EvFinalTargetType FROM Events WHERE EvCode='" . $Event . "' AND EvTeamEvent={$EventType} AND EvTournament={$CompId}"; $Rs = safe_r_sql($SQL); if ($r = safe_fetch($Rs)) { $tgtType = $r->EvFinalTargetType; $Error = 0; } $arrowIndex = $_REQUEST['arrowindex'] + 1; if (empty($_REQUEST['arrowsymbol'])) { $tmpLetter = ' '; } else { $tmpLetter = GetLetterFromPrint($_REQUEST['arrowsymbol'], 'T', $tgtType); if ($tmpLetter == ' ') { $Error = 1; } } if (!$Error) { UpdateArrowString($MatchNo, $Event, $EventType, $tmpLetter, $arrowIndex, $arrowIndex); } $JsonResult = array(); $JsonResult['error'] = $Error; $JsonResult['matchid'] = $Event . "|" . ($EventType ? "T" : "I") . "|" . $MatchNo; $JsonResult['distnum'] = 1; $JsonResult['arrowindex'] = $arrowIndex - 1; $JsonResult['arrowsymbol'] = $_REQUEST['arrowsymbol']; $JsonResult['curscore'] = 0; $JsonResult['curgold'] = 0;
$ArrowPositionDx = explode('|', str_pad($MyRow->{"Opp" . ($_REQUEST["Volee"] == 'T' ? "Tie" : "Arr") . "Pos"}, ($_REQUEST["Volee"] == 'T' ? 6 : 18) - substr_count($MyRow->{"Opp" . ($_REQUEST["Volee"] == 'T' ? "Tie" : "Arr") . "Pos"}, "|"), "|")); $startArrowString = -1; $startArrowPos = $_REQUEST["Volee"] != 'T' ? ($_REQUEST["Volee"] - 1) * $nARR : 0; foreach ($_REQUEST as $Key => $Value) { //Scorro tutti i campi di punteggio if (preg_match("/M_[0-9]+_([0-4]|t)_[0-5]/i", $Key)) { $m = -1; // MatchNo $v = -1; // Volee. E' la riga della matrice degli score. T significa TieBreak $f = -1; // Freccia. E' la colonna della matrice degli score list(, $m, $v, $f) = explode('_', $Key); // Estraggo le parti del punteggio //Cerco se il punteggio inserito è valido per il bersaglio scelto $arrKey = GetLetterFromPrint($Value); //Carico l'arrowstring if ($m % 2 == 0) { $ArrStringSx = substr_replace($ArrStringSx, $arrKey, $f, 1); } else { $ArrStringDx = substr_replace($ArrStringDx, $arrKey, $f, 1); } //Vuoto l'array posizione per tutti i "Vuoti" if ($arrKey == ' ') { ${"ArrowPosition" . ($m % 2 == 0 ? "Sx" : "Dx")}[$startArrowPos + $f] = ""; } //Calcolo la prima freccia per l'update $startArrowString = ($v != 't' && $v != 'T' ? $v * $nARR : $maxArrows) + 1; } } //Valuto l'impatto della freccia sul bersaglio
/** * Importa le sezioni <entry> verificando che siano nella forma giusta * */ public function import() { // il vettore contiene gli indici dei nodi entry non importati $badEntries = array(); // contatore dei nodi importati $importedEntries = 0; $G = $this->G; $X = $this->X; if (debug) { print 'Phase: ' . $this->getPhase() . '<br>'; print 'Session: ' . $this->getSession() . '<br>'; print 'Distance: ' . $this->getDistance() . '<br>'; print 'End: ' . $this->getEnd() . '<br>'; print 'Arrows: ' . $this->getArrows() . '<br>'; print 'MaxArrows: ' . $this->getMaxArrows() . '<br>'; } // Metodo da chimare dopo tutti gli import (in base alla fase importata) $postImportMethod = ''; // parametro per il metodo $postImportMethod $postParam = null; switch ($this->getPhase()) { case ARF::QUALIFICATION: $postImportMethod = 'resetQualsShootOff'; break; case ARF::ELIMINATION: $postImportMethod = 'resetElimShootOff'; break; case ARF::INDIVIDUAL_FINAL: case ARF::TEAM_FINAL: $postImportMethod = 'nextPhase'; break; } // collezione di entry $entries = $this->xmlDoc->getElementsByTagName('entry'); $c = $entries->length; if ($c == 0) { $this->setError(1); return false; } // il vettore contiene gli id delle persone a cui occorre azzerrare lo shootoff (QUALIFICATION e ELIMINATION) $shootOffIds = array(); // Vettore delle chiavi per il passaggio di fase (INDIVIDULAL_FINAL TEAM_FINAL) $keysNextPhase = array(); for ($i = 0; $i < $c; ++$i) { $arrowString = '##@@##'; $e = $entries->item($i); // verifico la forma del nodo if (!$this->verifyEntry($e)) { $badEntries[] = $i; continue; } $targetNo = null; $position = null; $matchNo = null; $curPhase = null; if ($this->getSession() != 'MATCH') { $targetNo = str_pad($e->getElementsByTagName('target')->item(0)->textContent, TargetNoPadding + 1, '0', STR_PAD_LEFT); } else { $position = $e->getElementsByTagName('position')->item(0)->textContent; $event = $e->getElementsByTagName('event')->item(0)->textContent; $curPhase = $e->getElementsByTagName('cur_phase')->item(0)->textContent; } $valid = $e->getElementsByTagName('valid')->item(0)->textContent; $endScore = $e->getElementsByTagName('end_total')->item(0)->textContent; $points = array(); $arrows = $e->getElementsByTagName('arrow'); foreach ($arrows as $a) { /* * Per ora se non c'è l'attributo num, la freccia viene ignorata */ /*$index=$a->getAttribute('num'); if (is_numeric($index)) $points[$index]=$a->textContent;*/ /* * Edit del precedente commento: * per ora anche se non c'è l'attributo num la freccia viene importata */ $points[] = $a->textContent; } /* * Sicuramente ho il numero corretto di frecce (lo ha verificato $this->verifyNode) * quindi posso procedere */ // Cerco la riga nella tabella appropriata $query = ""; switch ($this->getPhase()) { case ARF::QUALIFICATION: $query = "SELECT " . "QuId AS AthId,EnStatus AS AthStatus,QuD" . $this->getDistance() . "ArrowString AS ArrowString " . "FROM " . "Qualifications INNER JOIN Entries ON QuId=EnId AND EnTournament=" . $this->getTourId() . " " . "WHERE " . "QuSession=" . StrSafe_DB($this->getSession()) . " AND QuTargetNo=" . StrSafe_DB($this->getSession() . $targetNo) . " "; break; case ARF::ELIMINATION: $query = "SELECT " . "ElId AS AthId,EnStatus AS AthStatus,ElArrowString AS ArrowString " . "FROM " . "Eliminations INNER JOIN Entries ON ElId=EnId AND EnTournament=" . $this->getTourId() . " " . "WHERE " . "ElElimPhase=" . StrSafe_DB($this->getSession() - 1) . " AND ElTargetNo=" . StrSafe_DB($targetNo) . " "; break; case ARF::INDIVIDUAL_FINAL: if ($this->getSession() != 'MATCH') { $query = "SELECT " . "FinAthlete AS AthId,IF(FinAthlete!=0,0,9) AS AthStatus,FinMatchNo AS MatchNo,GrPhase,FinEvent AS Event,FSTarget,FinArrowString AS ArrowString, CONCAT(FSScheduledDate,' ',FSScheduledTime) AS Scheduled " . "FROM " . "Finals INNER JOIN FinSchedule ON FinMatchNo=FSMatchNo AND FinTournament=FSTournament " . "AND FinEvent=FSEvent AND FSTeamEvent=0 " . "INNER JOIN Grids ON FinMatchNo=GrMatchNo " . "WHERE " . "FinTournament=" . $this->getTourId() . " AND " . "FSTarget='" . substr($targetNo, 0, -1) . "' AND " . "CONCAT(FSScheduledDate,' ',FSScheduledTime)=" . StrSafe_DB($this->getSession()) . " " . "ORDER BY " . "FinEvent,FinMatchNo ASC " . "LIMIT " . (substr($targetNo, -1) == 'A' ? 0 : 1) . ",1 "; //print $query;exit; } else { $query = "SELECT " . "FinAthlete AS AthId,IF(FinAthlete!=0,0,9) AS AthStatus,FinMatchNo AS MatchNo,GrPhase,FinEvent AS Event,FSTarget,FinArrowString AS ArrowString " . "FROM " . "Finals INNER JOIN FinSchedule ON FinMatchNo=FSMatchNo AND FinTournament=FSTournament " . "AND FinEvent=FSEvent AND FSTeamEvent=0 " . "INNER JOIN Grids ON FinMatchNo=GrMatchNo " . "WHERE " . "FinTournament=" . $this->getTourId() . " AND " . "GrPosition=" . StrSafe_DB($position) . " AND " . "GrPhase=" . StrSafe_DB($curPhase) . " AND " . "FinEvent=" . StrSafe_DB($event) . " " . "ORDER BY " . "FinEvent,FinMatchNo ASC "; } break; case ARF::TEAM_FINAL: if ($this->getSession() != 'MATCH') { $query = "SELECT TfTeam AS AthId,IF(TfTeam!=0,0,9) AS AthStatus,TfMatchNo AS MatchNo,GrPhase,TfEvent AS Event,FSTarget,TfArrowString AS ArrowString " . "FROM TeamFinals INNER JOIN FinSchedule ON TfMatchNo=FSMatchNo AND TfTournament=FSTournament " . "AND TfEvent=FSEvent AND FSTeamEvent=1 " . "INNER JOIN Grids ON TfMatchNo=GrMatchNo " . "WHERE TfTournament=" . $this->getTourId() . " AND " . "FSTarget='" . substr($targetNo, 0, -1) . "' AND " . "CONCAT(FSScheduledDate,' ',FSScheduledTime)=" . StrSafe_DB($this->getSession()) . " " . "ORDER BY TfEvent,TfMatchNo ASC " . "LIMIT " . (substr($targetNo, -1) == 'A' ? 0 : 1) . ",1"; } else { $query = "SELECT TfTeam AS AthId,IF(TfTeam!=0,0,9) AS AthStatus,TfMatchNo AS MatchNo,GrPhase,TfEvent AS Event,FSTarget,TfArrowString AS ArrowString " . "FROM TeamFinals INNER JOIN FinSchedule ON TfMatchNo=FSMatchNo AND TfTournament=FSTournament " . "AND TfEvent=FSEvent AND FSTeamEvent=1 " . "INNER JOIN Grids ON TfMatchNo=GrMatchNo " . "WHERE TfTournament=" . $this->getTourId() . " AND " . "GrPosition=" . StrSafe_DB($position) . " AND " . "GrPhase=" . StrSafe_DB($curPhase) . " AND " . "TfEvent=" . StrSafe_DB($event) . " " . "ORDER BY TfEvent,TfMatchNo ASC "; } break; } if (debug) { print $query . '<br><br>'; } $rs = safe_r_sql($query); $myRow = null; $good = false; // true se il nodo è ok if ($rs) { // non trovo il bersaglio in db if (safe_num_rows($rs) == 0) { if ($valid == 1) { $badEntries[] = $i; continue; } else { continue; } } elseif (safe_num_rows($rs) == 1) { $myRow = safe_fetch($rs); // la tabella dice che tira if ($myRow->AthStatus <= 1) { // ma il file dice no if ($valid == 0) { $badEntries[] = $i; continue; } elseif ($valid == 1) { $arrowString = str_pad($myRow->ArrowString, $this->getMaxArrows(), ' ', STR_PAD_RIGHT); } } else { // il file è d'accordo if ($valid == 0) { continue; } else { $badEntries[] = $i; continue; } } } } else { $badEntries[] = $i; continue; } // Creo la nuova arrowstring e verifico il totale della volee $subArrowString = ''; $totEnd = 0; foreach ($points as $value) { $value2write = ' '; // inizializzato a blank if ($value != '#') { $totEnd += $value != 'M' && $value != 'm' ? $value : 0; $value2write = GetLetterFromPrint($value); } // Questa condizione in realtà sarebbe un errore if ($value2write == '') { $value2write = ' '; } $subArrowString .= $value2write; } // se il totale dichiarato in end_total non è coerente con i punti passati, il nodo non viene importato if ($endScore != $totEnd) { $badEntries[] = $i; continue; } if (debug) { print '..' . $subArrowString . '..(' . strlen($subArrowString) . ')<br>'; } $Ip = $this->getArrows() * ($this->getEnd() - 1); $Fp = $Ip + ($this->getArrows() - 1); $arrowString = substr_replace($arrowString, $subArrowString, $Ip, strlen($subArrowString)); //print $arrowString . '<br><br>'; if (debug) { print '..' . $arrowString . '..<br><br>'; } // Posso calcolare i punti $score = 0; $gold = 0; $xnine = 0; if ($this->getPhase() == ARF::QUALIFICATION || $this->getPhase() == ARF::ELIMINATION) { list($score, $gold, $xnine) = ValutaArrowStringGX($arrowString, $G, $X); } else { $score = ValutaArrowString($arrowString); } if (debug) { print 'Score: ' . $score . '<br>'; print 'Gold: ' . $gold . '<br>'; print 'Xnine: ' . $xnine . '<br><br>'; } // posso fare l'update $query = ""; switch ($this->getPhase()) { case ARF::QUALIFICATION: $query = "UPDATE " . "Qualifications " . "SET " . "QuD" . $this->getDistance() . "Score=" . StrSafe_DB($score) . "," . "QuD" . $this->getDistance() . "Gold=" . StrSafe_DB($gold) . "," . "QuD" . $this->getDistance() . "Xnine=" . StrSafe_DB($xnine) . ", " . "QuD" . $this->getDistance() . "ArrowString=" . StrSafe_DB($arrowString) . ", " . "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, " . "QuTimestamp=" . StrSafe_DB(date('Y-m-d H:i:s')) . " " . "WHERE " . "QuId=" . StrSafe_DB($myRow->AthId) . " "; if (debug) { print $query . '<br><br>'; } $rs = safe_w_sql($query); if ($rs) { ++$importedEntries; $shootOffIds[] = StrSafe_DB($myRow->AthId); } else { $badEntries[] = $i; continue; } break; case ARF::ELIMINATION: $query = "UPDATE " . "Eliminations " . "SET " . "ElScore=" . Strsafe_DB($score) . "," . "ElGold=" . Strsafe_DB($gold) . "," . "ElXnine=" . Strsafe_DB($xnine) . ", " . "ElArrowString=" . StrSafe_DB($arrowString) . " " . "WHERE " . "ElId=" . StrSafe_DB($myRow->AthId) . " AND ElElimPhase=" . StrSafe_DB($this->getSession() - 1) . " "; //print $query . '<br><br>'; $rs = safe_w_sql($query); if ($rs) { ++$importedEntries; $shootOffIds[] = StrSafe_DB($myRow->AthId); } else { $badEntries[] = $i; continue; } break; case ARF::INDIVIDUAL_FINAL: $query = "UPDATE Finals SET " . "FinScore=" . StrSafe_DB($score) . "," . "FinArrowString=" . StrSafe_DB($arrowString) . "," . "FinTie=0," . "FinTiebreak=NULL," . "FinTiePosition=NULL " . "WHERE FinMatchNo=" . StrSafe_DB($myRow->MatchNo) . " AND " . "FinEvent=" . StrSafe_DB($myRow->Event) . " AND FinTournament=" . $this->getTourId() . " "; $rs = safe_w_sql($query); //print $query . '<br><br>'; if ($rs) { ++$importedEntries; $keysNextPhase[$myRow->GrPhase]["'" . $myRow->Event . "'"] = 1; } else { $badEntries[] = $i; continue; } break; case ARF::TEAM_FINAL: $query = "UPDATE TeamFinals SET " . "TfScore=" . StrSafe_DB($score) . "," . "TfArrowString=" . StrSafe_DB($arrowString) . "," . "TfTie=0," . "TfTiebreak=NULL," . "TfTiePosition=NULL " . "WHERE TfMatchNo=" . StrSafe_DB($myRow->MatchNo) . " AND " . "TfEvent=" . StrSafe_DB($myRow->Event) . " AND TfTournament=" . $this->getTourId() . " "; $rs = safe_w_sql($query); //print $query . '<br><br>'; if ($rs) { ++$importedEntries; $keysNextPhase[$myRow->GrPhase]["'" . $myRow->Event . "'"] = 1; } else { $badEntries[] = $i; continue; } break; } } //exit; // Provo a post-processare i dati importati switch ($this->getPhase()) { case ARF::QUALIFICATION: case ARF::ELIMINATION: $postParam = $shootOffIds; break; case ARF::INDIVIDUAL_FINAL: case ARF::TEAM_FINAL: $postParam = $keysNextPhase; break; } $postError = false; // true se la prossima chiamata ritorna un errore if ($this->getPhase() == ARF::QUALIFICATION || $this->getPhase() == ARF::ELIMINATION) { call_user_func(array($this, $postImportMethod), $postParam, &$postError); } elseif ($this->getPhase() == ARF::INDIVIDUAL_FINAL || $this->getPhase() == ARF::TEAM_FINAL) { $team = $this->getPhase() == ARF::INDIVIDUAL_FINAL ? 0 : 1; call_user_func(array($this, $postImportMethod), $postParam, $team, &$postError); } return array($this->getTourCode(), $importedEntries, $badEntries, $postError); }
$target = new Obj_Target($validData["Arrows"]); $arrowHit = $target->getHitValue($size, $xpos, $ypos); $arrUpdate = UpdateArrowPosition($match2edit, $event, $TeamEvent, $arrowHit["X"], $arrowHit["Y"]); if (!is_null($arrUpdate)) { list($what, $index) = preg_split("/[|]/", $arrUpdate); $what = $what == 1 ? 't' : 's'; $arrow = DecodeFromLetter($arrowHit["V"]); } } // if($arrow==='0') $arrow='M'; // elseif($arrow==='0*') $arrow='M*'; //Se ho i valori di freccia, indice della textbox e tipo textbox (std o so) procedo con il salvataggio dei punti if (!(is_null($what) || is_null($arrow) || is_null($index) || !preg_match('/^[st]{1}$/i', $what))) { // Verifico la arrow se il valore è valido per il target selezionato if (array_key_exists(strtoupper(GetLetterFromPrint($arrow, $CurrentTarget)), $validData["Arrows"])) { $arrow = GetLetterFromPrint($arrow, $CurrentTarget); } else { $arrow = ' '; } // conti $ArrowStart = $index + 1; // se però ho mandato il tie devo rifare i conti if ($what == 't') { $rs = GetFinMatches($event, null, $queryMatch, $TeamEvent, false); $myRow = safe_fetch($rs); list($rows, $cols, $so) = CalcScoreRowsColsSO($myRow); $ArrowStart = $rows * $cols + 1 + $index; } UpdateArrowString($match2edit, $event, $TeamEvent, $arrow, $ArrowStart, $ArrowStart); if ($arrow == ' ') { UpdateArrowPosition($match2edit, $event, $TeamEvent, '', '', ($what == 's' ? '0' : '1') . "|" . $index);
$Select = "SELECT QuD" . $_REQUEST['Dist'] . "ArrowString AS ArrowString, DiEnds*DiArrows as MaxArrows " . "FROM Qualifications\n\t\t\t\t\tleft join DistanceInformation on DiTournament={$_SESSION['TourId']} and QuSession=DiSession and DiDistance={$_REQUEST['Dist']} and DiType='Q'" . " WHERE QuId=" . StrSafe_DB($_REQUEST['Id']) . " "; $Rs = safe_r_sql($Select); if (!$Rs || safe_num_rows($Rs) != 1) { $Errore = 1; } if ($Errore == 0) { $MyRow = safe_fetch($Rs); if ($MyRow->MaxArrows) { $MaxArrows = $MyRow->MaxArrows; } $ArrowString = str_pad($MyRow->ArrowString, $MaxArrows, ' ', STR_PAD_RIGHT); if (debug) { print '<pre>...' . $ArrowString . '...</pre><br>'; } //$Value2Write = ($_REQUEST['Point']!='' ? GetLetterFromPrint($_REQUEST['Point']) : ' '); $xx = GetLetterFromPrint($_REQUEST['Point'], $_REQUEST['Id'], $_REQUEST['Dist']); $Value2Write = $_REQUEST['Point'] != '' ? $xx != ' ' ? $xx : '' : ' '; if ($Value2Write != '') { $ArrowString[$_REQUEST['Index']] = $Value2Write; /* * se la lettera non è tra quelle buone x il bersaglio in uso ho un errore (ma se ho lo spazio no * perchè spazio vuol dire casella vuota). * Adesso questa roba la fa GetLetterFromPrint usando gli ultimi due parametri */ //print $Value2Write.'<br>'; // if ($Value2Write==' ' || in_array($Value2Write,GetGoodLettersFromDist($_REQUEST['Id'],$_REQUEST['Dist']))) // { // $ArrowString[$_REQUEST['Index']]=$Value2Write; // } // else // {
$IdAffected[] = strsafe_db($EnId); } } } else { $NotResolvedMsg[] = $Event; } } //exit; // penso ai tiebreak foreach ($_REQUEST['T'] as $EventKey => $Event) { foreach ($Event as $id => $TieArrows) { foreach ($TieArrows as $index => $Value) { if (!array_key_exists($EventKey . '_' . $id, $Ties)) { $Ties[$EventKey . '_' . $id] = str_pad('', 3, ' '); } $v = GetLetterFromPrint($Value); $Ties[$EventKey . '_' . $id] = substr_replace($Ties[$EventKey . '_' . $id], $v, $index, 1); } } } if (count($Ties) > 0) { foreach ($Ties as $Key => $Value) { list($ev, $ath) = explode('_', $Key); $x = $rank->setRow(array(array('ath' => $ath, 'event' => $ev, 'dist' => 0, 'tiebreak' => $Value))); } } if (count($IdAffected) > 0) { // Distruggo le griglie basandomi su $IdAffected $Select = "SELECT DISTINCT EvCode " . "FROM " . "Events INNER JOIN Individuals ON EvCode=IndEvent AND EvTournament=IndTournament AND EvTeamEvent=0 " . "WHERE " . "IndId IN(" . implode(',', $IdAffected) . ") AND IndTournament=" . StrSafe_DB($_SESSION['TourId']) . " "; // debug_svela($Events, true); $Rs = safe_r_sql($Select);
$FieldError = 1; } else { $Update = "UPDATE Finals SET " . "FinTie=" . StrSafe_DB($Value) . ", " . "FinDateTime=" . StrSafe_DB(date('Y-m-d H:i:s')) . " " . "WHERE FinTournament=" . StrSafe_DB($_SESSION['TourId']) . " AND FinEvent=" . StrSafe_DB($ee) . " AND FinMatchNo=" . StrSafe_DB($mm) . " "; $Rs = safe_w_sql($Update); if (debug) { print $Update . '<br>'; } if (!$Rs) { $Errore = 1; } } } elseif (substr($Key, 0, 4) == 'd_t_') { $tiebreak = ''; $tiepoints = explode('|', $_REQUEST['d_t_' . $ee . '_' . $mm]); for ($i = 0; $i < count($tiepoints); ++$i) { $tiebreak .= GetLetterFromPrint($tiepoints[$i]); } $Update = "UPDATE Finals SET " . "FinTiebreak=" . StrSafe_DB($tiebreak) . ", " . "FinDateTime=" . StrSafe_DB(date('Y-m-d H:i:s')) . " " . "WHERE FinTournament=" . StrSafe_DB($_SESSION['TourId']) . " AND FinEvent=" . StrSafe_DB($ee) . " AND FinMatchNo=" . StrSafe_DB($mm) . " "; $Rs = safe_w_sql($Update); } $xml .= '<which>' . $Which . '</which>' . "\n"; $xml .= '<field_error>' . $FieldError . '</field_error>' . "\n"; // faccio il passaggio di fase di quel matchno e di quello accoppiato if ($Errore == 0) { //Faccio i passaggi di fase $updateTS = move2NextPhase(NULL, $ee, $mm); if (!is_null($updateTS)) { $Select = "SELECT " . "FinMatchNo, FinEvent, FinAthlete, IF(EvMatchMode=0,FinScore,FinSetScore) AS Score, FinTie, " . "IFNULL(CONCAT(EnFirstName,' ',SUBSTRING(EnName,1,1),'.'),'#') AS Atleta, " . "IFNULL(CoCode,'#') AS Country " . "FROM Finals " . "INNER JOIN Events ON FinEvent=EvCode AND EvTeamEvent='0' AND EvTournament=FinTournament " . "LEFT JOIN Entries ON FinAthlete=EnId " . "LEFT JOIN Countries ON EnCountry=CoId " . "WHERE FinTournament=" . StrSafe_DB($_SESSION['TourId']) . " AND FinEvent=" . StrSafe_DB($ee) . " AND FinDateTime=" . StrSafe_DB($updateTS) . " " . "ORDER BY FinEvent, FinMatchNo"; $Rs = safe_w_sql($Select); if (safe_num_rows($Rs) > 0) { while ($MyRow = safe_fetch($Rs)) {
for ($k = 0; $k < strlen($str); ++$k) { $value = $str[$k]; if ($value == '0') { $value = 'M'; } elseif ($value == chr(158)) { $value = 10; } $ChekedValue1 = GetLetterFromPrint($value); if ($v["FlagWhat"] == -1) { // Qualifications $ChekedValue2 = GetLetterFromPrint($value, $EnId, $Dist); } else { if ($TargetType) { $ChekedValue2 = GetLetterFromPrint($value, 'T', $TargetType); } else { $ChekedValue2 = GetLetterFromPrint($value); } } $ArrowString .= $ChekedValue2; if ($ChekedValue1 != $ChekedValue2) { // value is out of range so orange! $Status[$v["TargetNo"]] = 'Orange'; } if ($value == 'E' || $value == '-' && $k < $v["LastArr"] - $v["FirstArr"] + 1) { $ArrowString .= ' '; } } $Sql = "INSERT INTO HhtData (HdEnId, HdTournament, HdTargetNo, HdRealTargetNo, HdLetter, HdDistance, HdFinScheduling, HdTeamEvent, HdArrowStart, HdArrowEnd, HdArrowString, HdHhtId, HdTimeStamp) " . "VALUES ({$EnId}, " . StrSafe_DB($_SESSION['TourId']) . ", '" . $TargetNo . "', '" . substr($TargetNo, 0, -1) . "', '" . substr($TargetNo, -1) . "', '" . $Dist . "', '" . $scheduling . "', '" . $team . "', '" . $v["FirstArr"] . "', '" . $v["LastArr"] . "', '" . $ArrowString . "', " . StrSafe_DB($_REQUEST['x_Hht']) . ", now()) " . "ON DUPLICATE KEY UPDATE HdTimeStamp=now(), HdEnId={$EnId}, HdArrowEnd='" . $v["LastArr"] . "', HdArrowString='" . $ArrowString . "', HdHhtId=" . StrSafe_DB($_REQUEST['x_Hht']); safe_w_sql($Sql); //print $Sql . '<br><br>'; }