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;
}
예제 #2
0
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']));
예제 #3
0
         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;
예제 #4
0
    }
} 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;
예제 #5
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
예제 #6
0
 /**
  * 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);
 }
예제 #7
0
     $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);
예제 #8
0
 $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
         //					{
예제 #9
0
                 $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);
예제 #10
0
         $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)) {
예제 #11
0
     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>';
 }