/**
  * calculate()
  *
  * @Override
  *
  * (non-PHPdoc)
  * @see ianseo/Common/Rank/Obj_Rank#calculate()
  */
 public function calculate()
 {
     $f = $this->safeFilter();
     $filter = $f !== false ? $f : "";
     $orderBy = "TeEvent, TeScore DESC, TeGold DESC, TeXnine DESC, TeSubTeam ";
     $q = "\r\n\t\t\t\tSELECT\r\n\t\t\t\t\tTeTournament,TeCoId,TeSubTeam,TeEvent,\r\n\t\t\t\t\tIFNULL(IF(EvRunning=1, TeScore/TeHits,TeScore),0) as TeScore, TeGold, TeXnine,\r\n\t\t\t\t\tIF(EvFinalFirstPhase=0,9999,IF(EvFinalFirstPhase=48, 104, IF(EvFinalFirstPhase=24, 56, (EvFinalFirstPhase*2)))) AS QualifiedNo,\r\n\t\t\t\t\tTeRank AS ActualRank\r\n\t\t\t\t FROM\r\n\t\t\t\t \tTeams\r\n\t\t\t\t \tINNER JOIN\r\n\t\t\t\t \t\tEvents\r\n\t\t\t\t \tON TeEvent=EvCode AND TeTournament=EvTournament AND EvTeamEvent=1\r\n\t\t\t\t WHERE\r\n\t\t\t\t \tTeTournament={$this->tournament} AND TeFinEvent=1 AND TeScore<>'0'\r\n\t\t\t\t \t{$filter}\r\n\t\t\t\t ORDER BY\r\n\t\t\t\t \t{$orderBy}\r\n\t\t\t";
     //print $q;exit;
     $r = safe_r_sql($q);
     if (!$r) {
         return false;
     }
     if (safe_num_rows($r) > 0) {
         $curGroup = "";
         $myRank = 1;
         $myPos = 0;
         $endQualified = false;
         $myScoreOld = 0;
         $myGoldOld = 0;
         $myXNineOld = 0;
         $myEndScore = -1;
         $myGroupStartPos = 0;
         $currentRow = -1;
         while ($myRow = safe_fetch($r)) {
             ++$currentRow;
             if ($curGroup != $myRow->TeEvent) {
                 $curGroup = $myRow->TeEvent;
                 $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($r) > $myGroupStartPos + $myRow->QualifiedNo) {
                     safe_data_seek($r, $myGroupStartPos + $myRow->QualifiedNo - 1);
                     $tmpMyRow = safe_fetch($r);
                     if ($curGroup == $tmpMyRow->TeEvent) {
                         $myEndScore = $tmpMyRow->TeScore;
                         $tmpMyRow = safe_fetch($r);
                         //Controllo se c'è parimerito per entrare
                         if ($myEndScore != $tmpMyRow->TeScore || $curGroup != $tmpMyRow->TeEvent) {
                             $myEndScore *= -1;
                         }
                     } else {
                         $myEndScore = -1;
                     }
                     $tmpMyRow = NULL;
                 } else {
                     safe_data_seek($r, safe_num_rows($r) - 1);
                     $tmpMyRow = safe_fetch($r);
                     $myEndScore = -1;
                 }
                 safe_data_seek($r, $myGroupStartPos + 1);
             }
             ++$myPos;
             $so = -1;
             // Se non ho parimerito il ranking è uguale alla posizione
             if ($myEndScore == $myRow->TeScore) {
                 if ($myRow->TeScore != $myScoreOld) {
                     $myRank = $myPos;
                 }
                 $so = 1;
                 // rosso
             } else {
                 if (!($myRow->TeScore == $myScoreOld && $myRow->TeGold == $myGoldOld && $myRow->TeXnine == $myXNineOld)) {
                     $myRank = $myPos;
                 }
             }
             if ($myRank > $myRow->QualifiedNo) {
                 $so = 0;
             }
             $myScoreOld = $myRow->TeScore;
             $myGoldOld = $myRow->TeGold;
             $myXNineOld = $myRow->TeXnine;
             $x = false;
             if ($myRow->ActualRank != 0 && array_key_exists('skipExisting', $this->opts) && $this->opts['skipExisting'] == 1) {
                 $x = $this->setRow(array(array('team' => $myRow->TeCoId, 'subteam' => $myRow->TeSubTeam, 'event' => $myRow->TeEvent, 'so' => $so * $myRank)));
             } else {
                 $x = $this->setRow(array(array('team' => $myRow->TeCoId, 'subteam' => $myRow->TeSubTeam, 'event' => $myRow->TeEvent, 'so' => $so * $myRank, 'rank' => $myRank, 'tiebreak' => '')));
             }
             //print '..'.$x.'<br>';
             if ($x === false) {
                 return false;
             }
         }
     }
     //			debug_svela($tmpChris);
     return true;
 }
示例#2
0
foreach ($tmp as $s) {
    $sessions[] = array('id' => $s->SesOrder, 'descr' => $s->Descr);
}
$comboSes = ComboFromRs($sessions, 'id', 'descr', 1, null, array('0', '--'), 'd_q_QuSession_', 'd_q_QuSession_', array('onblur' => 'SelectSession();'));
$comboSex = ComboFromRs(array(array('id' => 0, 'descr' => get_text('ShortMale', 'Tournament')), array('id' => 1, 'descr' => get_text('ShortFemale', 'Tournament'))), 'id', 'descr', 1, 0, null, 'd_e_EnSex_', 'd_e_EnSex_', array('onchange' => 'CheckCtrlCode();'));
// Division Selects
$rsDiv = safe_r_sql("SELECT DivId FROM Divisions WHERE DivTournament=" . StrSafe_DB($_SESSION['TourId']) . " ORDER BY DivViewOrder ASC");
$comboDiv = ComboFromRs($rsDiv, 'DivId', 'DivId', 0, null, array('', '--'), 'd_e_EnDivision_', 'd_e_EnDivision_', array('onchange' => 'CheckCtrlCode();'));
safe_data_seek($rsDiv, 0);
$comboFindDiv = ComboFromRs($rsDiv, 'DivId', 'DivId', 0, !empty($_REQUEST['findDiv']) ? $_REQUEST['findDiv'] : '', array('', '--'), 'findDiv', 'findDiv');
// Class Selection
$rsCl = safe_r_sql("SELECT ClId FROM Classes WHERE ClTournament=" . StrSafe_DB($_SESSION['TourId']) . " ORDER BY ClViewOrder ASC");
$comboCl = ComboFromRs($rsCl, 'ClId', 'ClId', 0, null, array('', '--'), 'd_e_EnClass_', 'd_e_EnClass_', array('onchange' => 'CheckCtrlCode();'));
safe_data_seek($rsCl, 0);
$comboAgeCl = ComboFromRs($rsCl, 'ClId', 'ClId', 0, null, array('', '--'), 'd_e_EnAgeClass_', 'd_e_EnAgeClass_', array('onchange' => 'CheckCtrlCode();'));
safe_data_seek($rsCl, 0);
$comboFindCl = ComboFromRs($rsCl, 'ClId', 'ClId', 0, !empty($_REQUEST['findCl']) ? $_REQUEST['findCl'] : '', array('', '--'), 'findCl', 'findCl');
$comboSubCl = ComboFromRs(safe_r_sql("\r\n\t\t\tSELECT\r\n\t\t\t\tScId\r\n\t\t\tFROM\r\n\t\t\t\tSubClass\r\n\t\t\tWHERE\r\n\t\t\t\tScTournament=" . StrSafe_DB($_SESSION['TourId']) . "\r\n\t\t\tORDER BY\r\n\t\t\t\tScViewOrder ASC\r\n\t\t"), 'ScId', 'ScId', 0, null, array('', '--'), 'd_e_EnSubClass_', 'd_e_EnSubClass_');
$comboFindSubCl = ComboFromRs(safe_r_sql("\r\n\t\t\tSELECT\r\n\t\t\t\tScId\r\n\t\t\tFROM\r\n\t\t\t\tSubClass\r\n\t\t\tWHERE\r\n\t\t\t\tScTournament=" . StrSafe_DB($_SESSION['TourId']) . "\r\n\t\t\tORDER BY\r\n\t\t\t\tScViewOrder ASC\r\n\t\t"), 'ScId', 'ScId', 0, !empty($_REQUEST['findSubCl']) ? $_REQUEST['findSubCl'] : '', array('', '--'), 'findSubCl', 'findSubCl');
$comboTf = ComboFromRs(array(array('key' => 0, 'descr' => '--')), 'key', 'descr', 1, null, null, 'd_e_EnTargetFace_', 'd_e_EnTargetFace_');
$combos = array();
$combos['indcl'] = array('descr' => get_text('IndClEvent', 'Tournament'), 'combo' => ComboFromRs(array(array('key' => '0', 'descr' => get_text('No')), array('key' => '1', 'descr' => get_text('Yes'))), 'key', 'descr', 1, null, null, 'd_e_EnIndClEvent_', 'd_e_EnIndClEvent_'));
$combos['teamcl'] = array('descr' => get_text('TeamClEvent', 'Tournament'), 'combo' => ComboFromRs(array(array('key' => '0', 'descr' => get_text('No')), array('key' => '1', 'descr' => get_text('Yes'))), 'key', 'descr', 1, null, null, 'd_e_EnTeamClEvent_', 'd_e_EnTeamClEvent_'));
$combos['indfin'] = array('descr' => get_text('IndFinEvent', 'Tournament'), 'combo' => ComboFromRs(array(array('key' => '0', 'descr' => get_text('No')), array('key' => '1', 'descr' => get_text('Yes'))), 'key', 'descr', 1, null, null, 'd_e_EnIndFEvent_', 'd_e_EnIndFEvent_'));
$combos['teamfin'] = array('descr' => get_text('TeamFinEvent', 'Tournament'), 'combo' => ComboFromRs(array(array('key' => '0', 'descr' => get_text('No')), array('key' => '1', 'descr' => get_text('Yes'))), 'key', 'descr', 1, null, null, 'd_e_EnTeamFEvent_', 'd_e_EnTeamFEvent_'));
$combos['mixteamfin'] = array('descr' => get_text('MixedTeamFinEvent', 'Tournament'), 'combo' => ComboFromRs(array(array('key' => '0', 'descr' => get_text('No')), array('key' => '1', 'descr' => get_text('Yes'))), 'key', 'descr', 1, null, null, 'd_e_EnTeamMixEvent_', 'd_e_EnTeamMixEvent_'));
$combos['wc'] = array('descr' => get_text('WheelChair', 'Tournament'), 'combo' => ComboFromRs(array(array('key' => '0', 'descr' => get_text('No')), array('key' => '1', 'descr' => get_text('Yes'))), 'key', 'descr', 1, null, null, 'd_e_EnWChair_', 'd_e_EnWChair_'));
$combos['double'] = array('descr' => get_text('DoubleSpace', 'Tournament'), 'combo' => ComboFromRs(array(array('key' => '0', 'descr' => get_text('No')), array('key' => '1', 'descr' => get_text('Yes'))), 'key', 'descr', 1, null, null, 'd_e_EnDoubleSpace_', 'd_e_EnDoubleSpace_'));
// per i reset js delle combo
list($allDivs, $allAgeCls, $allCls) = getAllDivCl();
//	print'<pre>';
示例#3
0
 /**
  * calculate().
  * La classifica abs viene calcolata quando si calcola quella di classe e l'evento
  * prevede la div/cl della persona coinvolta
  * e quando si fanno gli spareggi per passare alle eliminatorie o alle finali.
  * Nel primo caso questo è il metodo da chiamare perchè calcolerà l'IndRank o l'IndD[1-8]Rank lavorando su tutto l'evento
  * (utilizza setRow()) altrimenti occorre usare setRow() direttamente.
  *
  * @override
  *
  * (non-PHPdoc)
  * @see ianseo/Common/Rank/Obj_Rank#calculate()
  */
 public function calculate()
 {
     $dd = $this->opts['dist'] > 0 ? 'D' . $this->opts['dist'] : '';
     $f = $this->safeFilter();
     $filter = $f !== false ? $f : "";
     $q = "\r\n\t\t\t\tSELECT\r\n\t\t\t\t\tIndId AS `athId`,IndEvent AS `EventCode`,\r\n\t\t\t\t\tQu{$dd}Score AS Score,Qu{$dd}Gold AS Gold,Qu{$dd}Xnine AS XNine, Qu{$dd}Hits AS Hits, IndRank as actualRank,\r\n\t\t\t\t\tEvFinalFirstPhase, EvElim1, EvElim2,\r\n\t\t\t\t\tIF(EvFinalFirstPhase=0,9999,IF(EvElim1=0 && EvElim2=0, IF(EvFinalFirstPhase=48, 104, IF(EvFinalFirstPhase=24, 56, (EvFinalFirstPhase*2))) ,IF(EvElim1=0,EvElim2,EvElim1))) as QualifiedNo\r\n\t\t\t\tFROM\r\n\t\t\t\t\tEvents\r\n\r\n\t\t\t\t\tINNER JOIN\r\n\t\t\t\t\t\tIndividuals\r\n\t\t\t\t\tON EvCode=IndEvent AND EvTournament=IndTournament AND EvTeamEvent=0\r\n\r\n\t\t\t\t\tINNER JOIN\r\n\t\t\t\t\t\tQualifications\r\n\t\t\t\t\tON IndId=QuId\r\n\t\t\t\tWHERE\r\n\t\t\t\t\tIndTournament={$this->tournament}\r\n\t\t\t" . (empty($this->opts['includeNullPoints']) ? " AND QuScore != 0 " : "") . "\r\n\t\t\t\t\t{$filter}\r\n\t\t\t\tORDER BY\r\n\t\t\t\t\tIndEvent,Qu{$dd}Score DESC,Qu{$dd}Gold DESC,Qu{$dd}Xnine DESC\r\n\t\t\t";
     //print $q.'<br><br>';
     $r = safe_r_sql($q);
     if (!$r) {
         return false;
     }
     if (safe_num_rows($r) > 0) {
         $curGroup = "";
         $myRank = 1;
         $myPos = 0;
         $endQualified = false;
         $myScoreOld = 0;
         $myGoldOld = 0;
         $myXNineOld = 0;
         $mySoScore = array();
         $myGroupStartPos = 0;
         $currentRow = -1;
         while ($myRow = safe_fetch($r)) {
             ++$currentRow;
             if ($curGroup != $myRow->EventCode) {
                 $curGroup = $myRow->EventCode;
                 $myRank = 1;
                 $myPos = 0;
                 $myScoreOld = 0;
                 $myGoldOld = 0;
                 $myXNineOld = 0;
                 $mySoScore = array();
                 $endQualified = false;
                 $myGroupStartPos = $currentRow;
                 /*
                  * If starting phase is 1/48 or 1/24, I check the 8th position for shootoff,
                  */
                 if (($myRow->EvFinalFirstPhase == 48 || $myRow->EvFinalFirstPhase == 24) && $myRow->EvElim1 == 0 && $myRow->EvElim2 == 0) {
                     if (safe_num_rows($r) > $myGroupStartPos + 8) {
                         safe_data_seek($r, $myGroupStartPos + 8 - 1);
                         $tmpMyRow = safe_fetch($r);
                         if ($curGroup == $tmpMyRow->EventCode) {
                             $tmpScore = $tmpMyRow->Score;
                             $tmpMyRow = safe_fetch($r);
                             //Controllo se c'è parimerito per entrare
                             if ($tmpScore == $tmpMyRow->Score && $curGroup == $tmpMyRow->EventCode) {
                                 $mySoScore[] = $tmpScore;
                             }
                         }
                         $tmpMyRow = NULL;
                     }
                     safe_data_seek($r, $myGroupStartPos + 1);
                 }
                 /*
                  * Carico l'ultimo punteggio per entrare.
                  * Vado a prendere la riga con l'ultimo Score buono
                  */
                 if (safe_num_rows($r) > $myGroupStartPos + $myRow->QualifiedNo) {
                     safe_data_seek($r, $myGroupStartPos + $myRow->QualifiedNo - 1);
                     $tmpMyRow = safe_fetch($r);
                     if ($curGroup == $tmpMyRow->EventCode) {
                         $tmpScore = $tmpMyRow->Score;
                         $tmpMyRow = safe_fetch($r);
                         //Controllo se c'è parimerito per entrare
                         if ($tmpScore == $tmpMyRow->Score && $curGroup == $tmpMyRow->EventCode) {
                             $mySoScore[] = $tmpScore;
                         }
                     }
                     $tmpMyRow = NULL;
                 }
                 safe_data_seek($r, $myGroupStartPos + 1);
             }
             ++$myPos;
             $so = -1;
             // Se non ho parimerito il ranking è uguale alla posizione
             if (in_array($myRow->Score, $mySoScore)) {
                 if ($myRow->Score != $myScoreOld) {
                     $myRank = $myPos;
                 }
                 $so = 1;
                 // rosso
             } else {
                 if (!($myRow->Score == $myScoreOld && $myRow->Gold == $myGoldOld && $myRow->XNine == $myXNineOld)) {
                     $myRank = $myPos;
                 }
             }
             if ($myRank > $myRow->QualifiedNo) {
                 $so = 0;
             }
             $myScoreOld = $myRow->Score;
             $myGoldOld = $myRow->Gold;
             $myXNineOld = $myRow->XNine;
             $x = false;
             if ($this->opts['dist'] == 0 && $myRow->actualRank != 0 && array_key_exists('skipExisting', $this->opts) && $this->opts['skipExisting'] == 1) {
                 $x = $this->setRow(array(array('ath' => $myRow->athId, 'event' => $myRow->EventCode, 'dist' => $this->opts['dist'], 'hits' => $myRow->Hits, 'so' => $so * $myRank)));
             } else {
                 $x = $this->setRow(array(array('ath' => $myRow->athId, 'event' => $myRow->EventCode, 'dist' => $this->opts['dist'], 'hits' => $myRow->Hits, 'rank' => $myRank, 'tiebreak' => '', 'so' => $so * $myRank)));
             }
             //print '..'.$x.'<br>';
             if ($x === false) {
                 return false;
             }
         }
     }
     return true;
 }
 /**
  * calculate()
  *
  * @Override
  *
  * (non-PHPdoc)
  * @see ianseo/Common/Rank/Obj_Rank#calculate()
  */
 public function calculate()
 {
     $f = $this->safeFilter();
     $filter = $f !== false ? $f : "";
     $orderBy = "TeEvent, TeScore DESC, TeGold DESC, TeXnine DESC, CoCode, TeSubTeam ";
     $q = "\r\n\t\t\t\tSELECT\r\n\t\t\t\t\tTeTournament,TeCoId,TeSubTeam,CoCode,TeEvent,\r\n\t\t\t\t\tTeScore, TeGold, TeXnine,\r\n\t\t\t\t\tIF(EvFinalFirstPhase=0,9999,IF(EvFinalFirstPhase=48, 104, IF(EvFinalFirstPhase=24, 56, (EvFinalFirstPhase*2)))) AS QualifiedNo,\r\n\t\t\t\t\tTeRank AS ActualRank\r\n\t\t\t\t FROM\r\n\t\t\t\t \tTeams\r\n\t\t\t\t \tINNER JOIN\r\n\t\t\t\t \t\tCountries\r\n\t\t\t\t \tON TeCoId=CoId AND CoTournament=TeTournament\r\n\t\t\t\t \tINNER JOIN\r\n\t\t\t\t \t\tEvents\r\n\t\t\t\t \tON TeEvent=EvCode AND TeTournament=EvTournament AND EvTeamEvent=1\r\n\t\t\t\t WHERE\r\n\t\t\t\t \tTeTournament={$this->tournament} AND TeFinEvent=1 AND TeScore<>'0'\r\n\t\t\t\t \t{$filter}\r\n\t\t\t\t ORDER BY\r\n\t\t\t\t \t{$orderBy}\r\n\t\t\t";
     //print $q;exit;
     $r = safe_r_sql($q);
     if (!$r) {
         return false;
     }
     if (safe_num_rows($r) > 0) {
         $curGroup = "";
         $myRank = 1;
         $myPos = 0;
         $endQualified = false;
         $myScoreOld = 0;
         $myGoldOld = 0;
         $myXNineOld = 0;
         $myEndScore = -1;
         $myGroupStartPos = 0;
         $currentRow = -1;
         while ($myRow = safe_fetch($r)) {
             ++$currentRow;
             if ($curGroup != $myRow->TeEvent) {
                 $curGroup = $myRow->TeEvent;
                 $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($r) > $myGroupStartPos + $myRow->QualifiedNo) {
                     safe_data_seek($r, $myGroupStartPos + $myRow->QualifiedNo - 1);
                     $tmpMyRow = safe_fetch($r);
                     if ($curGroup == $tmpMyRow->TeEvent) {
                         $myEndScore = $tmpMyRow->TeScore;
                         $tmpMyRow = safe_fetch($r);
                         //Controllo se c'è parimerito per entrare
                         if ($myEndScore != $tmpMyRow->TeScore || $curGroup != $tmpMyRow->TeEvent) {
                             $myEndScore *= -1;
                         }
                     } else {
                         $myEndScore = -1;
                     }
                     $tmpMyRow = NULL;
                 } else {
                     safe_data_seek($r, safe_num_rows($r) - 1);
                     $tmpMyRow = safe_fetch($r);
                     $myEndScore = -1;
                 }
                 safe_data_seek($r, $myGroupStartPos + 1);
             }
             ++$myPos;
             $so = -1;
             // Se non ho parimerito il ranking è uguale alla posizione
             if ($myEndScore == $myRow->TeScore) {
                 if ($myRow->TeScore != $myScoreOld) {
                     $myRank = $myPos;
                 }
                 $so = 1;
                 // rosso
             } else {
                 if (!($myRow->TeScore == $myScoreOld && $myRow->TeGold == $myGoldOld && $myRow->TeXnine == $myXNineOld)) {
                     $myRank = $myPos;
                 }
             }
             if ($myRank > $myRow->QualifiedNo) {
                 $so = 0;
             }
             $myScoreOld = $myRow->TeScore;
             $myGoldOld = $myRow->TeGold;
             $myXNineOld = $myRow->TeXnine;
             $x = false;
             if ($myRow->ActualRank != 0 && array_key_exists('skipExisting', $this->opts) && $this->opts['skipExisting'] == 1) {
                 $x = $this->setRow(array(array('team' => $myRow->TeCoId, 'subteam' => $myRow->TeSubTeam, 'event' => $myRow->TeEvent, 'so' => $so * $myRank)));
             } else {
                 $x = $this->setRow(array(array('team' => $myRow->TeCoId, 'subteam' => $myRow->TeSubTeam, 'event' => $myRow->TeEvent, 'so' => $so * $myRank, 'rank' => $myRank, 'tiebreak' => '')));
             }
             //print '..'.$x.'<br>';
             if ($x === false) {
                 return false;
             }
         }
     }
     /*
      * Adesso faccio la stessa cosa che o fatto per la classifica DivClass a partire dalla parte due
      * limitandomi agli eventi con fase iniziale a zero
      */
     $q = "\r\n\t\t\t\tSELECT\r\n\t\t\t\t\tTeTournament,TeCoId,TeSubTeam,TeEvent,\r\n\t\t\t\t\tTeScore, TeGold, TeXnine,\r\n\t\t\t\t\tTeRank,\r\n\t\t\t\t\tGROUP_CONCAT(CAST(QuScore AS CHAR(10)) ORDER BY QuScore DESC SEPARATOR '|') AS `_Tupla`\r\n\t\t\t\t FROM\r\n\t\t\t\t \tTeams\r\n\t\t\t\t \tINNER JOIN\r\n\t\t\t\t \t\tCountries\r\n\t\t\t\t \tON TeCoId=CoId AND CoTournament=TeTournament\r\n\t\t\t\t \tINNER JOIN\r\n\t\t\t\t \t\tEvents\r\n\t\t\t\t \tON TeEvent=EvCode AND TeTournament=EvTournament AND EvTeamEvent=1 AND TeFinEvent=1 AND EvFinalFirstPhase=0 \r\n\t\t\t\t \tINNER JOIN\r\n\t\t\t\t\t\tTeamComponent AS tc\r\n\t\t\t\t\tON Teams.TeCoId=tc.TcCoId AND Teams.TeSubTeam=tc.TcSubTeam AND  Teams.TeEvent=tc.TcEvent AND Teams.TeTournament=tc.TcTournament AND Teams.TeFinEvent=tc.TcFinEvent\r\n\t\t\t\t\tINNER JOIN\r\n\t\t\t\t\t\tEntries\r\n\t\t\t\t\tON TcId=EnId\r\n\t\t\t\t\tINNER JOIN\r\n\t\t\t\t\t\tQualifications\r\n\t\t\t\t\tON EnId=QuId\r\n\t\t\t\t WHERE\r\n\t\t\t\t \tTeTournament={$this->tournament} AND TeRank<=3\r\n\t\t\t\t \t{$filter}\r\n\t\t\t\t GROUP BY \r\n\t\t\t\t\tTeTournament, TeCoId, TeSubTeam, TeEvent, TeScore, TeGold, TeXnine\r\n\t\t\t\t ORDER BY\r\n\t\t\t\t \t{$orderBy}\r\n\t\t\t";
     //print $q;exit;
     //			debug_svela($tmpChris);
     $rows = array();
     $r = safe_r_sql($q);
     if ($r && safe_num_rows($r) > 0) {
         while ($row = safe_fetch_assoc($r)) {
             $tmp = array();
             foreach ($row as $k => $v) {
                 if (substr($k, 0, 1) != '_') {
                     $tmp[$k] = $v;
                 }
             }
             // esplodo
             $parts = explode('|', $row['_Tupla']);
             $tmp['p1'] = $parts[0];
             $tmp['p2'] = $parts[1];
             $tmp['p3'] = $parts[2];
             $rows[] = $tmp;
         }
     }
     /*
      * Terza parte:
      * con array_multisort ordino la struttura precedente sui campi TeEvent ASC,TeRank ASC,p1 DESC,p2 DESC e p3 DESC
      * in modo da avere i dati ordinati per applicare l'algoritmo standard pos/rank
      */
     $ranks = array();
     $p1s = array();
     $p2s = array();
     $p3s = array();
     foreach ($rows as $k => $row) {
         $ranks[$k] = $row['TeRank'];
         $p1s[$k] = $row['p1'];
         $p2s[$k] = $row['p2'];
         $p3s[$k] = $row['p3'];
     }
     //			print '<pre>';
     //			print_r($ranks);
     //			print_r($p1s);
     //			print_r($p2s);
     //			print_r($p3s);
     //			print '</pre>';
     array_multisort($ranks, SORT_ASC, $p1s, SORT_DESC, $p2s, SORT_DESC, $p3s, SORT_DESC, $rows);
     //			print '<pre>';
     //			print_r($rows);
     //			print '</pre>';
     // algoritmo rank/pos
     $rank = 1;
     $pos = 0;
     $oldRank = 0;
     // ocio che qui rank sarebbe lo score quindi questo sarebbe oldScore, NON confondersi con $rank che è quella normale
     $oldPs = array(-1, -1, -1);
     $curEvent = '';
     foreach ($rows as $k => $v) {
         if ($v['TeEvent'] != $curEvent) {
             $rank = 1;
             $pos = 0;
             $oldRank = 0;
             $oldPs = array(-1, -1, -1);
             $curEvent = '';
             $curEvent = $v['TeEvent'];
         }
         ++$pos;
         /*
          * Una volta che ho assegnato rank=4, tutti quelli dopo saranno rank=4.
          * Il motivo è il seguente:
          * qui sto lavorando solo sulle prime 3 posizioni e potrebbe succedere di avere a cavallo del bronzo dei parimeriti.
          * Se per la tupla non ho parimeriti al terzo posto con chi è a cavallo, chi resta fuori dal podio è quarto pari
          * perchè se no la sua rank l'avrebbe sistemata la prima parte e qui non sarebbero venuti fuori.
          * Esempio: ho 5 primi quindi le prime posizioni saranno 1,1,1,1,1,6,....
          * La query della seconda parte mi tira fuori tutti gli 1.
          * Ho pari i primi 2 quindi otterrò 1,1,3,x,x. Le x saranno 3 se c'è il parimerito se no saranno 4 e otterrò giustamente alla fine
          * 1,1,3,4,4,6,... 
          * 
          */
         if ($rank < 4) {
             if (!($v['TeRank'] == $oldRank && $v['p1'] == $oldPs[0] && $v['p2'] == $oldPs[1] && $v['p3'] == $oldPs[2])) {
                 $rank = $pos;
             }
         }
         // non tocco il timestamp perchè tengo buono quello calcolato prima
         $q = "\r\n\t\t\t\t\tUPDATE\r\n\t\t\t\t\t\tTeams\r\n\t\t\t\t\tSET\r\n\t\t\t\t\t\tTeRank={$rank}\r\n\t\t\t\t\tWHERE\r\n\t\t\t\t\t\tTeTournament={$this->tournament} AND TeCoId={$v['TeCoId']} AND TeSubTeam={$v['TeSubTeam']} AND\r\n\t\t\t\t\t\tTeFinEvent=1 AND TeEvent='{$v['TeEvent']}'\r\n\r\n\t\t\t\t";
         $r = safe_w_sql($q);
         $oldRank = $v['TeRank'];
         $oldPs = array($v['p1'], $v['p2'], $v['p3']);
     }
     return true;
 }
 /**
  * calculate()
  * La classifica viene calcolata quando si cambia un punteggio oppure quando si risolvono gli
  * spareggi per passare al girone dopo oppure alle finali.
  * Nel primo caso si chiama direttamente questo metodo; nel secondo si userà setRow() utilizzata pure
  * da questo metodo.
  *
  * @override
  *
  * (non-PHPdoc)
  * @see ianseo/Common/Rank/Obj_Rank#calculate()
  */
 public function calculate()
 {
     $f = $this->safeFilterC();
     $filter = $f !== false ? $f : "";
     //IF(ElElimPhase=0,EvElim2,IF(EvFinalFirstPhase=48, 104, IF(EvFinalFirstPhase=24, 56, (EvFinalFirstPhase*2))))
     $q = "\r\n\t\t\t\tSELECT\r\n\t\t\t\t\tElId,EnFirstName,ElEventCode,ElElimPhase,\r\n\t\t\t\t\tElScore,ElGold, ElXnine, ElRank as actualRank,\r\n\t\t\t\t\tIF(ElElimPhase=0,EvElim2,IF(EvFinalFirstPhase=48, 104, IF(EvFinalFirstPhase=24, 56, (EvFinalFirstPhase*2)))) AS QualifiedNo\r\n\t\t\t\tFROM\r\n\t\t\t\t\tEliminations\r\n\t\t\t\t\tINNER JOIN\r\n\t\t\t\t\t\tEntries ON ElId=EnId\r\n\t\t\t\t\tINNER JOIN\r\n\t\t\t\t\t\tEvents\r\n\t\t\t\t\tON ElEventCode=EvCode AND ElTournament=EvTournament AND EvTeamEvent=0\r\n\t\t\t\tWHERE\r\n\t\t\t\t\tElTournament={$this->tournament} {$filter}\r\n\t\t\t\tORDER BY\r\n\t\t\t\t\tEvProgr, ElEventCode, ElElimPhase ASC, ElScore DESC, ElGold DESC, ElXnine DESC, ElTargetNo\r\n\t\t\t";
     $r = safe_r_sql($q);
     if (!$r) {
         return false;
     }
     if (safe_num_rows($r) > 0) {
         $curGroup = "";
         $myRank = 1;
         $myPos = 0;
         $endQualified = false;
         $myScoreOld = 0;
         $myGoldOld = 0;
         $myXNineOld = 0;
         $myEndScore = -1;
         $myGroupStartPos = 0;
         $currentRow = -1;
         while ($myRow = safe_fetch($r)) {
             ++$currentRow;
             if ($curGroup != $myRow->ElEventCode . $myRow->ElElimPhase) {
                 $curGroup = $myRow->ElEventCode . $myRow->ElElimPhase;
                 //print $curGroup.'<br>';
                 $myRank = 1;
                 $myPos = 0;
                 $myScoreOld = 0;
                 $myGoldOld = 0;
                 $myXNineOld = 0;
                 $endQualified = false;
                 $myGroupStartPos = $currentRow;
                 if (safe_num_rows($r) > $myGroupStartPos + $myRow->QualifiedNo) {
                     safe_data_seek($r, $myGroupStartPos + $myRow->QualifiedNo - 1);
                     $tmpMyRow = safe_fetch($r);
                     //print_r($tmpMyRow);
                     if ($curGroup == $tmpMyRow->ElEventCode . $tmpMyRow->ElElimPhase) {
                         $myEndScore = $tmpMyRow->ElScore;
                         $tmpMyRow = safe_fetch($r);
                         //print_r($tmpMyRow);
                         //Controllo se c'è parimerito per entrare
                         if ($myEndScore != $tmpMyRow->ElScore || $curGroup != $tmpMyRow->ElEventCode . $tmpMyRow->ElElimPhase) {
                             $myEndScore *= -1;
                         }
                     } else {
                         $myEndScore = -1;
                     }
                     $tmpMyRow = NULL;
                 } else {
                     safe_data_seek($r, safe_num_rows($r) - 1);
                     $tmpMyRow = safe_fetch($r);
                     $myEndScore = -1;
                 }
                 safe_data_seek($r, $myGroupStartPos + 1);
                 //print $myEndScore;
             }
             ++$myPos;
             $so = -1;
             if ($myEndScore == $myRow->ElScore) {
                 if ($myRow->ElScore != $myScoreOld) {
                     $myRank = $myPos;
                 }
                 $so = 1;
                 // rosso
             } else {
                 if (!($myRow->ElScore == $myScoreOld && $myRow->ElGold == $myGoldOld && $myRow->ElXnine == $myXNineOld)) {
                     $myRank = $myPos;
                 }
             }
             if ($myRank > $myRow->QualifiedNo) {
                 $so = 0;
             }
             $myScoreOld = $myRow->ElScore;
             $myGoldOld = $myRow->ElGold;
             $myXNineOld = $myRow->ElXnine;
             $x = false;
             if ($myRow->actualRank != 0 && array_key_exists('skipExisting', $this->opts) && $this->opts['skipExisting'] == 1) {
                 $x = $this->setRow(array(array('ath' => $myRow->ElId, 'event' => $myRow->ElEventCode, 'phase' => $myRow->ElElimPhase, 'so' => $so * $myRank)));
             } else {
                 $x = $this->setRow(array(array('ath' => $myRow->ElId, 'event' => $myRow->ElEventCode, 'phase' => $myRow->ElElimPhase, 'rank' => $myRank, 'so' => $so * $myRank)));
             }
             /*print '<pre>';
             		print_r($x);
             		print '</pre>';*/
             if ($x === false) {
                 return false;
             }
         }
     }
     return true;
 }
示例#6
0
     $points4win[$myRow->event] = $obj->winAt;
     $arrow4Match[$myRow->event] = $obj->ends * $obj->arrows;
     // massimo delle somme dei punti win + punti loser
     $sum = $myRow->setScore1 + $myRow->setScore2;
     if ($sum > $max) {
         $max = $sum;
     }
     if ($myRow->matchMode == 0) {
         $stdArrowShot = max($stdArrowShot, strlen(trim($myRow->arrowString1)), strlen(trim($myRow->arrowString2)));
         $tieArrowShot = max($tieArrowShot, strlen(trim($myRow->tiebreak1)), strlen(trim($myRow->tiebreak2)));
     }
 }
 /*print '<pre>';
 		print_r($points4win);
 		print '</pre>';exit;*/
 safe_data_seek($rs, 0);
 // resetto il puntatore
 $id = 0;
 // id fittizio
 while ($myRow = safe_fetch($rs)) {
     $target = $myRow->target1;
     if ($myRow->target2 != $myRow->target1) {
         $target .= ' - ' . $myRow->target2;
     }
     $score1 = $myRow->score1;
     $score2 = $myRow->score2;
     if ($myRow->matchMode == 1) {
         $score1 = $myRow->setScore1;
         $score2 = $myRow->setScore2;
     }
     $score = $score1 . ' - ' . $score2;
示例#7
0
    }
    $pdf->SetLineStyle($oldline);
} else {
    $MyQuery = 'SELECT SUBSTRING(at.AtTargetNo,2) as tNo, CoCode, CoName, Ath, Noc, Cat, Td1, Td2, Td3, Td4, Td5, Td6, Td7, Td8, ' . 'QuD1Arrowstring, QuD2Arrowstring, QuD3Arrowstring, QuD4Arrowstring, QuD5Arrowstring, QuD6Arrowstring, QuD7Arrowstring, QuD8Arrowstring, ' . 'QuD1Score, QuD2Score, QuD3Score, QuD4Score, QuD5Score, QuD6Score, QuD7Score, QuD8Score, ' . 'printD1gx, printD2gx, printD3gx, printD4gx, printD5gx, printD6gx, printD7gx, printD8gx ' . ' FROM AvailableTarget as at ';
    if (isset($_REQUEST["noEmpty"]) && $_REQUEST["noEmpty"] == 1) {
        $MyQuery .= "INNER JOIN\n\t\t\t\t(SELECT DISTINCT EnTournament, SUBSTRING(QuTargetNo,1,4) as TgtNo\n\t\t\t\tFROM Qualifications\n\t\t\t\tINNER JOIN Entries On QuId=EnId\n\t\t\t\tWHERE EnTournament = " . StrSafe_DB($_SESSION['TourId']) . " AND EnAthlete=1 AND QuTargetNo>='" . $_REQUEST['x_Session'] . str_pad($_REQUEST['x_From'], TargetNoPadding, "0", STR_PAD_LEFT) . "A' AND QuTargetNo<='" . $_REQUEST['x_Session'] . str_pad($_REQUEST['x_To'], TargetNoPadding, "0", STR_PAD_LEFT) . "Z'\n\t\t\t\t) as Tgt ON at.AtTournament=Tgt.EnTournament AND SUBSTRING(at.AtTargetNo,1,4)=Tgt.TgtNo\t";
    }
    $MyQuery .= " LEFT JOIN " . ' (SELECT CoCode, CoName, QuTargetNo, CONCAT(EnFirstName,\' \', EnName) AS Ath, CONCAT(CoCode, \' - \', CoName) as Noc, CONCAT(EnDivision, \' \', EnClass) AS Cat, ' . ' Td1, Td2, Td3, Td4, Td5, Td6, Td7, Td8, ' . ' QuD1Arrowstring, QuD2Arrowstring, QuD3Arrowstring, QuD4Arrowstring, QuD5Arrowstring, QuD6Arrowstring, QuD7Arrowstring, QuD8Arrowstring, ' . ' QuD1Score, QuD2Score, QuD3Score, QuD4Score, QuD5Score, QuD6Score, QuD7Score, QuD8Score, ' . ' QuD1Gold+QuD1XNine as printD1gx, QuD2Gold+QuD2XNine as printD2gx, QuD3Gold+QuD3XNine as printD3gx, QuD4Gold+QuD4XNine as printD4gx, ' . ' QuD5Gold+QuD5XNine as printD5gx, QuD6Gold+QuD6XNine as printD6gx, QuD7Gold+QuD7XNine as printD7gx ,QuD8Gold+QuD8XNine as printD8gx ' . ' FROM Entries ' . ' INNER JOIN Qualifications ON EnId = QuId ' . ' INNER JOIN Countries ON EnCountry=CoId AND EnTournament=CoTournament ' . ' INNER JOIN Tournament ON EnTournament=ToId ' . ' LEFT JOIN TournamentDistances ON ToType=TdType and TdTournament=ToId AND CONCAT(TRIM(EnDivision),TRIM(EnClass)) LIKE TdClasses ' . ' WHERE EnTournament = ' . StrSafe_DB($_SESSION['TourId']) . " AND QuTargetNo>='" . $_REQUEST['x_Session'] . str_pad($_REQUEST['x_From'], TargetNoPadding, "0", STR_PAD_LEFT) . "A' AND QuTargetNo<='" . $_REQUEST['x_Session'] . str_pad($_REQUEST['x_To'], TargetNoPadding, "0", STR_PAD_LEFT) . "Z' " . ') as Sqy ON at.AtTargetNo = Sqy.QuTargetNo ' . " WHERE at.AtTournament =  " . StrSafe_DB($_SESSION['TourId']) . ' ' . " AND at.AtTargetNo>='" . $_REQUEST['x_Session'] . str_pad($_REQUEST['x_From'], TargetNoPadding, "0", STR_PAD_LEFT) . "A' AND at.AtTargetNo<='" . $_REQUEST['x_Session'] . str_pad($_REQUEST['x_To'], TargetNoPadding, "0", STR_PAD_LEFT) . "Z' " . ' ORDER BY at.AtTargetNo ASC, Ath, Noc ';
    //print $MyQuery;Exit;
    $Rs = safe_r_sql($MyQuery);
    if (safe_num_rows($Rs) > 0) {
        $TmpTarget = '-----';
        $Tmp = array();
        $DistArray = array();
        $tmpRow = safe_fetch($Rs);
        safe_data_seek($Rs, 0);
        if (is_array($_REQUEST["ScoreDist"])) {
            foreach ($_REQUEST["ScoreDist"] as $Value) {
                if (is_numeric($Value)) {
                    $DistArray[$Value] = $Value ? $tmpRow->{'Td' . $Value} : '';
                }
            }
        } else {
            $DistArray[] = '';
        }
        $Butt = array();
        $OldButt = '';
        while ($MyRow = safe_fetch($Rs)) {
            if ($OldButt != substr($MyRow->tNo, 0, -1)) {
                if ($Butt) {
                    // Athletes are there!
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);
}