예제 #1
0
if (debug) {
    print $Select . '<br>';
}
$JS_SCRIPT = array('<script type="text/javascript" src="' . $CFG->ROOT_DIR . 'Final/Individual/Fun_JS.js"></script>');
$PAGE_TITLE = get_text('IndFinal');
include 'Common/Templates/head.php';
?>
<form name="FrmVolee" method="post" action="<?php 
print $_SERVER['PHP_SELF'];
?>
">
<?php 
$Rs = safe_r_sql($Select);
if (safe_num_rows($Rs) == 1) {
    $MyRow = safe_fetch($Rs);
    $obj = getEventArrowsParams($MyRow->Event, $MyRow->Phase, 0);
    //Sistemiamo i numeri di  frecce
    $nEND = $obj->ends;
    $nARR = $obj->arrows;
    $maxArrows = $nEND * $nARR;
    $nTieBreak = $obj->so;
    $SetTieSx = 0;
    $SetTieDx = 0;
    /* Preparo le variabili per i due scontri */
    $MyRow->ArrowString = str_pad($MyRow->ArrowString, $maxArrows);
    $MyRow->TieBreak = str_pad($MyRow->TieBreak, $nTieBreak);
    $MyRow->OppArrowString = str_pad($MyRow->OppArrowString, $maxArrows);
    $MyRow->OppTieBreak = str_pad($MyRow->OppTieBreak, $nTieBreak);
    $SemaforoSx = '&nbsp;';
    $SemaforoDx = '&nbsp;';
    $ScoreSx = '';
예제 #2
0
if ($Elenco != '') {
    print '<tr><td class="Bold" colspan="' . (8 - $Cols2Remove) . '">' . get_text('IndFinEventWithoutShootOff') . '</td></tr>' . "\n";
    print '<tr><td colspan="' . (8 - $Cols2Remove) . '">';
    print $Elenco;
    print '</td>';
    print '</tr>' . "\n";
    print '<tr class="Divider"><td colspan="' . (8 - $Cols2Remove) . '"></td></tr>' . "\n";
}
// tiro fuori solo gli eventi spareggiati
$Select = "SELECT FinEvent,FinMatchNo,FinTournament,FinAthlete, IF(EvMatchMode=0,FinScore,FinSetScore) AS Score, FinTie, FinTiebreak, FinSetPoints,  /* Finals*/ " . "EvProgr,EvFinalFirstPhase,EvEventName, EvMatchMode, EvMatchArrowsNo, FsTarget,\t/* Events*/ " . "GrMatchNo,GrPhase,IF(EvFinalFirstPhase=48 || EvFinalFirstPhase=24,GrPosition2, GrPosition) as GrPosition,\t/* Grids */ " . "CONCAT(EnFirstName,' ',EnName) AS Athlete,EnCountry,\t/* Entries*/ " . "CoCode,CoName\t/* Countries */ " . "FROM Finals " . "left JOIN FinSchedule ON FinEvent=FSEvent AND FsMatchNo=FinMatchNo AND FsTeamEvent='0' AND FsTournament=" . StrSafe_DB($_SESSION['TourId']) . " " . "INNER JOIN Events ON FinEvent=EvCode AND EvTeamEvent='0' AND EvTournament=" . StrSafe_DB($_SESSION['TourId']) . " " . "INNER JOIN Grids ON FinMatchNo=GrMatchNo " . "LEFT JOIN Entries ON FinAthlete=EnId " . "LEFT JOIN Countries ON EnCountry=CoId " . "WHERE FinTournament=" . StrSafe_DB($_SESSION['TourId']) . " AND EvShootOff='1' " . $QueryFilter . "ORDER BY EvProgr ASC,GrMatchNo ASC ";
$Rs = safe_r_sql($Select);
//print $Select;
if (safe_num_rows($Rs) > 0) {
    $MyEvent = '-----';
    while ($MyRow = safe_fetch($Rs)) {
        $obj = getEventArrowsParams($MyRow->FinEvent, $MyRow->GrPhase, 0);
        if ($MyEvent != $MyRow->FinEvent) {
            $ii = 0;
            $StileRiga = "";
            if ($MyEvent != '-----') {
                print '<tr><td colspan="' . (8 - $Cols2Remove) . '" class="Center"><input type="submit" value="' . get_text('CmdSave') . '" onclick="document.Frm.Command.value=\'SAVE\'"></td></tr>' . "\n";
                print '<tr class="Divider"><td></td></tr>' . "\n";
            }
            print '<tr><th colspan="' . (8 - $Cols2Remove) . '" class="Title">' . get_text($MyRow->EvEventName, '', '', true) . ' (' . $MyRow->FinEvent . ') - ' . get_text('Phase') . ' ' . get_text(namePhase($MyRow->EvFinalFirstPhase, $MyRow->GrPhase) . '_Phase') . '</th></tr>' . "\n";
            print '<tr>';
            print '<td colspan="' . (8 - $Cols2Remove) . '">';
            //$PrecPhase = ($_REQUEST['d_Phase']==0 ? 1 : ($_REQUEST['d_Phase']==32 ? 48 :$_REQUEST['d_Phase']*2));
            //$NextPhase = ($_REQUEST['d_Phase']>1 ? ($_REQUEST['d_Phase']==48 ? 32 : ($_REQUEST['d_Phase']==24 ? 16 : $_REQUEST['d_Phase']/2)) : 0);
            //print '<a class="Link" href="javascript:ChangePhase(' . $PrecPhase . ');">' . get_text('PrecPhase') . '</a>'
            if (!$useSession) {
                list($PP, $NP) = PrecNextPhaseForButton();
예제 #3
0
if ($Elenco != '') {
    print '<tr><td class="Bold" colspan="' . (8 - $Cols2Remove) . '">' . get_text('IndFinEventWithoutShootOff') . '</td></tr>' . "\n";
    print '<tr><td colspan="' . (8 - $Cols2Remove) . '">';
    print $Elenco;
    print '</td>';
    print '</tr>' . "\n";
    print '<tr class="Divider"><td colspan="' . (8 - $Cols2Remove) . '"></td></tr>' . "\n";
}
// tiro fuori solo gli eventi spareggiati
$Select = "SELECT TfEvent, TfMatchNo, TfTournament, TfTeam, IF(EvMatchMode=0,TfScore,TfSetScore) AS Score, TfTie, TfTiebreak, TfSetPoints, /* TeamFinals*/ " . "EvProgr,EvFinalFirstPhase,EvEventName, EvMatchMode, EvMatchArrowsNo, FsTarget,\t/* Events*/ " . "GrMatchNo,GrPhase,GrPosition,\t/* Grids */ " . "CONCAT(CoName, IF(TfSubTeam>'1',CONCAT(' (',TfSubTeam,')'),'')) AS TeamName,\t/* Countries*/ " . "CoCode,CoName\t/* Countries */ " . "FROM TeamFinals " . "left JOIN FinSchedule ON TfEvent=FSEvent AND FsMatchNo=TfMatchNo AND FsTeamEvent='1' AND FsTournament=" . StrSafe_DB($_SESSION['TourId']) . " " . "INNER JOIN Events ON TfEvent=EvCode AND EvTeamEvent='1' AND EvTournament=" . StrSafe_DB($_SESSION['TourId']) . " " . "INNER JOIN Grids ON TfMatchNo=GrMatchNo " . "LEFT JOIN Countries ON TfTeam=CoId " . "WHERE TfTournament=" . StrSafe_DB($_SESSION['TourId']) . " AND EvShootOff='1' " . $QueryFilter . "ORDER BY EvProgr ASC,GrMatchNo ASC ";
$Rs = safe_r_sql($Select);
//print $Select;
if (safe_num_rows($Rs) > 0) {
    $MyEvent = '-----';
    while ($MyRow = safe_fetch($Rs)) {
        $obj = getEventArrowsParams($MyRow->TfEvent, $MyRow->GrPhase, 1);
        if ($MyEvent != $MyRow->TfEvent) {
            $ii = 0;
            $StileRiga = "";
            if ($MyEvent != '-----') {
                print '<tr><td colspan="' . (8 - $Cols2Remove) . '" class="Center"><input type="submit" value="' . get_text('CmdSave') . '" onclick="document.Frm.Command.value=\'SAVE\'"></td></tr>' . "\n";
                print '<tr class="Divider"><td></td></tr>' . "\n";
            }
            print '<tr><th colspan="' . (8 - $Cols2Remove) . '" class="Title">' . get_text($MyRow->EvEventName, '', '', true) . ' (' . $MyRow->TfEvent . ') - ' . get_text('Phase') . ' ' . get_text(namePhase($MyRow->EvFinalFirstPhase, $MyRow->GrPhase) . '_Phase') . '</th></tr>' . "\n";
            print '<tr>';
            print '<td colspan="' . (8 - $Cols2Remove) . '">';
            //$PrecPhase = ($_REQUEST['d_Phase']==0 ? 1 : $_REQUEST['d_Phase']*2);
            //$NextPhase = ($_REQUEST['d_Phase']>1 ? $_REQUEST['d_Phase']/2 : 0);
            //print '<a class="Link" href="javascript:ChangePhase(' . $PrecPhase . ');">' . get_text('PrecPhase') . '</a>'
            if (!$useSession) {
                list($PP, $NP) = PrecNextPhaseForButton();
예제 #4
0
     if ($arrow == ' ') {
         UpdateArrowPosition($match2edit, $event, $TeamEvent, '', '', ($what == 's' ? '0' : '1') . "|" . $index);
     }
     $spotLimit[0] = $what == 's' ? 0 : 1;
 }
 $Select = '';
 if ($TeamEvent == 0) {
     $Select = "SELECT " . "f.FinEvent as EvCode, f.FinMatchNo as MatchNo, f2.FinMatchNo as OppMatchNo, EvMatchMode, EvMatchArrowsNo, " . "IF(f.FinDateTime>=f2.FinDateTime, f.FinDateTime, f2.FinDateTime) AS DateTime," . "f.FinScore AS Score, f.FinSetScore AS SetScore, f.FinTie as Tie, f.FinArrowString as ArString, f.FinTieBreak as TbString, " . "f2.FinScore AS OppScore, f2.FinSetScore AS OppSetScore, f2.FinTie as OppTie, f2.FinArrowString as OppArString, f2.FinTieBreak as OppTbString, " . "GrPhase, EvMaxTeamPerson " . "FROM Finals AS f " . "INNER JOIN Finals AS f2 ON f.FinEvent=f2.FinEvent AND f.FinMatchNo=IF((f.FinMatchNo % 2)=0,f2.FinMatchNo-1,f2.FinMatchNo+1) AND f.FinTournament=f2.FinTournament " . "INNER JOIN Events ON f.FinEvent=EvCode AND f.FinTournament=EvTournament AND EvTeamEvent=0 " . "INNER JOIN Grids ON f.FinMatchNo=GrMatchNo " . "WHERE f.FinTournament=" . StrSafe_DB($_SESSION['TourId']) . " AND (f.FinMatchNo % 2)=0 AND GrMatchNo=" . StrSafe_DB($queryMatch) . " AND f.FinEvent=" . StrSafe_DB($event) . " " . "ORDER BY f.FinEvent, f.FinMatchNo ";
 } else {
     $Select = "SELECT " . "f.TfEvent as EvCode, f.TfMatchNo as MatchNo, f2.TfMatchNo as OppMatchNo, EvMatchMode, EvMatchArrowsNo, " . "IF(f.TfDateTime>=f2.TfDateTime, f.TfDateTime, f2.TfDateTime) AS DateTime," . "f.TfScore AS Score, f.TfSetScore AS SetScore, f.TfTie as Tie, f.TfArrowString as ArString, f.TfTieBreak as TbString, " . "f2.TfScore AS OppScore, f2.TfSetScore AS OppSetScore, f2.TfTie as OppTie, f2.TfArrowString as OppArString, f2.TfTieBreak as OppTbString, " . "GrPhase, EvMaxTeamPerson " . "FROM TeamFinals AS f " . "INNER JOIN TeamFinals AS f2 ON f.TfEvent=f2.TfEvent AND f.TfMatchNo=IF((f.TfMatchNo % 2)=0,f2.TfMatchNo-1,f2.TfMatchNo+1) AND f.TfTournament=f2.TfTournament " . "INNER JOIN Events ON f.TfEvent=EvCode AND f.TfTournament=EvTournament AND EvTeamEvent=1 " . "INNER JOIN Grids ON f.TfMatchNo=GrMatchNo " . "WHERE f.TfTournament=" . StrSafe_DB($_SESSION['TourId']) . " AND (f.TfMatchNo % 2)=0 AND GrMatchNo=" . StrSafe_DB($queryMatch) . " AND f.TfEvent=" . StrSafe_DB($event) . " " . "ORDER BY f.TfEvent, f.TfMatchNo ";
 }
 $Rs = safe_r_sql($Select);
 //print $Select;
 if (safe_num_rows($Rs) == 1) {
     $MyRow = safe_fetch($Rs);
     $obj = getEventArrowsParams($MyRow->EvCode, $MyRow->GrPhase, $TeamEvent);
     // tiro fuori subito i vari totali visto che sono calcolati nel db
     // scores
     $xml .= '<tot_' . $queryMatch . '>' . $MyRow->Score . '</tot_' . $queryMatch . '>' . "\n";
     $xml .= '<tot_' . ($queryMatch + 1) . '>' . $MyRow->OppScore . '</tot_' . ($queryMatch + 1) . '>' . "\n";
     // setscores
     if ($MyRow->EvMatchMode == 1) {
         $xml .= '<totsets_' . $queryMatch . '>' . $MyRow->SetScore . '</totsets_' . $queryMatch . '>' . "\n";
         $xml .= '<totsets_' . ($queryMatch + 1) . '>' . $MyRow->OppSetScore . '</totsets_' . ($queryMatch + 1) . '>' . "\n";
     }
     // i progressivi
     $maxArrows = $obj->ends * $obj->arrows;
     $stepArrow = $obj->arrows;
     $SetPointsAth = array();
     $SetPointsOpp = array();
     $SetAthArr = array();
예제 #5
0
function get_already_scheduled_events($CurPhase, $CurEvent, $TeamEvent = 0)
{
    $ret = '';
    // get phase data
    $PhaseDesc = getEventArrowsParams($CurEvent, $CurPhase, $TeamEvent);
    // get time and date of 1st match of previous phase
    $q = safe_r_sql('select' . ' concat(FSScheduledDate, " ", FSScheduledTime) DateTime ' . 'from' . ' FinSchedule ' . 'where' . ' FsTournament=' . $_SESSION['TourId'] . ' and FsTeamEvent=' . $TeamEvent . ' and fsscheduleddate >0 ' . ' and FSEvent="' . $CurEvent . '"' . ' and FSMatchNo>=' . $CurPhase * 2 . ' LIMIT 1');
    $r = safe_fetch($q);
    $MyQuery = 'SELECT' . ' @Phase:=ifnull(2*pow(2,truncate(log2(fsmatchno/2),0)),1) Phase' . ' , @RealPhase:=truncate(@Phase/2, 0) RealPhase' . ' , @PhaseMatch:=(@Phase & EvMatchArrowsNo)' . ' , EvMatchArrowsNo' . ' , if(@PhaseMatch, EvElimEnds, EvFinEnds) CalcEnds' . ' , if(@PhaseMatch, EvElimArrows, EvFinArrows) CalcArrows' . ' , if(@PhaseMatch, EvElimSO, EvFinSO) CalcSO' . ' , DATE_FORMAT(FSScheduledDate,"' . get_text('DateFmtDBshort') . '") AS Dt ' . ' , DATE_FORMAT(FSScheduledDate,"' . get_text('DateFmtDB') . '") AS Dat ' . ' , ' . (defined('hideSchedulerAndAdvancedSession') ? '-1' : 'FSScheduledLen') . ' AS matchLen ' . ' , EvFinalFirstPhase ' . ' , fs.* ' . 'FROM' . ' `FinSchedule` fs' . ' INNER JOIN Events on FsEvent=EvCode and FsTeamEvent=EvTeamEvent and FsTournament=EvTournament ' . 'where' . ' FsTournament=' . $_SESSION['TourId'] . ' and FsTeamEvent=' . $TeamEvent . ' and fsscheduleddate >0 ' . ($r && $r->DateTime ? ' and concat(FSScheduledDate, " ", FSScheduledTime)>=\'' . $r->DateTime . '\' ' : '') . 'group by ' . ' CalcArrows, ' . ' FsScheduledDate, ' . ' FsScheduledTime, ' . ' FsEvent ' . 'HAVING CalcArrows=' . $PhaseDesc->arrows;
    //debug_svela($MyQuery);
    $q = safe_r_sql($MyQuery);
    $tmp = array();
    while ($r = safe_fetch($q)) {
        $tmp[$r->Dat . '§' . substr($r->FSScheduledTime, 0, 5) . '§' . $r->matchLen]['events'][get_text(namePhase($r->EvFinalFirstPhase, $r->RealPhase) . '_Phase')][] = $r->FSEvent;
        $tmp[$r->Dat . '§' . substr($r->FSScheduledTime, 0, 5) . '§' . $r->matchLen]['date'] = $r->Dt . ' ' . substr($r->FSScheduledTime, 0, 5) . (defined('hideSchedulerAndAdvancedSession') ? '' : '/' . $r->matchLen);
    }
    foreach ($tmp as $k => $v) {
        $val = array();
        foreach ($v['events'] as $ph => $ev) {
            $val[] = $ph . ' ' . implode('+', $ev) . '';
        }
        $ret .= '<option value="' . $k . '">' . $v['date'] . ': ' . implode('; ', $val) . '</option>';
    }
    if ($ret) {
        $ret = '<br/><select class="ScheduleSelect" onchange="insert_schedule_from_select(\'' . $CurEvent . '\', \'' . $CurPhase . '\', this.value)"><option value=""></option>' . $ret . '</select>';
    }
    return $ret;
}
예제 #6
0
require_once 'Common/Lib/ArrTargets.inc.php';
require_once 'Common/Fun_Phases.inc.php';
$event = isset($_REQUEST['event']) ? $_REQUEST['event'] : null;
$team = isset($_REQUEST['team']) ? $_REQUEST['team'] : null;
$match = isset($_REQUEST['match']) ? $_REQUEST['match'] : null;
$line = isset($_REQUEST['line']) ? $_REQUEST['line'] : null;
$type = isset($_REQUEST['type']) ? $_REQUEST['type'] : null;
$contrast = isset($_REQUEST['contrast']) ? $_REQUEST['contrast'] : 9;
$Errore = 0;
if (is_null($event) || is_null($team) || is_null($match) || is_null($line) || is_null($type)) {
    $Errore = 1;
}
if ($Errore == 0) {
    $rs = GetFinMatches($event, null, $match, $team, false);
    $myRow = safe_fetch($rs);
    $obj = getEventArrowsParams($myRow->event, $myRow->phase, $myRow->teamEvent);
    /*
    echo "<pre>";
    print_r($myRow);
    print_r($obj);
    echo "</pre>";
    */
    $lArr = "";
    $rArr = "";
    $lSum = "";
    $rSum = "";
    $lTot = "";
    $rTot = "";
    $dLeft = "";
    $dCenter = "";
    $dRight = "";
예제 #7
0
$json_array = array();
$json_array['distances'] = array();
$json_array['targettypes'] = array();
$json_array['archers'] = array();
if (!empty($_GET['matchid'])) {
    list($Event, $EventType, $MatchNo) = explode("|", $_GET['matchid']);
    $EventType = $EventType == 'T' ? 1 : 0;
    $Phase = 0;
    //Get the phase relatedto the matchno
    $SQL = "select GrPhase from Grids where GrMatchNo={$MatchNo}";
    $Rs = safe_r_sql($SQL);
    if ($r = safe_fetch($Rs)) {
        $Phase = $r->GrPhase;
    }
    // get the distances
    $objParam = getEventArrowsParams($Event, $Phase, $EventType, $CompId);
    $json_array['distances'][] = array('num' => 1, 'desc' => '', 'arrows' => (int) $objParam->arrows, 'ends' => (int) $objParam->ends, 'shootoff' => (int) $objParam->so);
    //get the archers
    $options['tournament'] = $CompId;
    $options['events'] = array();
    $options['events'][] = $Event . '@' . $Phase;
    $rank = null;
    if ($EventType) {
        $rank = Obj_RankFactory::create('GridTeam', $options);
    } else {
        $rank = Obj_RankFactory::create('GridInd', $options);
    }
    $rank->read();
    $Data = $rank->getData();
    //debug_svela($Data);
    foreach ($Data['sections'] as $kSec => $vSec) {
예제 #8
0
function DrawScore(&$pdf, $MyRow, $WhichScore, $WhereX, $WhereY)
{
    global $ArrowTotW, $GridHeight, $GoldW, $TotalW, $CellH, $Fasi, $TgtNoFasi, $Start2FirstPhase;
    $scoreStartX = $WhereX;
    $scoreStartY = $WhereY;
    $EventSpecs = getEventArrowsParams($MyRow->EvCode, pow(2, 3 - $WhichScore), '1');
    // 4 fixed height rows and $numCol + 1 variable rows
    $NumCol = $EventSpecs->arrows;
    $ColWidth = $ArrowTotW / $NumCol;
    $NumRows = $EventSpecs->ends;
    $TmpCellH = $GridHeight / ($NumRows + 4);
    //Header
    $pdf->SetFont($pdf->FontStd, 'B', 10);
    $pdf->SetXY($WhereX, $WhereY);
    $pdf->Cell($GoldW, $TmpCellH, '', 0, 0, 'C', 0);
    $pdf->Cell(2 * $GoldW + 2 * $TotalW + $NumCol * $ColWidth, $CellH, $Fasi[$WhichScore], 1, is_null($MyRow->{$TgtNoFasi[$WhichScore]}) ? 1 : 0, 'C', 1);
    if (!is_null($MyRow->{$TgtNoFasi[$WhichScore]})) {
        $pdf->SetXY($pdf->GetX() - 20, $pdf->GetY());
        if ($WhichScore != 3) {
            $pdf->SetFont($pdf->FontStd, '', 7);
            $pdf->Cell(20, $CellH * 0.5, get_text('Target'), 'LRT', 0, 'C', 1);
            $pdf->SetFont($pdf->FontStd, 'B', 8);
            $pdf->SetXY($pdf->GetX() - 20, $pdf->GetY() + $CellH * 0.5);
            $pdf->Cell(20, $CellH * 0.5, $MyRow->{$TgtNoFasi[$WhichScore]}, 'LRB', 0, 'C', 1);
        } else {
            $pdf->SetFont($pdf->FontStd, 'B', 8);
            $pdf->Cell(20, $CellH * 0.5, get_text('MedalGold') . ' ' . $MyRow->sGo, 'LRT', 0, 'C', 1);
            $pdf->SetXY($pdf->GetX() - 20, $pdf->GetY() + $CellH * 0.5);
            $pdf->Cell(20, $CellH * 0.5, get_text('MedalBronze') . ' ' . $MyRow->sBr, 'LRB', 0, 'C', 1);
        }
    }
    $pdf->Rect($WhereX + $GoldW + 1, $WhereY + 1, $CellH - 2, $CellH - 2, 'DF', array(), array(255, 255, 255));
    $pdf->SetDefaultColor();
    $pdf->SetXY($WhereX + $GoldW + $CellH - 1, $WhereY + 1);
    $pdf->SetFont($pdf->FontStd, 'B', 7);
    $pdf->Cell($ArrowTotW - $CellH + 1, $CellH - 2, get_text('Winner'), 0, 1, 'L', 0);
    $pdf->SetXY($pdf->GetX(), $WhereY + $CellH);
    $WhereY = $pdf->GetY();
    $pdf->SetFont($pdf->FontStd, 'B', 8);
    $pdf->SetXY($WhereX, $WhereY);
    $pdf->Cell($GoldW, $TmpCellH, '', 0, 0, 'C', 0);
    for ($j = 0; $j < $NumCol; $j++) {
        $pdf->Cell($ColWidth, $TmpCellH, $j + 1, 1, 0, 'C', 1);
    }
    $pdf->Cell($TotalW * ($MyRow->EvMatchMode == 0 ? 1 : 4 / 5), $TmpCellH, get_text($MyRow->EvMatchMode == 0 ? 'TotalProg' : 'SetTotal', 'Tournament'), 1, 0, 'C', 1);
    $pdf->Cell($TotalW * ($MyRow->EvMatchMode == 0 ? 1 : 4 / 5), $TmpCellH, get_text($MyRow->EvMatchMode == 0 ? 'TotalShort' : 'RunningTotal', 'Tournament'), 1, 0, 'C', 1);
    if ($MyRow->EvMatchMode == 0) {
        $pdf->Cell($GoldW, $TmpCellH, $pdf->prnGolds, 1, 0, 'C', 1);
        $pdf->Cell($GoldW, $TmpCellH, $pdf->prnXNine, 1, 1, 'C', 1);
    } else {
        $pdf->Cell(2 * $GoldW, $TmpCellH, get_text('SetPoints', 'Tournament'), 1, 0, 'C', 1);
        $pdf->Cell(2 / 5 * $TotalW, $TmpCellH, get_text('TotalShort', 'Tournament'), 1, 1, 'C', 1);
    }
    $WhereY = $pdf->GetY();
    //Righe
    for ($i = 1; $i <= $NumRows; $i++) {
        $pdf->SetFont($pdf->FontStd, 'B', 10);
        $pdf->SetXY($WhereX, $WhereY);
        $pdf->Cell($GoldW, $TmpCellH, $i, 1, 0, 'C', 1);
        for ($j = 0; $j < $NumCol; $j++) {
            $pdf->Cell($ColWidth, $TmpCellH, '', 1, 0, 'C', 0);
        }
        $pdf->Cell($TotalW * ($MyRow->EvMatchMode == 0 ? 1 : 4 / 5), $TmpCellH, '', 1, 0, 'C', 0);
        $pdf->Cell($TotalW * ($MyRow->EvMatchMode == 0 ? 1 : 4 / 5), $TmpCellH, '', 1, 0, 'C', 0);
        if ($MyRow->EvMatchMode == 0) {
            $pdf->Cell($GoldW, $TmpCellH, '', 1, 0, 'C', 0);
            $pdf->Cell($GoldW, $TmpCellH, '', 1, 1, 'C', 0);
        } else {
            $pdf->SetFont($pdf->FontStd, 'B', 10);
            $pdf->Cell(2 * $GoldW / 3, $TmpCellH, '2', 1, 0, 'C', 0);
            $pdf->Cell(2 * $GoldW / 3, $TmpCellH, '1', 1, 0, 'C', 0);
            $pdf->Cell(2 * $GoldW / 3, $TmpCellH, '0', 1, 0, 'C', 0);
            $pdf->Cell($TotalW * 2 / 5, $TmpCellH, '', 1, 1, 'C', 0);
        }
        $WhereY = $pdf->GetY();
    }
    //Tie Break
    $pdf->SetXY($WhereX, $WhereY + 0.5);
    $pdf->SetFont($pdf->FontStd, 'B', 8);
    $pdf->Cell($GoldW, $TmpCellH - 0.5, get_text('TB'), 1, 0, 'C', 1);
    for ($j = 0; $j < $EventSpecs->so; $j++) {
        if ($j % $MyRow->EvMaxTeamPerson == 0) {
            $pdf->SetX($pdf->GetX() + 0.5);
        }
        $pdf->Cell(($ArrowTotW - 0.5 * $EventSpecs->so / $MyRow->EvMaxTeamPerson) / $EventSpecs->so, $TmpCellH - 4, '', 1, 0, 'C', 0);
    }
    $pdf->SetXY($WhereX + $GoldW + 0.5, $WhereY + $TmpCellH - 3);
    $pdf->SetFont($pdf->FontStd, '', 1);
    $pdf->Cell(3, 3, '', 1, 0, 'R', 0);
    $pdf->SetXY($WhereX + $GoldW + 3.5, $WhereY + $TmpCellH - 3);
    $pdf->SetFont($pdf->FontStd, '', 6);
    $pdf->Cell($ArrowTotW - 3.5, 3, get_text('Close2Center', 'Tournament'), 0, 0, 'L', 0);
    //Totale
    $pdf->SetFont($pdf->FontStd, 'B', 10);
    $pdf->SetXY($WhereX + $GoldW + $ArrowTotW, $WhereY);
    $pdf->Cell($TotalW * ($MyRow->EvMatchMode == 0 ? 1 : 4 / 5), $TmpCellH, get_text('Total'), 0, 0, 'R', 0);
    $pdf->Cell($TotalW * ($MyRow->EvMatchMode == 0 ? 1 : 4 / 5), $TmpCellH, '', 1, 0, 'C', 0);
    if ($MyRow->EvMatchMode == 0) {
        $pdf->Cell($GoldW, $TmpCellH, '', 1, 0, 'C', 0);
        $pdf->Cell($GoldW, $TmpCellH, '', 1, 1, 'C', 0);
    } else {
        $pdf->Cell(2 * $GoldW, $TmpCellH, get_text('Total'), 0, 0, 'R', 0);
        $pdf->Cell(2 / 5 * $TotalW, $TmpCellH, '', 1, 1, 'C', 0);
    }
    $WhereY = $pdf->GetY() + 2;
    //Firme
    $pdf->SetXY($WhereX, $WhereY);
    $pdf->SetFont($pdf->FontStd, 'I', 7);
    $pdf->Cell($NumCol * $ColWidth + 2 * $TotalW + 3 * $GoldW, 4, get_text('Scorer'), 'B', 0, 'L', 0);
    $WhereY = $pdf->GetY() + 6;
    $pdf->SetXY($WhereX, $WhereY);
    $pdf->Cell($NumCol * $ColWidth + 2 * $TotalW + 3 * $GoldW, 4, get_text('Archers'), 'B', 0, 'L', 0);
    $WhereY = $pdf->GetY();
    if ($MyRow->isBye && $WhichScore == $Start2FirstPhase[$MyRow->EvFinalFirstPhase]) {
        $pdf->SetLineWidth(0.75);
        $pdf->Line($scoreStartX, $scoreStartY, $scoreStartX + (2 * $TotalW + $NumCol * $ColWidth + 3 * $GoldW), $WhereY + 4);
        $pdf->SetLineWidth(0.1);
    }
}
예제 #9
0
function CalcScoreRowsColsSO($myRow, $TourId = 0)
{
    $team = $myRow->teamEvent;
    $obj = getEventArrowsParams($myRow->event, $myRow->phase, $team, $TourId);
    $rows = $obj->ends;
    $cols = $obj->arrows;
    $so = $obj->so;
    return array($rows, $cols, $so);
}
function ExportASC($Event = null, $IncludeZeroInfo = true)
{
    $ToCode = '';
    $ToType = 0;
    $NumDist = 0;
    $IocCode = '';
    /*$Select
    		= "SELECT ToCode, TtNumDist, ToType "
    		. "FROM Tournament INNER JOIN Tournament*Type ON ToType=TtId "
    		. "WHERE ToId=" . StrSafe_DB($_SESSION['TourId']) . " ";*/
    $Select = "SELECT ToCode, ToNumDist AS TtNumDist, ToType, ToIocCode " . "FROM Tournament  " . "WHERE ToId=" . StrSafe_DB($_SESSION['TourId']) . " ";
    $Rs = safe_r_sql($Select);
    if (safe_num_rows($Rs) == 1) {
        $row = safe_fetch($Rs);
        $ToCode = $row->ToCode;
        $ToType = $row->ToType;
        $NumDist = $row->TtNumDist;
        $IocCode = $row->ToIocCode;
    }
    if ($ToCode == '') {
        return array('', '');
    }
    $StrData = '';
    /*
     * Tipo 0: Informazioni varie sulla ver di ianseo usata
     * Versione - data aggiornamento archivio nomi
     */
    if ($IncludeZeroInfo) {
        $r = safe_r_sql("\n\t\t\t\tSELECT\n\t\t\t\t\tgroup_concat( CONCAT( if( LupIocCode = '', '___', LupIocCode ) , '-', date_format( LupLastUpdate, '%Y%m%d%H%i%s' ) ) SEPARATOR ',' ) AS up\n\t\t\t\tFROM\n\t\t\t\t\tLookUpPaths\n\t\t\t");
        $rowUp = safe_fetch($r);
        //$StrData.='0;' . ProgramVersion . ';' . ProgramRelease . ';' . (defined('ProgramBuild') ? ProgramBuild : '') .  ';'. GetParameter('SwUpdate') . ';' . GetParameter('LueUpdat') . "\n";
        $StrData .= '0;' . ProgramVersion . ';' . ProgramRelease . ';' . (defined('ProgramBuild') ? ProgramBuild : '') . ';' . GetParameter('SwUpdate') . ';' . $rowUp->up . "\n";
    }
    /*
     * Tipo 1: Classifica di classe - Individuale
     * Matricola-Divisione-Classe-CognomeNome-Societa-AgeClass-Totale1-ori1-X1-Totale2-Ori2-X2-CodiceDiControllo-PosizioneClassificaIndividuale(999 se nn partecipa)-Status-Singole distanze
     * N.B. NON USO l'oggettone poichè ho bisogno di avere anche i non pertecipanti cl/div individuali
     */
    $Query = "SELECT " . "'1' AS RowType,EnCode as Bib, EnDivision, EnClass," . "CONCAT(EnFirstName,' ',EnName) AS Name, CoCode,EnAgeClass, ";
    if ($ToType == 8) {
        $Query .= "(QuD1Score+QuD2Score) AS Score1, " . "(QuD1Gold+QuD2Gold) AS Gold1, " . "(QuD1Xnine+QuD2Xnine) AS Xnine1, " . "(QuD3Score+QuD4Score) AS Score2, " . "(QuD3Gold+QuD4Gold) AS Gold2, " . "(QuD3Xnine+QuD4Xnine) AS Xnine2, ";
    } else {
        if ($ToType == 10 || $ToType == 12 || $ToType == 13) {
            $Query .= "(QuD1Score) AS Score1, " . "(QuD1Gold) AS Gold1, " . "(QuD1Xnine) AS Xnine1, " . "(QuD2Score) AS Score2, " . "(QuD2Gold) AS Gold2, " . "(QuD2Xnine) AS Xnine2, ";
        } else {
            $Query .= "(QuD1Score+QuD2Score+QuD3Score+QuD4Score) AS Score1, " . "(QuD1Gold+QuD2Gold+QuD3Gold+QuD4Gold) AS Gold1, " . "(QuD1Xnine+QuD2Xnine+QuD3Xnine+QuD4Xnine) AS Xnine1, " . "(QuD5Score+QuD6Score+QuD7Score+QuD8Score) AS Score2, " . "(QuD5Gold+QuD6Gold+QuD7Gold+QuD8Gold) AS Gold2, " . "(QuD5Xnine+QuD6Xnine+QuD7Xnine+QuD8Xnine) AS Xnine2, ";
        }
    }
    $Query .= "IF(EnDob!='0000-00-000',CONCAT(EnDob,'|',EnSex),EnCtrlCode) AS EnCtrlCode, IF(EnIndClEvent=1,QuClRank,999) AS ClRank,EnStatus ";
    for ($i = 1; $i <= $NumDist; ++$i) {
        $Query .= ",QuD" . $i . "Score,QuD" . $i . "Gold,QuD" . $i . "Xnine ";
    }
    $Query .= ", if(EnIocCode!='', EnIocCode, '{$IocCode}') as IocCode ";
    $Query .= "FROM " . "Qualifications INNER JOIN Entries ON QuId=EnId AND EnTournament=" . StrSafe_DB($_SESSION['TourId']) . " AND EnAthlete=1 " . "INNER JOIN Countries ON EnCountry=CoId AND EnTournament=CoTournament " . "WHERE " . "EnTournament=" . StrSafe_DB($_SESSION['TourId']) . " AND EnStatus<=1 AND QuScore>0 " . "ORDER BY " . "EnCode ASC, CONCAT(EnDivision,EnClass) ASC ";
    //print $Query;exit;
    $Rs = safe_r_sql($Query);
    if (safe_num_rows($Rs) > 0) {
        while ($MyRow = safe_fetch($Rs)) {
            $cols = array();
            foreach ($MyRow as $key => $val) {
                $cols[] = stripslashes($val);
            }
            $StrData .= implode(';', $cols) . "\n";
        }
    }
    /*
     * Tipo 2: Finale Individuale
     * Matricola-Divisione-Classe-CognomeNome-Societa-Evento-PosPartenza|FaseIniziale-CodiceControllo-PosizioneClassificaAssoluta-Scores|SetPoints_arrostringDecodificata#tieArrowstringDecodificata
     */
    // Carico le fasi in un array
    $myPhases = getPhaseArray();
    /*print '<pre>';
    		print_r($myPhases);
    		print '</pre>';
    		exit;*/
    // Genero la query che mi ritorna tutti gli eventi individuali
    $MyQuery = "SELECT EvCode, EvFinalFirstPhase, EvEventName, EvFinalPrintHead,EvMatchMode,EvMatchArrowsNo  ";
    $MyQuery .= "FROM Events ";
    $MyQuery .= "WHERE EvTournament = " . StrSafe_DB($_SESSION['TourId']) . " AND EvTeamEvent=0 ";
    if (!is_null($Event) && preg_match("/^[0-9A-Z]{1,4}\$/i", $Event)) {
        $MyQuery .= "AND EvCode LIKE '" . $Event . "' ";
    }
    $MyQuery .= "ORDER BY  EvProgr ASC, EvCode ";
    $RsEv = safe_r_sql($MyQuery);
    if (safe_num_rows($RsEv) > 0) {
        $RsEvCounter = 0;
        while ($MyRowEv = safe_fetch($RsEv)) {
            //$target=$GLOBALS{GetTargetType($MyRowEv->EvCode,0)};
            //print_r($target);
            $PhaseFields = array();
            reset($myPhases);
            //Genero la query che mi da i risultati per ogni evento
            $MyQuery = "SELECT FinAthlete, CONCAT_WS(' ',EnFirstName, EnName) as Atleta, CoCode, CoName, ";
            $Tmp = "";
            $NumPhases = 0;
            $NeedTitle = true;
            foreach ($myPhases as $Key => $Value) {
                //print $Value.'<br><br>';
                if ($Key <= valueFirstPhase($MyRowEv->EvFinalFirstPhase)) {
                    // mi servirà dopo nei calcoli dei campi!
                    $PhaseFields[] = array("X_Phase" => namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_Phase", "X_SetPoints" => namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_SetPoints", "X_Arrowstring" => namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_Arrowstring", "X_TieArrowstring" => namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_TieArrowstring", "X_Tie" => $Value . "Tie", "X_Live" => $Value . "Live", "X_Matchno" => $Value . "Matchno", "X_PhaseNo" => namePhase($MyRowEv->EvFinalFirstPhase, $Key));
                    //print_r($PhaseFields);
                    /*if($Key!=0)
                    		{
                    			$MyQuery .= "SUM(IF(GrPhase=" . $Key . ",IF(FinScore=0 && FinTie=2,(QuScore*10),FinScore),0)) as `" . $Key  . "_Phase`, SUM(IF(GrPhase=" . $Key . ",FinTie,0)) as `" . $Value . "Tie`, SUM(IF(GrPhase=" . $Key . ",LENGTH(FinArrowstring),0)) as `" . $Value . "Live`, SUM(IF(GrPhase=" . $Key . ",FinMatchNo,0)) as `" . $Value . "Matchno`, ";
                    			$Tmp = ", `" . $Key . "_Phase` DESC " . $Tmp;
                    			$NumPhases++;
                    		}
                    		else
                    		{
                    			$MyQuery .= "SUM(IF((GrPhase=0 OR GrPhase=1),FinScore,0)) as `" . $Key . "_Phase`, SUM(IF((GrPhase=0 OR GrPhase=1),FinTie,0)) as `" . $Value . "Tie`, SUM(IF((GrPhase=0 OR GrPhase=1),LENGTH(FinArrowstring),0)) as `" . $Value . "Live`, SUM(IF((GrPhase=0 OR GrPhase=1),FinMatchNo,0)) as `" . $Value . "Matchno`, ";
                    			$Tmp = ", `" . $Key . "_Phase` DESC, `" . $Value . "Tie` DESC " . $Tmp;
                    			$NumPhases++;
                    		}*/
                    if ($Key != 0) {
                        //$MyQuery .= "SUM(IF(GrPhase=" . $Key . ",IF(IF(EvMatchMode=0,FinScore,FinSetScore)=0 && FinTie=2,(QuScore*10),IF(EvMatchMode=0,FinScore,FinSetScore)),0)) as `" . namePhase($MyRowEv->EvFinalFirstPhase,$Key)  . "_Phase`, SUM(IF(GrPhase=" . $Key . ",FinTie,0)) as `" . $Value . "Tie`, MAX(IF(GrPhase=" . $Key . ",/*FinTieBreak*/'','')) as `" . $Value . "TieBreak`, GROUP_CONCAT(IF(GrPhase=" . $Key . ",FinSetPoints,'') SEPARATOR '') AS `" . namePhase($MyRowEv->EvFinalFirstPhase,$Key) . "_SetPoints`, SUM(IF(GrPhase=" . $Key . ",FinMatchNo,0)) as `" . $Value . "Matchno`, ";
                        $MyQuery .= "SUM(IF(GrPhase=" . $Key . ",IF(IF(EvMatchMode=0,FinScore,FinSetScore)=0 && FinTie=2,(QuScore*10),IF(EvMatchMode=0,FinScore,FinSetScore)),0)) as `" . namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_Phase`, SUM(IF(GrPhase=" . $Key . ",FinTie,0)) as `" . $Value . "Tie`,GROUP_CONCAT(IF(GrPhase=" . $Key . ",FinArrowstring,'') SEPARATOR '') AS `" . namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_Arrowstring`, GROUP_CONCAT(IF(GrPhase=" . $Key . ",FinTieBreak,'') SEPARATOR '') as `" . namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_TieArrowstring`, GROUP_CONCAT(IF(GrPhase=" . $Key . ",FinSetPoints,'') SEPARATOR '') AS `" . namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_SetPoints`, SUM(IF(GrPhase=" . $Key . ",FinMatchNo,0)) as `" . $Value . "Matchno`, ";
                        $Tmp = ", `" . namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_Phase` DESC " . $Tmp;
                        if ($Key == 4 && $MyRowEv->EvMatchMode != 0) {
                            $MyQuery .= "SUM(IF(GrPhase=" . $Key . ",FinSetScore,0)) as `QuarterWinner`, SUM(IF(GrPhase=" . $Key . ",FinScore,0)) as `QuarterScore`, ";
                            $Tmp = ", `QuarterWinner` DESC, `QuarterScore` DESC " . $Tmp;
                        }
                        $NumPhases++;
                    } else {
                        $MyQuery .= "SUM(IF((GrPhase=0 OR GrPhase=1),IF(EvMatchMode=0,FinScore,FinSetScore),0)) as `" . namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_Phase`, SUM(IF((GrPhase=0 OR GrPhase=1),FinTie,0)) as `" . $Value . "Tie`, GROUP_CONCAT(IF((GrPhase=0 OR GrPhase=1),FinTieBreak,'') SEPARATOR '') as `" . namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_TieArrowstring`, GROUP_CONCAT(IF((GrPhase=0 OR GrPhase=1),FinSetPoints,'')  SEPARATOR '') AS `" . namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_SetPoints`, GROUP_CONCAT(IF((GrPhase=0 OR GrPhase=1),FinArrowstring,'')  SEPARATOR '') AS `" . namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_Arrowstring`,SUM(IF((GrPhase=0 OR GrPhase=1),FinMatchNo,0)) as `" . $Value . "Matchno`, ";
                        $Tmp = ", `" . $Key . "_Phase` DESC, `" . $Value . "Tie` DESC " . $Tmp;
                        $NumPhases++;
                    }
                }
            }
            $MyQuery .= "MIN(GrPhase) as LastPhase, ifnull(CurrentPhase,128) as CurrentPhase, QuScore, IndRank,IndRankFinal,EnCode,EnDivision,EnClass,FinEvent, ";
            $MyQuery .= "IF(LENGTH(EnCtrlCode)=16,EnCtrlCode,CONCAT(EnDob,'|',EnSex)) AS EnCtrlCode,EnCode ";
            $MyQuery .= ", if(EnIocCode!='', EnIocCode, '{$IocCode}') as IocCode ";
            $MyQuery .= "FROM Finals ";
            $MyQuery .= "INNER JOIN Events ON FinEvent=EvCode AND FinTournament=EvTournament AND EvTeamEvent=0 ";
            $MyQuery .= "INNER JOIN Grids ON FinMatchNo=GrMatchNo ";
            $MyQuery .= "INNER JOIN Entries ON FinAthlete=EnId AND FinTournament=EnTournament ";
            $MyQuery .= "INNER JOIN Countries ON EnCountry=CoId AND EnTournament=CoTournament ";
            $MyQuery .= "INNER JOIN Qualifications ON EnId=QuId ";
            $MyQuery .= "INNER JOIN Individuals ON IndId=FinAthlete AND IndEvent=FinEvent AND IndTournament=FinTournament ";
            $MyQuery .= "LEFT JOIN (SELECT min(GrPhase) AS CurrentPhase, FinTournament AS SqyTournament, FinEvent AS SqyEvent " . "FROM Finals INNER JOIN Grids ON FinMatchNo=GrMatchNo " . "WHERE FinScore<>0 GROUP BY SqyTournament, SqyEvent) AS Sqy ON SqyTournament=FinTournament AND SqyEvent=FinEvent ";
            $MyQuery .= "WHERE FinTournament=" . StrSafe_DB($_SESSION['TourId']) . " AND FinEvent=" . StrSafe_DB($MyRowEv->EvCode) . " ";
            $MyQuery .= "GROUP BY FinAthlete, CONCAT_WS(' ', EnFirstName, EnName), CoCode, CoName ";
            $MyQuery .= "ORDER BY FinEvent, LastPhase ASC " . $Tmp . ", IndRank ASC";
            ///*Debug*/echo $MyQuery. "<br>&nbsp;<br>";
            //print '<br><br>'.$MyQuery.'<br><br>';
            $Rs = safe_r_sql($MyQuery);
            $MyPos = 0;
            //				$MyRank=0;
            //Se Esistono righe caricate....
            if (safe_num_rows($Rs) > 0) {
                //					$OldScore=-1;
                //					$OldTie=-1;
                //					$OldLastPhase=-1;
                //					$OldRank=-1;
                $ActualScore = 0;
                $ActualTie = -1;
                while ($MyRow = safe_fetch($Rs)) {
                    $TmpScores = array();
                    $cols = array();
                    $MyPos++;
                    // Se non ho parimerito il ranking � uguale alla posizione
                    if ($MyPos > $MyRow->CurrentPhase) {
                        $TmpScores = array();
                        $ActualScore = 0;
                        $ActualTie = -1;
                        if ($MyRowEv->EvMatchMode == 0) {
                            foreach ($PhaseFields as $i => $Val) {
                                $ActualScore = $MyRow->{$Val['X_Phase']} != 0 ? $MyRow->{$Val['X_Phase']} : $ActualScore;
                                $ActualTie = $MyRow->LastPhase < 2 ? $MyRow->{$Val['X_Tie']} : -1;
                                $TmpScores[] = ($MyRow->{$Val["X_Phase"]} == $MyRow->QuScore * 10 ? 'bye' : $MyRow->{$Val["X_Phase"]}) . '|';
                                /*print '<pre>';
                                		print_r($Val);
                                		print '</pre>';*/
                                list($tmpPhase, ) = explode('_', $Val['X_Phase']);
                                //$x=DecodeArrowstring($MyRowEv->EvMatchMode,$MyRowEv->EvMatchArrowsNo,0,0,$tmpPhase,$MyRow->{$Val["X_Arrowstring"]},$target);
                                //$x=DecodeArrowstring($MyRowEv->EvMatchMode,$MyRowEv->EvMatchArrowsNo,0,0,$tmpPhase,$MyRow->{$Val["X_Arrowstring"]});
                                $numRows = 0;
                                $numCols = 0;
                                $obj = getEventArrowsParams($MyRowEv->EvCode, $tmpPhase, 0);
                                $numRows = $obj->ends;
                                $numCols = $obj->arrows;
                                $x = DecodeArrowstring($numRows, $numCols, $MyRow->{$Val["X_Arrowstring"]});
                                $TmpScores[count($TmpScores) - 1] .= '_' . $x;
                                //$x=DecodeTieArrowstring($MyRow->{$Val['X_TieArrowstring']},$target);
                                $x = DecodeTieArrowstring($MyRow->{$Val['X_TieArrowstring']});
                                $TmpScores[count($TmpScores) - 1] .= '#' . $x;
                                //print $TmpScores[count($TmpScores)-1] . '<br>';
                            }
                            //								if ($OldScore!=$ActualScore || $OldTie!=$ActualTie || $OldLastPhase!=$MyRow->LastPhase)
                            //									$MyRank = $MyPos;
                        } else {
                            foreach ($PhaseFields as $i => $Val) {
                                /*print '<pre>';
                                		print_r($Val);
                                		print '</pre>';*/
                                $TmpScores[] = ($MyRow->{$Val["X_Phase"]} == $MyRow->QuScore * 10 ? 'bye' : $MyRow->{$Val["X_Phase"]}) . '|' . ($MyRowEv->EvMatchMode == 1 ? str_replace('|', ',', $MyRow->{$Val["X_SetPoints"]}) : '');
                                list($tmpPhase, ) = explode('_', $Val['X_Phase']);
                                //$x=DecodeArrowstring($MyRowEv->EvMatchMode,$MyRowEv->EvMatchArrowsNo,0,0,$tmpPhase,$MyRow->{$Val["X_Arrowstring"]},$target);
                                $numRows = 0;
                                $numCols = 0;
                                $obj = getEventArrowsParams($MyRowEv->EvCode, $tmpPhase, 0);
                                $numRows = $obj->ends;
                                $numCols = $obj->arrows;
                                $x = DecodeArrowstring($numRows, $numCols, $MyRow->{$Val["X_Arrowstring"]});
                                $TmpScores[count($TmpScores) - 1] .= '_' . $x;
                                //$x=DecodeTieArrowstring($MyRow->{$Val['X_TieArrowstring']},$target);
                                $x = DecodeTieArrowstring($MyRow->{$Val['X_TieArrowstring']});
                                $TmpScores[count($TmpScores) - 1] .= '#' . $x;
                                //print $TmpScores[count($TmpScores)-1] . '<br>';
                            }
                            if ($MyRow->LastPhase >= 8) {
                                //$MyRank=$MyRow->LastPhase+1;
                            } elseif ($MyRow->LastPhase == 4) {
                                $ActualScore = $MyRow->QuarterWinner;
                                $ActualTie = $MyRow->QuarterScore;
                                //									if ($OldScore!=$ActualScore || $OldTie!=$ActualTie || $OldLastPhase!=$MyRow->LastPhase)
                                //									{
                                //										$MyRank = $MyPos;
                                //									}
                            }
                        }
                    }
                    //Per i primi 4 NON vale la regola sopra
                    //						if($MyPos<=4)
                    //						{
                    //							if($MyRow->CurrentPhase==1 && $MyRank>2)
                    //								$MyRank = $MyPos;
                    //							elseif($MyRow->CurrentPhase==0)
                    //								$MyRank = $MyPos;
                    //						}
                    //Tolgo tutti Quelli da non scrivere
                    //Salvo i valori attuali e risistemo i colori
                    //						$OldScore=$ActualScore;
                    //						$OldTie=$ActualTie;
                    //						$OldLastPhase=$MyRow->LastPhase;
                    //						$OldRank=$MyRank;
                    $cols[] = 2;
                    $cols[] = $MyRow->EnCode;
                    $cols[] = $MyRow->EnDivision;
                    $cols[] = $MyRow->EnClass;
                    $cols[] = stripslashes($MyRow->Atleta);
                    $cols[] = $MyRow->CoCode;
                    $cols[] = $MyRow->FinEvent;
                    $cols[] = $MyRow->IndRank . '|' . $MyRowEv->EvFinalFirstPhase;
                    $cols[] = $MyRow->EnCtrlCode;
                    //$cols[]=$MyRank;
                    //print $MyRow->IndRankFinal.'<br>';
                    $cols[] = $MyRow->IndRankFinal;
                    $cols[] = $MyRow->IocCode;
                    $StrData .= join(';', $cols) . ';' . join(';', $TmpScores) . "\n";
                }
            }
        }
    }
    //exit;
    /*
     * Tipo 3: Classifica di classe - Squadre
     * CodiceSocieta-Divisione-Classe-Totale1-ori1-X1-Totale2-Ori2-X2-PosizioneClassifica-MatricolaPartecipanti(in lista)
     */
    $MyQuery = "SELECT TcOrder,CoCode, TeEvent,Quanti,EnCode, EnClass, EnDivision,EnAgeClass, ";
    if ($ToType == 8) {
        $MyQuery .= "(QuD1Score+QuD2Score) AS Score1, " . "(QuD1Gold+QuD2Gold) AS Gold1, " . "(QuD1Xnine+QuD2Xnine) AS Xnine1, " . "(QuD3Score+QuD4Score) AS Score2, " . "(QuD3Gold+QuD4Gold) AS Gold2, " . "(QuD3Xnine+QuD4Xnine) AS Xnine2, ";
    } else {
        if ($ToType == 10 || $ToType == 12 || $ToType == 13) {
            $MyQuery .= "(QuD1Score) AS Score1, " . "(QuD1Gold) AS Gold1, " . "(QuD1Xnine) AS Xnine1, " . "(QuD2Score) AS Score2, " . "(QuD2Gold) AS Gold2, " . "(QuD2Xnine) AS Xnine2, ";
        } else {
            $MyQuery .= "(QuD1Score+QuD2Score+QuD3Score+QuD4Score) AS Score1, " . "(QuD1Gold+QuD2Gold+QuD3Gold+QuD4Gold) AS Gold1, " . "(QuD1Xnine+QuD2Xnine+QuD3Xnine+QuD4Xnine) AS Xnine1, " . "(QuD5Score+QuD6Score+QuD7Score+QuD8Score) AS Score2, " . "(QuD5Gold+QuD6Gold+QuD7Gold+QuD8Gold) AS Gold2, " . "(QuD5Xnine+QuD6Xnine+QuD7Xnine+QuD8Xnine) AS Xnine2, ";
        }
    }
    $MyQuery .= "QuScore, QuGold,QuXnine,TeScore, TeRank, TeGold, TeXnine, ToGolds AS TtGolds, ToXNine AS TtXNine ";
    $MyQuery .= ", if(EnIocCode!='', EnIocCode, '{$IocCode}') as IocCode ";
    $MyQuery .= "FROM Tournament AS t ";
    $MyQuery .= "INNER JOIN Teams AS te ON t.ToId=te.TeTournament AND te.TeFinEvent=0 ";
    $MyQuery .= "INNER JOIN Countries AS c ON te.TeCoId=c.CoId AND te.TeTournament=c.CoTournament ";
    $MyQuery .= "INNER JOIN (SELECT TcCoId, TcSubTeam, TcEvent, TcFinEvent, COUNT(TcId) as Quanti FROM TeamComponent WHERE TcTournament=" . StrSafe_DB($_SESSION['TourId']) . " GROUP BY TcCoId, TcSubTeam, TcEvent, TcFinEvent ORDER BY TcOrder ASC) AS sq ON te.TeCoId=sq.TcCoId AND te.TeEvent=sq.TcEvent AND te.TeSubTeam=sq.TcSubTeam AND te.TeFinEvent=sq.TcFinEvent ";
    $MyQuery .= "INNER JOIN TeamComponent AS tc ON te.TeCoId=tc.TcCoId AND te.TeEvent=tc.TcEvent AND te.TeTournament=tc.TcTournament AND te.TeFinEvent=tc.TcFinEvent ";
    $MyQuery .= "INNER JOIN Entries AS en ON tc.TcId=en.EnId ";
    $MyQuery .= "INNER JOIN Qualifications AS q ON en.EnId=q.QuId ";
    $MyQuery .= "LEFT JOIN Classes AS cl ON en.EnClass=cl.ClId AND ClTournament=" . StrSafe_DB($_SESSION['TourId']) . " ";
    $MyQuery .= "LEFT JOIN Divisions AS d ON en.EnDivision=d.DivId AND DivTournament=" . StrSafe_DB($_SESSION['TourId']) . " ";
    $MyQuery .= "WHERE ToId = " . StrSafe_DB($_SESSION['TourId']) . " ";
    $MyQuery .= "ORDER BY TeEvent, TeScore DESC, TeGold DESC, TeXnine DESC, CoCode,TcOrder";
    //print $MyQuery;exit;
    $Rs = safe_r_sql($MyQuery);
    if (safe_num_rows($Rs) > 0) {
        $CurEvent = "";
        $CurTeam = "";
        // Variabili per la gestione del ranking
        $MyRank = 1;
        $MyPos = 0;
        // Variabili che contengono i punti del precedente atleta per la gestione del rank
        $MyScoreOld = 0;
        $MyGoldOld = 0;
        $MyXNineOld = 0;
        $Score1 = 0;
        $Score2 = 0;
        $Gold1 = 0;
        $Gold2 = 0;
        $Xnine1 = 0;
        $Xnine2 = 0;
        $TmpMatr = '';
        while ($MyRow = safe_fetch($Rs)) {
            if ($CurEvent != $MyRow->TeEvent) {
                // ultimo totale prima di cambiare evento
                if ($CurEvent != '') {
                    $StrData .= $Score1 . ';' . $Gold1 . ';' . $Xnine1 . ';' . $Score2 . ';' . $Gold2 . ';' . $Xnine2 . ';' . $MyRank . ';' . substr($TmpMatr, 0, -1) . "\n";
                }
                $TmpMatr = '';
                $CurTeam = "";
                $MyRank = 1;
                $MyPos = 0;
                $MyScoreOld = 0;
                $MyGoldOld = 0;
                $MyXNineOld = 0;
                $Score1 = 0;
                $Score2 = 0;
                $Gold1 = 0;
                $Gold2 = 0;
                $Xnine1 = 0;
                $Xnine2 = 0;
            }
            if ($CurTeam != $MyRow->CoCode) {
                if ($CurTeam != '') {
                    $StrData .= $Score1 . ';' . $Gold1 . ';' . $Xnine1 . ';' . $Score2 . ';' . $Gold2 . ';' . $Xnine2 . ';' . $MyRank . ';' . substr($TmpMatr, 0, -1) . "\n";
                    $TmpMatr = '';
                    $Score1 = 0;
                    $Score2 = 0;
                    $Gold1 = 0;
                    $Gold2 = 0;
                    $Xnine1 = 0;
                    $Xnine2 = 0;
                }
                $MyPos++;
                // Se non ho parimerito il ranking ? uguale alla posizione
                if (!($MyRow->TeScore == $MyScoreOld && $MyRow->TeGold == $MyGoldOld && $MyRow->TeXnine == $MyXNineOld)) {
                    $MyRank = $MyPos;
                }
                $StrData .= '3;' . $MyRow->CoCode . ';' . substr($MyRow->TeEvent, 0, 2) . ';' . substr($MyRow->TeEvent, 2, 2) . ';';
            }
            $Score1 += $MyRow->Score1;
            $Gold1 += $MyRow->Gold1;
            $Xnine1 += $MyRow->Xnine1;
            $Score2 += $MyRow->Score2;
            $Gold2 += $MyRow->Gold2;
            $Xnine2 += $MyRow->Xnine2;
            $TmpMatr .= $MyRow->EnCode . ';';
            $CurEvent = $MyRow->TeEvent;
            $CurTeam = $MyRow->CoCode;
            $MyScoreOld = $MyRow->TeScore;
            $MyGoldOld = $MyRow->TeGold;
            $MyXNineOld = $MyRow->TeXnine;
        }
        // ultimissimo totale
        $StrData .= $Score1 . ';' . $Gold1 . ';' . $Xnine1 . ';' . $Score2 . ';' . $Gold2 . ';' . $Xnine2 . ';' . $MyRank . ';' . substr($TmpMatr, 0, -1) . "\n";
    }
    //print $StrData;Exit;
    /*
     * Tipo 4: Finale a Squadre
     * CodiceSocieta-Evento-PosPartenza|FaseIniziale-PosizioneClassifica-ScoresDelleFasi
     */
    //Carico le fasi in un array
    $myPhases = getPhaseArray();
    //Genero la query che mi ritorna tutti gli eventi a squadre
    $MyQuery = "SELECT EvCode, EvFinalFirstPhase, EvEventName, EvFinalPrintHead,EvMatchMode,EvMatchArrowsNo,EvMixedTeam ";
    $MyQuery .= "FROM Events ";
    $MyQuery .= "WHERE EvTournament = " . StrSafe_DB($_SESSION['TourId']) . " AND EvTeamEvent=1 ";
    if (!is_null($Event) && preg_match("/^[0-9A-Z]{1,4}\$/i", $Event)) {
        $MyQuery .= "AND EvCode LIKE '" . $Event . "' ";
    }
    $MyQuery .= "ORDER BY  EvProgr ASC, EvCode ";
    $RsEv = safe_r_sql($MyQuery);
    if (safe_num_rows($RsEv) > 0) {
        $RsEvCounter = 0;
        while ($MyRowEv = safe_fetch($RsEv)) {
            //$target=$GLOBALS{GetTargetType($MyRowEv->EvCode,1)};
            $PhaseFields = array();
            reset($myPhases);
            //Genero la query che mi da i risultati per ogni evento
            $MyQuery = "SELECT TfTeam, CoName, CoCode, TeRank,TeRankFinal, ";
            $Tmp = "";
            $NumPhases = 0;
            $NeedTitle = true;
            while (list($Key, $Value) = each($myPhases)) {
                if ($Key <= valueFirstPhase($MyRowEv->EvFinalFirstPhase)) {
                    // mi servirà dopo nei calcoli dei campi!
                    $PhaseFields[] = array("X_Phase" => namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_Phase", "X_SetPoints" => namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_SetPoints", "X_Arrowstring" => namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_Arrowstring", "X_TieArrowstring" => namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_TieArrowstring", "X_Tie" => $Value . "Tie", "X_Live" => $Value . "Live", "X_Matchno" => $Value . "Matchno");
                    /*if($Key!=0)
                    		{
                    			$MyQuery .= "SUM(IF(GrPhase=" . $Key . ",IF(TfScore=0 && TfTie=2,(TeScore*10),TfScore),0)) as `" . $Key  . "_Phase`, SUM(IF(GrPhase=" . $Key . ",TfTie,0)) as `" . $Value . "Tie`, SUM(IF(GrPhase=" . $Key . ",LENGTH(TfArrowstring),0)) as `" . $Value . "Live`, SUM(IF(GrPhase=" . $Key . ",TfMatchNo,0)) as `" . $Value . "Matchno`, ";
                    			$Tmp = ", `" . $Key . "_Phase` DESC " . $Tmp;
                    			$NumPhases++;
                    		}
                    		else
                    		{
                    			$MyQuery .= "SUM(IF((GrPhase=0 OR GrPhase=1),TfScore,0)) as `" . $Key . "_Phase`, SUM(IF((GrPhase=0 OR GrPhase=1),TfTie,0)) as `" . $Value . "Tie`, SUM(IF((GrPhase=0 OR GrPhase=1),LENGTH(TfArrowstring),0)) as `" . $Value . "Live`, SUM(IF((GrPhase=0 OR GrPhase=1),TfMatchNo,0)) as `" . $Value . "Matchno`, ";
                    			$Tmp = ", `" . $Key . "_Phase` DESC, `" . $Value . "Tie` DESC " . $Tmp;
                    			$NumPhases++;
                    		}*/
                    if ($Key != 0) {
                        //$MyQuery .= "SUM(IF(GrPhase=" . $Key . ",IF(IF(EvMatchMode=0,FinScore,FinSetScore)=0 && FinTie=2,(QuScore*10),IF(EvMatchMode=0,FinScore,FinSetScore)),0)) as `" . namePhase($MyRowEv->EvFinalFirstPhase,$Key)  . "_Phase`, SUM(IF(GrPhase=" . $Key . ",FinTie,0)) as `" . $Value . "Tie`,GROUP_CONCAT(IF(GrPhase=" . $Key . ",FinArrowstring,'') SEPARATOR '') AS `" . namePhase($MyRowEv->EvFinalFirstPhase,$Key) . "_Arrowstring`, GROUP_CONCAT(IF(GrPhase=" . $Key . ",FinTieBreak,'') SEPARATOR '') as `" . namePhase($MyRowEv->EvFinalFirstPhase,$Key) . "_TieArrowstring`, GROUP_CONCAT(IF(GrPhase=" . $Key . ",FinSetPoints,'') SEPARATOR '') AS `" . namePhase($MyRowEv->EvFinalFirstPhase,$Key) . "_SetPoints`, SUM(IF(GrPhase=" . $Key . ",FinMatchNo,0)) as `" . $Value . "Matchno`, ";
                        $MyQuery .= "SUM(IF(GrPhase=" . $Key . ",IF(TfScore=0 && TfTie=2,(TeScore*10),TfScore),0)) as `" . $Key . "_Phase`, SUM(IF(GrPhase=" . $Key . ",TfTie,0)) as `" . $Value . "Tie`, GROUP_CONCAT(IF(GrPhase=" . $Key . ",TfTieBreak,'') SEPARATOR '') as `" . namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_TieArrowstring`, GROUP_CONCAT(IF(GrPhase=" . $Key . ",TfSetPoints,'') SEPARATOR '') AS `" . namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_SetPoints`, GROUP_CONCAT(IF(GrPhase=" . $Key . ",TfArrowstring,'') SEPARATOR '') AS `" . namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_Arrowstring`, SUM(IF(GrPhase=" . $Key . ",TfMatchNo,0)) as `" . $Value . "Matchno`, ";
                        $Tmp = ", `" . $Key . "_Phase` DESC " . $Tmp;
                        if ($Key == 4) {
                            $MyQuery .= "SUM(IF(GrPhase=" . $Key . ",TfScore,0)) as `QuarterScore`, ";
                            $Tmp = ", `QuarterScore` DESC " . $Tmp;
                        }
                        $NumPhases++;
                    } else {
                        //$MyQuery .= "SUM(IF((GrPhase=0 OR GrPhase=1),IF(EvMatchMode=0,FinScore,FinSetScore),0)) as `" . $Key . "_Phase`, SUM(IF((GrPhase=0 OR GrPhase=1),FinTie,0)) as `" . $Value . "Tie`, GROUP_CONCAT(IF((GrPhase=0 OR GrPhase=1),FinTieBreak,'') SEPARATOR '') as `" . namePhase($MyRowEv->EvFinalFirstPhase,$Key) . "_TieArrowstring`, GROUP_CONCAT(IF((GrPhase=0 OR GrPhase=1),FinSetPoints,'')  SEPARATOR '') AS `" . $Key. "_SetPoints`, GROUP_CONCAT(IF((GrPhase=0 OR GrPhase=1),FinArrowstring,'')  SEPARATOR '') AS `" . namePhase($MyRowEv->EvFinalFirstPhase,$Key). "_Arrowstring`,SUM(IF((GrPhase=0 OR GrPhase=1),FinMatchNo,0)) as `" . $Value . "Matchno`, ";
                        $MyQuery .= "SUM(IF((GrPhase=0 OR GrPhase=1),TfScore,0)) as `" . $Key . "_Phase`, SUM(IF((GrPhase=0 OR GrPhase=1),TfTie,0)) as `" . $Value . "Tie`, GROUP_CONCAT(IF((GrPhase=0 OR GrPhase=1),TfTieBreak,'')) as `" . namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_TieArrowstring`,GROUP_CONCAT(IF((GrPhase=0 OR GrPhase=1),TfSetPoints,'') SEPARATOR '') AS `" . namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_SetPoints`, GROUP_CONCAT(IF((GrPhase=0 OR GrPhase=1),TfArrowstring,'') SEPARATOR '') AS `" . namePhase($MyRowEv->EvFinalFirstPhase, $Key) . "_Arrowstring`,  SUM(IF((GrPhase=0 OR GrPhase=1),TfMatchNo,0)) as `" . $Value . "Matchno`, ";
                        $Tmp = ", `" . $Key . "_Phase` DESC, `" . $Value . "Tie` DESC " . $Tmp;
                        $NumPhases++;
                    }
                }
            }
            $MyQuery .= "MIN(GrPhase) as LastPhase, ifnull(CurrentPhase,128) as CurrentPhase, TeScore ";
            $MyQuery .= "FROM TeamFinals ";
            $MyQuery .= "INNER JOIN Events ON TfEvent=EvCode AND TfTournament=EvTournament AND EvTeamEvent=1 ";
            $MyQuery .= "INNER JOIN Grids ON TfMatchNo=GrMatchNo ";
            $MyQuery .= "INNER JOIN Countries ON TfTeam=CoId AND TfTournament=CoTournament ";
            $MyQuery .= "INNER JOIN Teams ON TfTeam=TeCoId AND TfEvent=TeEvent AND TfTournament=TeTournament AND TeFinEvent=1 ";
            $MyQuery .= "LEFT JOIN (SELECT min(GrPhase) AS CurrentPhase, TfTournament AS SqyTournament, TfEvent AS SqyEvent " . "FROM TeamFinals INNER JOIN Grids ON TfMatchNo=GrMatchNo " . "WHERE TfScore<>0 GROUP BY SqyTournament, SqyEvent) AS Sqy ON SqyTournament=TfTournament AND SqyEvent=TfEvent ";
            $MyQuery .= "WHERE TfTournament=" . StrSafe_DB($_SESSION['TourId']) . " AND TfEvent=" . StrSafe_DB($MyRowEv->EvCode) . " ";
            $MyQuery .= "GROUP BY TfTeam, CoName, CoCode ";
            $MyQuery .= "ORDER BY TfEvent, LastPhase ASC " . $Tmp . ", TeRank ASC";
            //print $MyQuery . "<br>";
            $Rs = safe_r_sql($MyQuery);
            $MyPos = 0;
            //	$MyRank=0;
            //Se Esistono righe caricate....
            if (safe_num_rows($Rs) > 0) {
                //					if($RsEvCounter++)
                //						$pdf->AddPage();
                //					$pdf->SetXY(10,$pdf->GetY()+5);
                //					$OldScore=-1;
                //					$OldTie=-1;
                //					$OldLastPhase=-1;
                $ActualScore = 0;
                $ActualTie = -1;
                $ActualMatch = 0;
                while ($MyRow = safe_fetch($Rs)) {
                    $TmpScores = array();
                    $cols = array();
                    $MyPos++;
                    // Se non ho parimerito il ranking � uguale alla posizione
                    if ($MyPos > $MyRow->CurrentPhase) {
                        $TmpScores = array();
                        $ActualScore = 0;
                        $ActualMatch = 0;
                        $ActualTie = -1;
                        foreach ($PhaseFields as $Key => $Val) {
                            $ActualScore = $MyRow->{$Val["X_Phase"]} != 0 ? $MyRow->{$Val["X_Phase"]} : $ActualScore;
                            $ActualMatch = $MyRow->{$Val["X_Matchno"]} != 0 ? $MyRow->{$Val["X_Matchno"]} : $ActualMatch;
                            $ActualTie = $MyRow->LastPhase < 2 ? $MyRow->{$Val["X_Tie"]} : -1;
                            $TmpScores[] = ($MyRow->{$Val["X_Phase"]} == $MyRow->TeScore * 10 ? 'bye' : $MyRow->{$Val["X_Phase"]}) . '|';
                            list($tmpPhase, ) = explode('_', $Val['X_Phase']);
                            //$x=DecodeArrowstring($MyRowEv->EvMatchMode,$MyRowEv->EvMatchArrowsNo,1,$MyRowEv->EvMixedTeam,$tmpPhase,$MyRow->{$Val["X_Arrowstring"]},$target);
                            //$x=DecodeArrowstring($MyRowEv->EvMatchMode,$MyRowEv->EvMatchArrowsNo,1,$MyRowEv->EvMixedTeam,$tmpPhase,$MyRow->{$Val["X_Arrowstring"]});
                            $numRows = 0;
                            $numCols = 0;
                            $obj = getEventArrowsParams($MyRowEv->EvCode, $tmpPhase, 1);
                            $numRows = $obj->ends;
                            $numCols = $obj->arrows;
                            $x = DecodeArrowstring($numRows, $numCols, $MyRow->{$Val["X_Arrowstring"]});
                            $TmpScores[count($TmpScores) - 1] .= '_' . $x;
                            //$x=DecodeTieArrowstring($MyRow->{$Val['X_TieArrowstring']},$target);
                            $x = DecodeTieArrowstring($MyRow->{$Val['X_TieArrowstring']});
                            $TmpScores[count($TmpScores) - 1] .= '#' . $x;
                        }
                        if ($MyRow->LastPhase >= 8) {
                            //	$MyRank=$MyRow->LastPhase+1;
                        } elseif ($MyRow->LastPhase == 4) {
                            $ActualScore = $MyRow->QuarterScore;
                            $ActualTie = $MyRow->QuarterScore;
                            //								if ($OldScore!=$ActualScore || $OldTie!=$ActualTie || $OldLastPhase!=$MyRow->LastPhase)
                            //								{
                            //									$MyRank = $MyPos;
                            //								}
                        }
                    }
                    //						else
                    //							$MyRank = -1;
                    //Per i primi 4 NON vale la regola sopra
                    //						if($MyPos<=4)
                    //						{
                    //							if($MyRow->CurrentPhase==1 && $MyRank>2)
                    //								$MyRank = $MyPos;
                    //							elseif($MyRow->CurrentPhase==0)
                    //								$MyRank = $MyPos;
                    //
                    //						}
                    //Tolgo tutti Quelli da non scrivere
                    //Salvo i valori attuali e risistemo i colori
                    //						$OldScore=$ActualScore;
                    //						$OldTie=$ActualTie;
                    //						$OldLastPhase=$MyRow->LastPhase;
                    //						$OldMatch=$ActualMatch;
                    $cols[] = '4';
                    $cols[] = $MyRow->CoCode;
                    $cols[] = $MyRowEv->EvCode;
                    $cols[] = $MyRow->TeRank . '|' . $MyRowEv->EvFinalFirstPhase;
                    //$cols[]=$MyRank;
                    $cols[] = $MyRow->TeRankFinal;
                    $StrData .= join(';', $cols) . ';' . join(';', $TmpScores) . "\n";
                }
            }
        }
    }
    /*
     * Tipo 5/6: Classifica eliminatorie, fase 1 e fase 2
     * Matricola-Divisione-Classe-CognomeNome-Societa-Evento-Totale-Ori-X-CodiceFiscale-PosizioneClassifica
     *
     */
    for ($tipo = 5; $tipo <= 6; ++$tipo) {
        $phase = $tipo - 5;
        $Query = "SELECT " . "'" . $tipo . "' AS RowType,EnCode as Bib, EnDivision, EnClass," . "CONCAT(EnFirstName,' ',EnName) AS Name, CoCode,ElEventCode, " . "ElScore,ElGold,ElXnine,EnCtrlCode,ElRank " . "FROM " . "Entries " . "INNER JOIN " . "Countries " . "ON EnCountry=CoId AND EnTournament=CoTournament " . "INNER JOIN " . "Eliminations " . "ON EnId=ElId AND EnTournament=" . StrSafe_DB($_SESSION['TourId']) . " AND ElElimPhase=" . $phase . " " . "ORDER BY " . "ElEventCode ASC, (ElScore*1.0) DESC, ElRank ASC, ElGold DESC, ElXnine DESC ";
        //print $Query . '<br><br/>';
        $Rs = safe_r_sql($Query);
        $CurEvent = "";
        // Variabili per la gestione del ranking
        //			$MyRank = 1;
        //			$MyPos = 0;
        // Variabili che contengono i punti del precedente atleta per la gestione del rank
        //			$MyScoreOld = 0;
        //			$MyGoldOld = 0;
        //			$MyXNineOld = 0;
        if (safe_num_rows($Rs) > 0) {
            while ($myRow = safe_fetch($Rs)) {
                //					if ($CurEvent!=$myRow->ElEventCode)
                //					{
                //
                //						$MyRank = 1;
                //						$MyPos = 0;
                //						$MyScoreOld = 0;
                //						$MyGoldOld = 0;
                //						$MyXNineOld = 0;
                //					}
                //
                //					++$MyPos;
                //					if (!($myRow->ElScore==$MyScoreOld && $myRow->ElGold==$MyGoldOld && $myRow->ElXnine==$MyXNineOld))
                //						$MyRank = $MyPos;
                $StrData .= $myRow->RowType . ';' . $myRow->Bib . ';' . $myRow->EnDivision . ';' . $myRow->EnClass . ';' . $myRow->Name . ';' . $myRow->CoCode . ';' . $myRow->ElEventCode . ';' . $myRow->ElScore . ';' . $myRow->ElGold . ';' . $myRow->ElXnine . ';' . $myRow->EnCtrlCode . ';' . $myRow->ElRank . "\n";
                //					$MyScoreOld = $myRow->ElScore;
                //					$MyGoldOld = $myRow->ElGold;
                //					$MyXNineOld = $myRow->ElXnine;
                $CurEvent = $myRow->ElEventCode;
            }
        }
    }
    /*
     * Tipo 7: assoluti individuali
     * Matricola-Divisione-Classe-CognomeNome-Societa-CodiceEvento-Totale1-ori1-X1-Totale2-Ori2-X2-CodiceDiControllo-PosizioneClassificaIndividuale(999 se nn partecipa)-Status-Singole distanze-tiearrowstring
     */
    $MyQuery = "SELECT EnCode as Bib, EnName AS Name, CONCAT(EnFirstName,' ',EnName) AS Name,SUBSTRING(QuTargetNo,1,1) AS Session, SUBSTRING(QuTargetNo,2) AS TargetNo, CoCode AS NationCode, CoName AS Nation, EnClass AS ClassCode, EnAgeClass as AgeClass, EnDivision AS DivCode, EvCode as EventCode, EvEventName as EventName, EvQualPrintHead,";
    $MyQuery .= "IF(EvElim1=0 && EvElim2=0,(EvFinalFirstPhase*2),IF(EvElim1=0,EvElim2,EvElim1)) as QualifiedNo, ";
    $MyQuery .= "ToNumDist AS NumDist, Td1, Td2, Td3, Td4, Td5, Td6, Td7, Td8, ";
    for ($i = 1; $i <= $NumDist; ++$i) {
        $MyQuery .= "QuD" . $i . "Score,QuD" . $i . "Gold,QuD" . $i . "Xnine,QuD" . $i . "Arrowstring AS Arrowstring" . $i . ", ";
    }
    $MyQuery .= "QuScore, IndRank, QuGold, QuXnine, ToGolds AS TtGolds, ToXNine AS TtXNine,  ";
    if ($ToType == 8) {
        $MyQuery .= "(QuD1Score+QuD2Score) AS Score1, " . "(QuD1Gold+QuD2Gold) AS Gold1, " . "(QuD1Xnine+QuD2Xnine) AS Xnine1, " . "(QuD3Score+QuD4Score) AS Score2, " . "(QuD3Gold+QuD4Gold) AS Gold2, " . "(QuD3Xnine+QuD4Xnine) AS Xnine2, ";
    } else {
        if ($ToType == 10 || $ToType == 12 || $ToType == 13) {
            $MyQuery .= "(QuD1Score) AS Score1, " . "(QuD1Gold) AS Gold1, " . "(QuD1Xnine) AS Xnine1, " . "(QuD2Score) AS Score2, " . "(QuD2Gold) AS Gold2, " . "(QuD2Xnine) AS Xnine2, ";
        } else {
            $MyQuery .= "(QuD1Score+QuD2Score+QuD3Score+QuD4Score) AS Score1, " . "(QuD1Gold+QuD2Gold+QuD3Gold+QuD4Gold) AS Gold1, " . "(QuD1Xnine+QuD2Xnine+QuD3Xnine+QuD4Xnine) AS Xnine1, " . "(QuD5Score+QuD6Score+QuD7Score+QuD8Score) AS Score2, " . "(QuD5Gold+QuD6Gold+QuD7Gold+QuD8Gold) AS Gold2, " . "(QuD5Xnine+QuD6Xnine+QuD7Xnine+QuD8Xnine) AS Xnine2, ";
        }
    }
    $MyQuery .= "QuTieBreak AS ArrowstringTie, ";
    $MyQuery .= "IF(LENGTH(EnCtrlCode)=16,EnCtrlCode,CONCAT(EnDob,'|',EnSex)) AS EnCtrlCode, IndRank, EnStatus ";
    $MyQuery .= "FROM Tournament AS t ";
    $MyQuery .= "INNER JOIN Entries AS e ON t.ToId=e.EnTournament ";
    $MyQuery .= "INNER JOIN Countries AS c ON e.EnCountry=c.CoId AND e.EnTournament=c.CoTournament ";
    $MyQuery .= "INNER JOIN Qualifications AS q ON e.EnId=q.QuId ";
    $MyQuery .= "INNER JOIN EventClass AS ec ON e.EnClass=ec.EcClass AND e.EnDivision=ec.EcDivision AND e.EnTournament=ec.EcTournament AND ec.EcTeamEvent=0 ";
    $MyQuery .= "INNER JOIN Events AS ev ON ev.EvCode=ec.EcCode AND ev.EvTeamEvent=ec.EcTeamEvent AND ev.EvTournament=ec.EcTournament ";
    $MyQuery .= "INNER JOIN Individuals i ON i.IndId=e.EnId AND i.IndEvent=ev.EvCode AND i.IndTournament=e.EnTournament ";
    $MyQuery .= "LEFT JOIN TournamentDistances AS td ON t.ToType=td.TdType and TdTournament=ToId AND CONCAT(TRIM(e.EnDivision),TRIM(e.EnClass)) LIKE TdClasses ";
    //Where Normale
    $MyQuery .= "WHERE EnAthlete=1 AND EnIndFEvent=1 AND EnStatus <= 1  AND QuScore<>'0' AND ToId = " . StrSafe_DB($_SESSION['TourId']) . " ";
    $MyQuery .= "ORDER BY EvProgr, EvCode, QuScore DESC, IndRank ASC, QuGold DESC, QuXnine DESC, IndRank, EnFirstName,EnName ";
    //print $MyQuery;exit;
    $Rs = safe_r_sql($MyQuery);
    //$target=$GLOBALS['TrgOutdoor'];
    if ($Rs && safe_num_rows($Rs) > 0) {
        $CurGroup = "....";
        // Variabili per la gestione del ranking
        $MyRank = 1;
        //$MyPos = 0;
        $EndQualified = false;
        // Variabili che contengono i punti del precedente atleta per la gestione del rank
        //			$MyScoreOld = 0;
        //			$MyGoldOld = 0;
        //			$MyXNineOld = 0;
        $MyEndScore = -1;
        $MyGroupStartPos = 0;
        $CurrentRow = -1;
        while ($MyRow = safe_fetch($Rs)) {
            $CurrentRow++;
            if ($CurGroup != $MyRow->EventCode) {
                $CurGroup = $MyRow->EventCode;
                //					$MyRank = 1;
                //					$MyPos = 0;
                //					$MyScoreOld = 0;
                //					$MyGoldOld = 0;
                //					$MyXNineOld = 0;
                $EndQualified = false;
                $MyGroupStartPos = $CurrentRow;
                //Carico l'ultimo punteggio per entrare
                // Vado a brancare la riga con l'ultimo Score buono
                if (safe_num_rows($Rs) > $MyGroupStartPos + $MyRow->QualifiedNo) {
                    safe_data_seek($Rs, $MyGroupStartPos + $MyRow->QualifiedNo - 1);
                    $tmpMyRow = safe_fetch($Rs);
                    if ($CurGroup == $tmpMyRow->EventCode) {
                        $MyEndScore = $tmpMyRow->QuScore;
                        $tmpMyRow = safe_fetch($Rs);
                        //Controllo se c'è parimerito per entrare
                        if ($MyEndScore != $tmpMyRow->QuScore || $CurGroup != $tmpMyRow->EventCode) {
                            $MyEndScore *= -1;
                        }
                    } else {
                        $MyEndScore = -1;
                    }
                    $tmpMyRow = NULL;
                } else {
                    safe_data_seek($Rs, safe_num_rows($Rs) - 1);
                    $tmpMyRow = safe_fetch($Rs);
                    $MyEndScore = -1;
                }
                safe_data_seek($Rs, $MyGroupStartPos + 1);
            }
            $MyRank = $MyRow->IndRank;
            //$MyPos++;
            // Se non ho parimerito il ranking è uguale alla posizione
            //				if($MyEndScore == $MyRow->QuScore)  //Spareggio
            //				{
            //					if ($MyRow->QuScore!=$MyScoreOld)
            //						$MyRank = $MyPos;
            //				}
            //				else
            //				{
            //					if (!($MyRow->QuScore==$MyScoreOld && $MyRow->QuGold==$MyGoldOld && $MyRow->QuXnine==$MyXNineOld))
            //						$MyRank = $MyPos;
            //				}
            if ($MyRank > $MyRow->QualifiedNo && !$EndQualified) {
                $EndQualified = true;
            }
            //				$MyScoreOld = $MyRow->QuScore;
            //				$MyGoldOld = $MyRow->QuGold;
            //				$MyXNineOld = $MyRow->QuXnine;
            // qui butto fuori la riga
            $cols = array();
            $cols[] = 7;
            $cols[] = $MyRow->Bib;
            $cols[] = $MyRow->DivCode;
            $cols[] = $MyRow->ClassCode;
            $cols[] = $MyRow->Name;
            $cols[] = $MyRow->NationCode;
            $cols[] = $MyRow->EventCode;
            $cols[] = $MyRow->Score1;
            $cols[] = $MyRow->Gold1;
            $cols[] = $MyRow->Xnine1;
            $cols[] = $MyRow->Score2;
            $cols[] = $MyRow->Gold2;
            $cols[] = $MyRow->Xnine2;
            $cols[] = $MyRow->EnCtrlCode;
            //$cols[]=($MyRow->IndRank==0 ? $MyRank : $MyRow->IndRank);
            $cols[] = $MyRank;
            $cols[] = $MyRow->EnStatus;
            for ($i = 1; $i <= $NumDist; ++$i) {
                $cols[] = $MyRow->{'QuD' . $i . 'Score'};
                $cols[] = $MyRow->{'QuD' . $i . 'Gold'};
                $cols[] = $MyRow->{'QuD' . $i . 'Xnine'};
                $c = array();
                $v = $MyRow->{'Arrowstring' . $i};
                for ($k = 0; $k < strlen($v); ++$k) {
                    $c[] = DecodeFromLetter($v[$k]);
                }
                $cols[] = implode(',', $c);
            }
            $c = array();
            $v = $MyRow->ArrowstringTie;
            for ($k = 0; $k < strlen($v); ++$k) {
                $c[] = DecodeFromLetter($v[$k]);
            }
            $cols[] = implode(',', $c);
            $StrData .= join(';', $cols) . "\n";
        }
    }
    /*
     * Tipo 8: Assoluti a squadre
     * CodiceSocieta-Evento-Totale1-ori1-X1-Totale2-Ori2-X2-PosizioneClassifica-MatricolaPartecipanti(in lista)
     */
    /*$MyQuery = "SELECT EnCode,CoCode AS NationCode, TeSubTeam as SubTeam, CoName AS Nation, TeEvent, EvEventName, Quanti, EnFirstName as FirstName, EnName AS Name,  EnClass AS ClassCode, EnDivision AS DivCode,EnAgeClass as AgeClass,  EnSubClass as SubClass, sqY.QuantiPoss as NumGialli, (EvFinalFirstPhase*2) as QualifiedNo, EvQualPrintHead, ";
    		$MyQuery.= "QuScore, TeScore, TeRank, TeGold, TeXnine, TtGolds, TtXNine, ";
    		if ($ToType==8)
    		{
    			$MyQuery .= "(QuD1Score+QuD2Score) AS Score1, "
    				. "(QuD1Gold+QuD2Gold) AS Gold1, "
    				. "(QuD1Xnine+QuD2Xnine) AS Xnine1, "
    				. "(QuD3Score+QuD4Score) AS Score2, "
    				. "(QuD3Gold+QuD4Gold) AS Gold2, "
    				. "(QuD3Xnine+QuD4Xnine) AS Xnine2 ";
    		}
    		else if ($ToType==10 || $ToType==12 || $ToType==13)
    		{
    			$MyQuery .= "(QuD1Score) AS Score1, "
    				. "(QuD1Gold) AS Gold1, "
    				. "(QuD1Xnine) AS Xnine1, "
    				. "(QuD2Score) AS Score2, "
    				. "(QuD2Gold) AS Gold2, "
    				. "(QuD2Xnine) AS Xnine2 ";
    		}
    		else
    		{
    			$MyQuery .= "(QuD1Score+QuD2Score+QuD3Score+QuD4Score) AS Score1, "
    				. "(QuD1Gold+QuD2Gold+QuD3Gold+QuD4Gold) AS Gold1, "
    				. "(QuD1Xnine+QuD2Xnine+QuD3Xnine+QuD4Xnine) AS Xnine1, "
    				. "(QuD5Score+QuD6Score+QuD7Score+QuD8Score) AS Score2, "
    				. "(QuD5Gold+QuD6Gold+QuD7Gold+QuD8Gold) AS Gold2, "
    				. "(QuD5Xnine+QuD6Xnine+QuD7Xnine+QuD8Xnine) AS Xnine2 ";
    		}
    		$MyQuery.= "FROM Tournament AS t ";
    		$MyQuery.= "INNER JOIN Tournament*Type AS tt ON t.ToType=tt.TtId ";
    		$MyQuery.= "INNER JOIN Teams AS te ON t.ToId=te.TeTournament AND te.TeFinEvent=1 ";
    		$MyQuery.= "INNER JOIN Countries AS c ON te.TeCoId=c.CoId AND te.TeTournament=c.CoTournament ";
    		$MyQuery.= "INNER JOIN Events AS ev ON te.TeEvent=ev.EvCode AND t.ToId=ev.EvTournament AND EvTeamEvent=1 ";
    		$MyQuery.= "INNER JOIN (SELECT TcCoId, TcSubTeam, TcEvent, TcTournament, TcFinEvent, COUNT(TcId) as Quanti FROM TeamComponent GROUP BY TcCoId, TcSubTeam, TcEvent, TcTournament) AS sq ON te.TeCoId=sq.TcCoId AND te.TeSubTeam=sq.TcSubTeam AND te.TeEvent=sq.TcEvent AND te.TeTournament=sq.TcTournament AND te.TeFinEvent=sq.TcFinEvent ";
    		$MyQuery.= "INNER JOIN TeamComponent AS tc ON te.TeCoId=tc.TcCoId AND te.TeSubTeam=tc.TcSubTeam AND  te.TeEvent=tc.TcEvent AND te.TeTournament=tc.TcTournament AND te.TeFinEvent=tc.TcFinEvent ";
    		$MyQuery.= "INNER JOIN Entries AS en ON tc.TcId=en.EnId ";
    		$MyQuery.= "INNER JOIN Qualifications AS q ON en.EnId=q.QuId ";
    		//Contatori per Coin toss  & Spareggi
    		$MyQuery .= "INNER JOIN (SELECT Count(*) as QuantiPoss, EvCode as SubCode, TeScore AS Score, TeGold AS Gold, TeXnine AS XNine "
    			. "FROM  Teams "
    			. "INNER JOIN Events ON TeEvent=EvCode AND TeTournament=EvTournament AND EvTeamEvent=1 "
    			. "WHERE TeTournament = " . StrSafe_DB($_SESSION['TourId']) . " "
    			. "GROUP BY TeScore, EvCode, TeGold, TeXnine) AS sqY ON sqY.Score=te.TeScore AND sqY.Gold=te.TeGold AND sqY.Xnine=te.TeXnine AND ev.EvCode=sqY.SubCode ";
    		//Where Normale
    		$MyQuery.= "WHERE ToId = " . StrSafe_DB($_SESSION['TourId']) . " ";
    		//if(isset($_REQUEST["Definition"]))
    		//	$MyQuery .= "AND te.TeEvent LIKE " . StrSafe_DB($_REQUEST["Definition"]) . " ";
    		$MyQuery.= "ORDER BY EvProgr,TeEvent, TeScore DESC, TeGold DESC, TeXnine DESC, TeRank, NationCode, SubTeam, TcOrder ";*/
    $MyQuery = "SELECT EnCode,CoCode AS NationCode, TeSubTeam as SubTeam, CoName AS Nation, TeEvent, EvEventName, Quanti, EnFirstName as FirstName, EnName AS Name,  EnClass AS ClassCode, EnDivision AS DivCode,EnAgeClass as AgeClass,  EnSubClass as SubClass, sqY.QuantiPoss as NumGialli, (EvFinalFirstPhase*2) as QualifiedNo, EvQualPrintHead, ";
    $MyQuery .= "QuScore, TeScore, TeRank, TeGold, TeXnine, ToGolds AS TtGolds, ToXNine AS TtXNine, ";
    if ($ToType == 8) {
        $MyQuery .= "(QuD1Score+QuD2Score) AS Score1, " . "(QuD1Gold+QuD2Gold) AS Gold1, " . "(QuD1Xnine+QuD2Xnine) AS Xnine1, " . "(QuD3Score+QuD4Score) AS Score2, " . "(QuD3Gold+QuD4Gold) AS Gold2, " . "(QuD3Xnine+QuD4Xnine) AS Xnine2 ";
    } else {
        if ($ToType == 10 || $ToType == 12 || $ToType == 13) {
            $MyQuery .= "(QuD1Score) AS Score1, " . "(QuD1Gold) AS Gold1, " . "(QuD1Xnine) AS Xnine1, " . "(QuD2Score) AS Score2, " . "(QuD2Gold) AS Gold2, " . "(QuD2Xnine) AS Xnine2 ";
        } else {
            $MyQuery .= "(QuD1Score+QuD2Score+QuD3Score+QuD4Score) AS Score1, " . "(QuD1Gold+QuD2Gold+QuD3Gold+QuD4Gold) AS Gold1, " . "(QuD1Xnine+QuD2Xnine+QuD3Xnine+QuD4Xnine) AS Xnine1, " . "(QuD5Score+QuD6Score+QuD7Score+QuD8Score) AS Score2, " . "(QuD5Gold+QuD6Gold+QuD7Gold+QuD8Gold) AS Gold2, " . "(QuD5Xnine+QuD6Xnine+QuD7Xnine+QuD8Xnine) AS Xnine2 ";
        }
    }
    $MyQuery .= "FROM Tournament AS t ";
    $MyQuery .= "INNER JOIN Teams AS te ON t.ToId=te.TeTournament AND te.TeFinEvent=1 ";
    $MyQuery .= "INNER JOIN Countries AS c ON te.TeCoId=c.CoId AND te.TeTournament=c.CoTournament ";
    $MyQuery .= "INNER JOIN Events AS ev ON te.TeEvent=ev.EvCode AND t.ToId=ev.EvTournament AND EvTeamEvent=1 ";
    $MyQuery .= "INNER JOIN (SELECT TcCoId, TcSubTeam, TcEvent, TcTournament, TcFinEvent, COUNT(TcId) as Quanti FROM TeamComponent GROUP BY TcCoId, TcSubTeam, TcEvent, TcTournament) AS sq ON te.TeCoId=sq.TcCoId AND te.TeSubTeam=sq.TcSubTeam AND te.TeEvent=sq.TcEvent AND te.TeTournament=sq.TcTournament AND te.TeFinEvent=sq.TcFinEvent ";
    $MyQuery .= "INNER JOIN TeamComponent AS tc ON te.TeCoId=tc.TcCoId AND te.TeSubTeam=tc.TcSubTeam AND  te.TeEvent=tc.TcEvent AND te.TeTournament=tc.TcTournament AND te.TeFinEvent=tc.TcFinEvent ";
    $MyQuery .= "INNER JOIN Entries AS en ON tc.TcId=en.EnId ";
    $MyQuery .= "INNER JOIN Qualifications AS q ON en.EnId=q.QuId ";
    //Contatori per Coin toss  & Spareggi
    $MyQuery .= "INNER JOIN (SELECT Count(*) as QuantiPoss, EvCode as SubCode, TeScore AS Score, TeGold AS Gold, TeXnine AS XNine " . "FROM  Teams " . "INNER JOIN Events ON TeEvent=EvCode AND TeTournament=EvTournament AND EvTeamEvent=1 " . "WHERE TeTournament = " . StrSafe_DB($_SESSION['TourId']) . " " . "GROUP BY TeScore, EvCode, TeGold, TeXnine) AS sqY ON sqY.Score=te.TeScore AND sqY.Gold=te.TeGold AND sqY.Xnine=te.TeXnine AND ev.EvCode=sqY.SubCode ";
    //Where Normale
    $MyQuery .= "WHERE ToId = " . StrSafe_DB($_SESSION['TourId']) . " ";
    //if(isset($_REQUEST["Definition"]))
    //	$MyQuery .= "AND te.TeEvent LIKE " . StrSafe_DB($_REQUEST["Definition"]) . " ";
    $MyQuery .= "ORDER BY EvProgr,TeEvent, TeScore DESC, TeGold DESC, TeXnine DESC, TeRank, NationCode, SubTeam, TcOrder ";
    //print $MyQuery;exit;
    $Rs = safe_r_sql($MyQuery);
    if ($Rs && safe_num_rows($Rs) > 0) {
        $CurGroup = "....";
        $CurTeam = "";
        // Variabili per la gestione del ranking
        //$MyRank = 1;
        //$MyPos = 0;
        $EndQualified = false;
        // Variabili che contengono i punti del precedente atleta per la gestione del rank
        //			$MyScoreOld = 0;
        //			$MyGoldOld = 0;
        //			$MyXNineOld = 0;
        $MyEndScore = -1;
        $MyGroupStartPos = 0;
        $CurrentRow = -1;
        $cols = array();
        $tmpMatr = array();
        $score1 = 0;
        $score2 = 0;
        $gold1 = 0;
        $gold2 = 0;
        $x1 = 0;
        $x2 = 0;
        while ($MyRow = safe_fetch($Rs)) {
            $CurrentRow++;
            if ($CurGroup != $MyRow->TeEvent) {
                $CurGroup = $MyRow->TeEvent;
                //					$MyRank = 1;
                //					$MyPos = 0;
                //					$MyScoreOld = 0;
                //					$MyGoldOld = 0;
                //					$MyXNineOld = 0;
                $EndQualified = false;
                $MyGroupStartPos = $CurrentRow;
                if (safe_num_rows($Rs) > $MyGroupStartPos + $MyRow->QualifiedNo * $MyRow->Quanti) {
                    safe_data_seek($Rs, $MyGroupStartPos + ($MyRow->QualifiedNo - 1) * $MyRow->Quanti);
                    $tmpMyRow = safe_fetch($Rs);
                    if ($CurGroup == $tmpMyRow->TeEvent) {
                        $MyEndScore = $tmpMyRow->TeScore;
                        safe_data_seek($Rs, $MyGroupStartPos + $MyRow->QualifiedNo * $MyRow->Quanti);
                        $tmpMyRow = safe_fetch($Rs);
                        //Controllo se c'è parimerito per entrare
                        if ($MyEndScore != $tmpMyRow->TeScore || $CurGroup != $tmpMyRow->TeEvent) {
                            $MyEndScore *= -1;
                        }
                    } else {
                        $MyEndScore = -1;
                    }
                    $tmpMyRow = NULL;
                } else {
                    safe_data_seek($Rs, safe_num_rows($Rs) - 1);
                    $tmpMyRow = safe_fetch($Rs);
                    $MyEndScore = -1;
                }
                safe_data_seek($Rs, $MyGroupStartPos + 1);
                //$CurTeam = "";
            }
            if ($CurTeam != $MyRow->NationCode . "|" . $MyRow->TeEvent) {
                if ($CurTeam != '') {
                    // sostituisco i punti nelle colonne generate in (*) più sotto
                    $cols[3] = $score1;
                    $cols[4] = $gold1;
                    $cols[5] = $x1;
                    $cols[6] = $score2;
                    $cols[7] = $gold2;
                    $cols[8] = $x2;
                    $StrData .= implode(';', $cols) . ';' . implode(';', $tmpMatr) . "\n";
                    /*print '<pre>';
                    		print_r($cols);
                    		print_r($tmpMatr);
                    		print '</pre>';*/
                    $cols = array();
                    $tmpMatr = array();
                    $score1 = 0;
                    $score2 = 0;
                    $gold1 = 0;
                    $gold2 = 0;
                    $x1 = 0;
                    $x2 = 0;
                }
                $MyPos++;
                $MyRank = $MyRow->TeRank;
                // Se non ho parimerito il ranking è uguale alla posizione
                //					if($MyEndScore == $MyRow->TeScore)  //Spareggio
                //					{
                //						if ($MyRow->QuScore!=$MyScoreOld)
                //							$MyRank = $MyPos;
                //					}
                //					else
                //					{
                //						if (!($MyRow->TeScore==$MyScoreOld && $MyRow->TeGold==$MyGoldOld && $MyRow->TeXnine==$MyXNineOld))
                //							$MyRank = $MyPos;
                //					}
                if ($MyRank > $MyRow->QualifiedNo && !$EndQualified) {
                    $EndQualified = true;
                }
                $cols[] = 8;
                $cols[] = $MyRow->NationCode;
                $cols[] = $MyRow->TeEvent;
                // colonne (*)
                $cols[] = 0;
                $cols[] = 0;
                $cols[] = 0;
                $cols[] = 0;
                $cols[] = 0;
                $cols[] = 0;
                // fine colonne (*)
                //$cols[]=($MyRow->TeRank==0 ? $MyRank : $MyRow->TeRank);
                $cols[] = $MyRank;
            }
            $tmpMatr[] = $MyRow->EnCode;
            $score1 += $MyRow->Score1;
            $score2 += $MyRow->Score2;
            $gold1 += $MyRow->Gold1;
            $gold2 += $MyRow->Gold2;
            $x1 += $MyRow->Xnine1;
            $x2 += $MyRow->Xnine2;
            //				$MyScoreOld = $MyRow->TeScore;
            //				$MyGoldOld = $MyRow->TeGold;
            //				$MyXNineOld = $MyRow->TeXnine;
            $CurTeam = $MyRow->NationCode . "|" . $MyRow->TeEvent;
        }
        // ultima
        $cols[3] = $score1;
        $cols[4] = $gold1;
        $cols[5] = $x1;
        $cols[6] = $score2;
        $cols[7] = $gold2;
        $cols[8] = $x2;
        $StrData .= implode(';', $cols) . ';' . implode(';', $tmpMatr) . "\n";
        /*print '<pre>';
        		print_r($cols);
        		print_r($tmpMatr);
        		print '</pre>';*/
    }
    /*
     * Tipo 99: Verbale arbitri
     * Domanda - Risposte
     */
    /*$MyQuery = "SELECT '99' AS RowType, FraQuestion, REPLACE(FraAnswer,';','\";\"') AS Ans "
    		. "FROM FinalReportQ "
    		. "INNER JOIN Tournament ON ToId=" . StrSafe_DB($_SESSION['TourId']) . " "
    		. "INNER JOIN Tournament*Type ON TtId=ToType "
    		. "LEFT JOIN FinalReportA ON FrqId=FraQuestion AND FraTournament=ToId "
    		. "WHERE (FrqStatus & TtCategory) > 0 AND FraQuestion IS NOT NULL "
    		. "ORDER BY FrqId";*/
    $MyQuery = "SELECT '99' AS RowType, FraQuestion, REPLACE(FraAnswer,';','\";\"') AS Ans " . "FROM FinalReportQ " . "INNER JOIN Tournament ON ToId=" . StrSafe_DB($_SESSION['TourId']) . " " . "LEFT JOIN FinalReportA ON FrqId=FraQuestion AND FraTournament=ToId " . "WHERE (FrqStatus & ToCategory) > 0 AND FraQuestion IS NOT NULL " . "ORDER BY FrqId";
    //print $MyQuery;exit;
    $Rs = safe_r_sql($MyQuery);
    if (safe_num_rows($Rs) > 0) {
        while ($MyRow = safe_fetch($Rs)) {
            $cols = array();
            $cols[] = $MyRow->RowType;
            $cols[] = $MyRow->FraQuestion;
            $cols[] = $MyRow->Ans;
            $StrData .= join(';', $cols) . "\n";
        }
    }
    //exit;
    return array($StrData, $ToCode);
}
예제 #11
-1
function MatchTotal($MatchNo, $EvCode, $TeamEvent = 0)
{
    if (is_null($MatchNo) || is_null($EvCode)) {
        //Devono esistere sia il MatchNo che l'evento
        return;
    }
    $MatchFinished = false;
    // serve per vedere se il match è finito
    $TablePrefix = "Fin";
    $Select = "SELECT " . "f.FinEvent as EvCode, f.FinMatchNo as MatchNo, f2.FinMatchNo as OppMatchNo, EvMatchMode, EvMatchArrowsNo, " . "IF(f.FinDateTime>=f2.FinDateTime, f.FinDateTime, f2.FinDateTime) AS DateTime," . "f.FinScore AS Score, f.FinSetScore AS SetScore, f.FinTie as Tie, IFNULL(f.FinArrowString,'') as ArString, IFNULL(f.FinTieBreak,'') as TbString, " . "f2.FinScore AS OppScore, f2.FinSetScore AS OppSetScore, f2.FinTie as OppTie, IFNULL(f2.FinArrowString,'') as OppArString, IFNULL(f2.FinTieBreak,'') as OppTbString, " . "GrPhase " . "FROM Finals AS f " . "INNER JOIN Finals AS f2 ON f.FinEvent=f2.FinEvent AND f.FinMatchNo=IF((f.FinMatchNo % 2)=0,f2.FinMatchNo-1,f2.FinMatchNo+1) AND f.FinTournament=f2.FinTournament " . "INNER JOIN Events ON f.FinEvent=EvCode AND f.FinTournament=EvTournament AND EvTeamEvent=0 " . "INNER JOIN Grids ON f.FinMatchNo=GrMatchNo " . "WHERE f.FinTournament=" . StrSafe_DB($_SESSION['TourId']) . " AND (f.FinMatchNo % 2)=0 AND GrMatchNo=" . StrSafe_DB($MatchNo % 2 == 0 ? $MatchNo : $MatchNo - 1) . " AND f.FinEvent=" . StrSafe_DB($EvCode) . " " . "ORDER BY f.FinEvent, f.FinMatchNo ";
    if ($TeamEvent) {
        $TablePrefix = "Tf";
        $Select = "SELECT " . "f.TfEvent as EvCode, f.TfMatchNo as MatchNo, f2.TfMatchNo as OppMatchNo, EvMatchMode, EvMatchArrowsNo, " . "IF(f.TfDateTime>=f2.TfDateTime, f.TfDateTime, f2.TfDateTime) AS DateTime," . "f.TfScore AS Score, f.TfSetScore AS SetScore, f.TfTie as Tie, IFNULL(f.TfArrowString,'') as ArString, IFNULL(f.TfTieBreak,'') as TbString, " . "f2.TfScore AS OppScore, f2.TfSetScore AS OppSetScore, f2.TfTie as OppTie, IFNULL(f2.TfArrowString,'') as OppArString, IFNULL(f2.TfTieBreak,'') as OppTbString, " . "GrPhase " . "FROM TeamFinals AS f " . "INNER JOIN TeamFinals AS f2 ON f.TfEvent=f2.TfEvent AND f.TfMatchNo=IF((f.TfMatchNo % 2)=0,f2.TfMatchNo-1,f2.TfMatchNo+1) AND f.TfTournament=f2.TfTournament " . "INNER JOIN Events ON f.TfEvent=EvCode AND f.TfTournament=EvTournament AND EvTeamEvent=1 " . "INNER JOIN Grids ON f.TfMatchNo=GrMatchNo " . "WHERE f.TfTournament=" . StrSafe_DB($_SESSION['TourId']) . " AND (f.TfMatchNo % 2)=0 AND GrMatchNo=" . StrSafe_DB($MatchNo % 2 == 0 ? $MatchNo : $MatchNo - 1) . " AND f.TfEvent=" . StrSafe_DB($EvCode) . " " . "ORDER BY f.TfEvent, f.TfMatchNo ";
    }
    //print $Select . "<br>";exit;
    $MatchUpdated = false;
    // serve per aggiornare il timestamp
    $Rs = safe_r_sql($Select);
    if (safe_num_rows($Rs) == 1) {
        $MyRow = safe_fetch($Rs);
        $obj = getEventArrowsParams($MyRow->EvCode, $MyRow->GrPhase, $TeamEvent);
        $TotArrows = $obj->ends * $obj->arrows;
        $Winner = -1;
        // set winner... of Ties
        if ($MyRow->Tie) {
            $Winner = $MyRow->MatchNo;
            $MatchFinished = true;
        } elseif ($MyRow->OppTie) {
            $Winner = $MyRow->OppMatchNo;
            $MatchFinished = true;
        }
        $Score = ValutaArrowString(substr($MyRow->ArString, 0, $TotArrows));
        $OppScore = ValutaArrowString(substr($MyRow->OppArString, 0, $TotArrows));
        if ($MyRow->EvMatchMode == 0) {
            //Sistema Cumulativo
            if (strlen(str_replace(' ', '', $MyRow->ArString)) == $TotArrows and strlen(str_replace(' ', '', $MyRow->OppArString)) == $TotArrows and strlen(str_replace(' ', '', $MyRow->TbString)) == strlen(str_replace(' ', '', $MyRow->OppTbString))) {
                $MatchFinished = true;
                // if match is over establish the winner
                // only if not already decided by the tie
                // and if there are no doubts
                // and no SO are going on
                if ($Winner == -1 and $MyRow->ArString == strtoupper($MyRow->ArString) and $MyRow->OppArString == strtoupper($MyRow->OppArString) and strlen(trim($MyRow->TbString)) == strlen(trim($MyRow->OppTbString))) {
                    if ($Score > $OppScore) {
                        $Winner = $MyRow->MatchNo;
                    } elseif ($Score < $OppScore) {
                        $Winner = $MyRow->OppMatchNo;
                    }
                }
            }
            $query = "UPDATE " . ($TeamEvent == 0 ? "Finals" : "TeamFinals") . " " . "SET " . "{$TablePrefix}WinLose=" . ($Winner == $MyRow->MatchNo ? '1' : '0') . ", " . "{$TablePrefix}Score=" . $Score . ", " . "{$TablePrefix}SetScore=0, " . "{$TablePrefix}SetPoints='', " . "{$TablePrefix}DateTime={$TablePrefix}DateTime " . "WHERE " . " {$TablePrefix}Event=" . StrSafe_DB($MyRow->EvCode) . " " . " AND {$TablePrefix}MatchNo=" . StrSafe_DB($MyRow->MatchNo) . " " . " AND {$TablePrefix}Tournament=" . StrSafe_DB($_SESSION['TourId']);
            safe_w_sql($query);
            $MatchUpdated = ($MatchUpdated or safe_w_affected_rows());
            //print $query.'<br><br>';
            $query = "UPDATE " . ($TeamEvent == 0 ? "Finals" : "TeamFinals") . " " . "SET " . "{$TablePrefix}WinLose=" . ($Winner == $MyRow->OppMatchNo ? '1' : '0') . ", " . "{$TablePrefix}Score=" . $OppScore . ", " . "{$TablePrefix}SetScore=0, " . "{$TablePrefix}SetPoints='', " . "{$TablePrefix}DateTime={$TablePrefix}DateTime " . "WHERE " . " {$TablePrefix}Event=" . StrSafe_DB($MyRow->EvCode) . " " . " AND {$TablePrefix}MatchNo=" . StrSafe_DB($MyRow->OppMatchNo) . " " . " AND {$TablePrefix}Tournament=" . StrSafe_DB($_SESSION['TourId']);
            safe_w_sql($query);
            $MatchUpdated = ($MatchUpdated or safe_w_affected_rows());
            //print $query.'<br><br>';
        } else {
            //Sistema a Set
            $SetPointsAth = array();
            $SetPointsOpp = array();
            $SetAth = 0;
            $SetOpp = 0;
            $SetAthWin = 0;
            $SetOppWin = 0;
            $WinnerId = -1;
            for ($i = 0; $i < $TotArrows; $i = $i + $obj->arrows) {
                //Cicla per tutte le volee dell'incontro
                $AthEndString = substr($MyRow->ArString, $i, $obj->arrows);
                $OppEndString = substr($MyRow->OppArString, $i, $obj->arrows);
                $MatchString = $AthEndString . $OppEndString;
                $AthSetPoints = ValutaArrowString($AthEndString);
                $OppSetPoints = ValutaArrowString($OppEndString);
                $SetPointsAth[] = $AthSetPoints;
                $SetPointsOpp[] = $OppSetPoints;
                if (strpos($MatchString, ' ') === false and ctype_upper($MatchString)) {
                    if ($AthSetPoints > $OppSetPoints) {
                        $SetAth += 2;
                        $SetAthWin++;
                    } elseif ($AthSetPoints < $OppSetPoints) {
                        $SetOpp += 2;
                        $SetOppWin++;
                    } else {
                        $SetAth++;
                        $SetOpp++;
                    }
                }
            }
            if ($SetAth == $SetOpp && !empty($MyRow->TbString) && !empty($MyRow->OppTbString) && strlen(trim($MyRow->TbString)) == strlen(trim($MyRow->OppTbString))) {
                //Verifico le stringhe CASE INSENSITIVE - in questo momento me ne frego degli "*"
                $AthTbValue = ValutaArrowString($MyRow->TbString);
                $OppTbValue = ValutaArrowString($MyRow->OppTbString);
                if ($AthTbValue < $OppTbValue) {
                    $Winner = $MyRow->OppMatchNo;
                    //OppTbString è maggiore di TbString --> il secondo vince
                    $WinnerId = $MyRow->OppMatchNo;
                    //OppTbString è maggiore di TbString --> il secondo vince
                    $SetOpp++;
                } elseif ($AthTbValue > $OppTbValue) {
                    $Winner = $MyRow->MatchNo;
                    //TbString è maggiore di OppTbString --> il primo vince
                    $WinnerId = $MyRow->MatchNo;
                    //TbString è maggiore di OppTbString --> il primo vince
                    $SetAth++;
                } elseif ($AthTbValue > 0 and $OppTbValue > 0) {
                    //le stringhe CASE INSENSITIVE sono uguali
                    if (!ctype_upper(trim($MyRow->OppTbString)) and ctype_upper(trim($MyRow->TbString))) {
                        // Verifico gli "*" e lo star è nella stringa del secondo (è maggiore)
                        $Winner = $MyRow->OppMatchNo;
                        $WinnerId = $MyRow->OppMatchNo;
                        $SetOpp++;
                    } elseif (ctype_upper(trim($MyRow->OppTbString)) and !ctype_upper(trim($MyRow->TbString))) {
                        // Verifico gli "*" e lo star è nella stringa del primo (è maggiore)
                        $Winner = $MyRow->MatchNo;
                        $WinnerId = $MyRow->MatchNo;
                        $SetAth++;
                    }
                }
            } elseif ($SetAth >= $obj->winAt) {
                $Winner = $MyRow->MatchNo;
            } elseif ($SetOpp >= $obj->winAt) {
                $Winner = $MyRow->OppMatchNo;
            }
            $query = "UPDATE " . ($TeamEvent == 0 ? "Finals" : "TeamFinals") . " " . "SET " . "{$TablePrefix}WinLose=" . ($Winner == $MyRow->MatchNo ? '1' : '0') . ", " . "{$TablePrefix}Score=" . $Score . ", " . "{$TablePrefix}SetScore=" . $SetAth . ", " . "{$TablePrefix}SetPoints=" . StrSafe_DB(implode($SetPointsAth, '|')) . ", " . "{$TablePrefix}WinnerSet=" . $SetAthWin . ", " . "{$TablePrefix}Tie=" . ($WinnerId == $MyRow->MatchNo ? '1' : '0') . ", " . "{$TablePrefix}DateTime={$TablePrefix}DateTime " . "WHERE " . "{$TablePrefix}Event=" . StrSafe_DB($MyRow->EvCode) . " " . "AND {$TablePrefix}MatchNo=" . StrSafe_DB($MyRow->MatchNo) . " " . "AND {$TablePrefix}Tournament=" . StrSafe_DB($_SESSION['TourId']);
            // 			debug_svela($Winner==$MyRow->MatchNo, true);
            safe_w_sql($query);
            $MatchUpdated = ($MatchUpdated or safe_w_affected_rows());
            $query = "UPDATE " . ($TeamEvent == 0 ? "Finals" : "TeamFinals") . " " . "SET " . "{$TablePrefix}WinLose=" . ($Winner == $MyRow->OppMatchNo ? '1' : '0') . ", " . "{$TablePrefix}Score=" . $OppScore . ", " . "{$TablePrefix}SetScore=" . $SetOpp . ", " . "{$TablePrefix}SetPoints=" . StrSafe_DB(implode($SetPointsOpp, '|')) . ", " . "{$TablePrefix}WinnerSet=" . $SetOppWin . ", " . "{$TablePrefix}Tie=" . ($WinnerId == $MyRow->OppMatchNo ? '1' : '0') . ", " . "{$TablePrefix}DateTime={$TablePrefix}DateTime " . "WHERE " . "{$TablePrefix}Event=" . StrSafe_DB($MyRow->EvCode) . " " . "AND {$TablePrefix}MatchNo=" . StrSafe_DB($MyRow->OppMatchNo) . " " . "AND {$TablePrefix}Tournament=" . StrSafe_DB($_SESSION['TourId']);
            safe_w_sql($query);
            $MatchUpdated = ($MatchUpdated or safe_w_affected_rows());
            if ($SetAth >= $obj->winAt || $SetOpp >= $obj->winAt) {
                $MatchFinished = true;
            }
        }
        if ($MatchUpdated) {
            $query = "UPDATE " . ($TeamEvent == 0 ? "Finals" : "TeamFinals") . " " . "SET " . "{$TablePrefix}DateTime=now() " . "WHERE " . " {$TablePrefix}Event=" . StrSafe_DB($MyRow->EvCode) . " " . "AND {$TablePrefix}MatchNo in (" . StrSafe_DB($MyRow->MatchNo) . ',' . StrSafe_DB($MyRow->OppMatchNo) . ") " . "AND {$TablePrefix}Tournament=" . StrSafe_DB($_SESSION['TourId']);
            safe_w_sql($query);
        }
        //Serve per ricalcolare le ranking, solo medaglie
        if ($MatchNo < 4 and $MatchFinished) {
            if ($TeamEvent) {
                move2NextPhaseTeam(NULL, $EvCode, $MatchNo);
            } else {
                move2NextPhase(NULL, $EvCode, $MatchNo);
            }
        }
    }
    return $MatchFinished;
}