- UpdateCtrlCode.php -
	Controlla il codice fiscale dei tizio in Partecipants.php
	Decide anche come gestire le tendine delle classi
*/
define('debug', false);
require_once dirname(dirname(__FILE__)) . '/config.php';
require_once 'Common/Lib/Fun_DateTime.inc.php';
require_once 'Partecipants/Fun_Partecipants.local.inc.php';
if (!CheckTourSession() || !isset($_REQUEST['d_e_EnCtrlCode']) || !isset($_REQUEST['d_e_EnSex'])) {
    print get_text('CrackError');
    exit;
}
$Errore = 0;
$AgeClass = '';
$Classes = '';
$ctrlCode = ConvertDateLoc($_REQUEST['d_e_EnCtrlCode']);
if ($ctrlCode !== false) {
    $dob = '0000-00-00';
    $AgeClass = '';
    $Classes = '';
    if (!empty($ctrlCode)) {
        list($__yy, $mm, $dd) = explode('-', $ctrlCode);
        // Ultime 2 cifre dell'anno
        $__yy = substr($__yy, -2);
        // Prime 2 cifre dell'anno
        $yy__ = '19';
        /*
        	Pivot per discriminare 19xx e 20xx
        */
        if ($__yy >= '00' && $__yy <= '20') {
            $yy__ = '20';
require_once 'Common/Lib/Fun_DateTime.inc.php';
require_once 'Fun_Partecipants.local.inc.php';
if (!CheckTourSession() || !isset($_REQUEST['d_e_EnCtrlCode']) || !isset($_REQUEST['d_e_EnSex'])) {
    print get_text('CrackError');
    exit;
}
$Errore = 0;
$AgeClass = '';
$Classes = '';
$Divisions = '';
$ctrlCode = '';
$Age = '';
$Sex = intval($_REQUEST['d_e_EnSex']);
$Div = empty($_REQUEST['d_e_EnDiv']) ? '' : $_REQUEST['d_e_EnDiv'];
$Clas = empty($_REQUEST['d_e_EnAgeClass']) ? '' : $_REQUEST['d_e_EnAgeClass'];
if (!empty($_REQUEST['d_e_EnCtrlCode']) and $ctrlCode = ConvertDateLoc($_REQUEST['d_e_EnCtrlCode'])) {
    $Age = intval(substr($_SESSION['TourRealWhenTo'], 0, 4) - substr($ctrlCode, 0, 4));
}
$divs = array();
$clas = array();
$vald = array();
// Get the Divisions allowed based on Age (if any restriction applies)
// Age check not done if not an athlete
$Select1 = "select ClId, ClValidClass, DivId from Classes" . " inner join Divisions on DivTournament=ClTournament and DivAthlete=ClAthlete" . " where ClTournament={$_SESSION['TourId']}" . " AND (ClDivisionsAllowed='' or find_in_set(DivId, ClDivisionsAllowed))" . " AND ClSex in (-1, {$Sex})" . ($Age ? " and (ClAthlete!='1' or (ClAgeFrom<={$Age} and ClAgeTo>={$Age}))" : '') . " order by ClViewOrder, DivViewOrder ";
$RsCl = safe_r_sql($Select1);
while ($MyRow = safe_fetch($RsCl)) {
    $divs[] = $MyRow->DivId;
}
$Divisions = implode(',', array_unique($divs));
// get the classes based on the division selected
$Select2 = "select ClId, ClValidClass, DivId from Classes" . " inner join Divisions on DivTournament=ClTournament and DivAthlete=ClAthlete" . ($Div ? " AND DivId='{$Div}'" : '') . " where ClTournament={$_SESSION['TourId']}" . " AND (ClDivisionsAllowed='' or find_in_set(DivId, ClDivisionsAllowed))" . " AND ClSex in (-1, {$Sex})" . ($Age ? " and (ClAthlete!='1' or (ClAgeFrom<={$Age} and ClAgeTo>={$Age}))" : '') . " order by ClViewOrder, DivViewOrder ";
Exemple #3
0
 /* TeamFinEvent      */
 $ShootFinTeam2Save = count($tmpString) <= 8 || !empty($tmpString[8]) ? '1' : '0';
 /* MixedTeamFinEvent */
 $ShootFinMixTeam2Save = count($tmpString) <= 9 || !empty($tmpString[9]) ? '1' : '0';
 /* FamilyName        */
 $FirstName2Save = count($tmpString) >= 11 && $tmpString[10] ? AdjustCaseTitle($tmpString[10]) : '';
 /* Name              */
 $Name2Save = count($tmpString) >= 12 && $tmpString[11] ? AdjustCaseTitle($tmpString[11]) : '';
 /* Sex               */
 $Sex2Save = count($tmpString) >= 13 && (intval($tmpString[12]) || $tmpString[12] != 'M') ? "1" : "0";
 /* Country           */
 $Country2Save = count($tmpString) >= 14 && $tmpString[13] ? UpperText($tmpString[13]) : '';
 /* Nation            */
 $Nation2Save = count($tmpString) >= 15 && $tmpString[14] ? AdjustCaseTitle($tmpString[14]) : '';
 /* DOB               */
 $DoB2Save = count($tmpString) >= 16 ? ConvertDateLoc($tmpString[15]) : "0000-00-00";
 /* SubClass          */
 $SubClass2Save = count($tmpString) >= 17 ? $tmpString[16] : "";
 /* Country 2         */
 $SecondCountry2Save = count($tmpString) >= 19 ? UpperText($tmpString[17]) : "";
 /* Nation 2          */
 $SecondNation2Save = count($tmpString) >= 19 ? AdjustCaseTitle($tmpString[18]) : "";
 /* Country 3         */
 $ThirdCountry2Save = count($tmpString) >= 21 ? UpperText($tmpString[19]) : "";
 /* Nation 3          */
 $ThirdNation2Save = count($tmpString) >= 21 ? AdjustCaseTitle($tmpString[20]) : "";
 $CtrlCode2Save = "";
 $AgeClass2Save = $Class2Save;
 $Status2Save = "0";
 $IdCountry2Save = "0";
 $NationComplete2Save = $Nation2Save;
$error = 0;
$id = isset($_REQUEST['id']) ? $_REQUEST['id'] : '';
$ctrlCode = isset($_REQUEST['ctrl_code']) ? $_REQUEST['ctrl_code'] : '';
$sex = isset($_REQUEST['sex']) ? $_REQUEST['sex'] : null;
$row = isset($_REQUEST['row']) ? $_REQUEST['row'] : '';
$col = isset($_REQUEST['col']) ? $_REQUEST['col'] : '';
$div = isset($_REQUEST['div']) ? $_REQUEST['div'] : '';
$noCalc = isset($_REQUEST['noCalc']) ? $_REQUEST['noCalc'] : 0;
//	if (!$id || !$ctrlCode || !$row || !$col)
//	{
//		print get_text('CrackError');
//		exit;
//	}
if (!IsBlocked(BIT_BLOCK_PARTICIPANT)) {
    //if (IsValidCF($ctrlCode) || ConvertDate($ctrlCode) || strlen($ctrlCode)==0)
    $ctrlCode = ConvertDateLoc($ctrlCode);
    if ($ctrlCode !== false) {
        $dob = '0000-00-00';
        $cl = '--';
        $agecl = '--';
        $dontTouchCl = false;
        if (!empty($ctrlCode)) {
            $yy = substr($ctrlCode, 0, 4);
            $dob = $ctrlCode;
            // calcolo la classe anagrafica e setto l'altra uguale a lei
            $sql = "SELECT ToWhenFrom FROM Tournament WHERE ToId=" . StrSafe_DB($_SESSION['TourId']) . " ";
            //print $sql;exit;
            $rs = safe_r_sql($sql);
            $myRow = safe_fetch($rs);
            $ToWhenFrom = $myRow->ToWhenFrom;
            $year = substr($ToWhenFrom, 0, 4) - $yy;
function DoLookupEntries($u, $file = '')
{
    global $CFG;
    echo get_text('MsgLookup1', 'Tournament') . '<br/>';
    flush();
    //ob_flush();
    $DataSource = file_get_contents($file ? $file : $u->LupPath);
    if (!$DataSource) {
        echo "No Database<br>\n";
        return;
    }
    // checks if it is gzipped
    if ($unzipped = @gzuncompress($DataSource)) {
        $DataSource = $unzipped;
    }
    echo get_text('MsgLookup2', 'Tournament') . '<br/>';
    flush();
    // 	debug_svela($DataSource);
    //ob_flush();
    $NumRows = 0;
    if ($u->LupFors) {
        // FORS Entry
        $XML = new DOMDocument();
        $XML->preserveWhiteSpace = false;
        $XML->loadXML(trim($DataSource));
        //$XML->normalizeDocument();
        $Entries = $XML->getElementsByTagName('Table1');
        if ($Entries and $Entries->length) {
            safe_w_sql("delete from LookUpEntries where LueIocCode='{$u->LupIocCode}'");
        }
        echo get_text('MsgLookup3', 'Tournament') . '<br/>';
        @flush();
        @ob_flush();
        for ($n = 0; $n < $Entries->length; $n++) {
            $Entry = simplexml_import_dom($Entries->item($n));
            $Entry->NATIONCODE = mb_convert_case($Entry->NATIONCODE, MB_CASE_UPPER, "UTF-8");
            $Entry->SURNAME = AdjustCaseTitle($Entry->SURNAME);
            $Entry->NAME = AdjustCaseTitle($Entry->NAME);
            $Entry->NATIONDESC = AdjustCaseTitle($Entry->NATIONDESC);
            $Data = "LueFamilyName=" . StrSafe_DB($Entry->SURNAME) . "\r\n\t\t\t\t, LueName=" . StrSafe_DB($Entry->NAME) . "\r\n\t\t\t\t, LueSex=" . ($Entry->GENDER == 'M' ? 0 : 1) . "\r\n\t\t\t\t, LueCtrlCode='" . ConvertDateLoc($Entry->BIRTHDATE) . "'\r\n\t\t\t\t, LueCountry=" . StrSafe_DB($Entry->NATIONCODE) . "\r\n\t\t\t\t, LueCoDescr=" . StrSafe_DB($Entry->NATIONDESC) . "\r\n\t\t\t\t, LueDefault=1\r\n\t\t\t\t, LueCoShort=" . StrSafe_DB($Entry->NATIONDESC);
            $Sql = "insert into LookUpEntries set\r\n\t\t\t\tLueCode=" . StrSafe_DB($Entry->ID . ($Entry->TYPE == 'ATHLETE' ? '' : 'O')) . "\r\n\t\t\t\t, LueIocCode=" . StrSafe_DB($u->LupIocCode) . "\r\n\t\t\t\t, " . $Data . "\r\n\t\t\t\ton duplicate key update " . $Data;
            safe_w_sql($Sql);
            if ($NumRows++ % 100 == 0) {
                echo "- ";
            }
            if ($NumRows % 2000 == 0) {
                echo "<br>";
            }
            @flush();
            @ob_flush();
        }
        safe_w_sql("update LookUpPaths set LupLastUpdate=now() where LupIocCode='{$u->LupIocCode}'");
    } else {
        $file = $CFG->DOCUMENT_PATH . 'Tournament/TmpDownload/archers.dat';
        @file_put_contents($file, $DataSource);
        $fp = @fopen($file, 'r');
        if ($fp === false) {
            die('Cannot read downloaded data!');
        }
        // la prima riga deve essere nella forma "VERSION: #.#"
        $buffer = fgets($fp);
        if (!preg_match('/VERSION: [0-9]+\\.[0-9]+/', $buffer)) {
            die('Bad file format!');
        }
        // se la versione non è 2.0 mi fermo
        list(, $ver) = explode(':', $buffer);
        if (trim($ver) != '2.0') {
            die('Incompatible Version!');
        }
        // la seconda riga deve essere nella forma "DATE: ##############"
        $buffer = fgets($fp);
        if (!preg_match('/DATE: [0-9]{4}\\-[0-9]{2}\\-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/', $buffer)) {
            die('Bad file format!');
        }
        $date = str_replace('DATE: ', '', $buffer);
        // la terza riga deve essere nella forma "IOC: [a-zA-Z0-9]*" e se c'è il codice lo uso come ioc
        $buffer = fgets($fp);
        $buffer = substr($buffer, 0, -1);
        // per togliere il newline finale
        if (substr($buffer, 0, 4) != 'IOC:') {
            die('Bad file format!');
        }
        $ioc = trim(str_replace('IOC:', '', $buffer));
        if (empty($ioc)) {
            $ioc = $u->LupIocCode;
        }
        // la quarta riga deve essere "CLUBS": se sì allora inizio a leggere fino a che non trovo "ENTRIES" o al più fino alla fine
        $buffer = fgets($fp);
        //print 'clubs<br>';
        if (!preg_match('/CLUBS/', $buffer)) {
            die('Bad file format!');
        }
        safe_w_sql("delete from LookUpEntries where LueIocCode='{$ioc}'");
        echo get_text('MsgLookup3', 'Tournament') . '<br/>';
        @flush();
        @ob_flush();
        $clubs = array();
        // la riga è: code nome nomebreve
        while (($buffer = fgets($fp)) !== false) {
            $buffer = substr($buffer, 0, -1);
            // per togliere il newline finale
            if ($buffer == 'ENTRIES') {
                break;
            }
            $row = explode("\t", $buffer);
            $clubs[$row[0]] = array($row[1], $row[2]);
        }
        /*
         *  qui se ho letto "ENTRIES" ho il puntatore del file già a posto. Se sono arrivato alla fine (no nomi e/o no "ENTRIES")
         *  il ciclo terminerebbe subito
         */
        // la riga è: code ioc familyname name sex dob div status validuntil soc1 soc2 terne per la classe,subcl e default
        while (($buffer = fgets($fp)) !== false) {
            $buffer = rtrim($buffer);
            // per togliere il newline finale
            $row = explode("\t", $buffer);
            // fino all'indice 10 ho dati che non riguardano la classe e dall'11 ho le terne delle classi
            $Sql = "REPLACE into LookUpEntries set " . "LueCode=" . StrSafe_DB($row[0]) . ", LueIocCode=" . StrSafe_DB($ioc) . ", LueFamilyName=" . StrSafe_DB($row[2]) . ", LueName=" . StrSafe_DB($row[3]) . ", LueSex=" . $row[4] . ", LueCtrlCode='" . $row[5] . "'" . ", LueCountry=" . StrSafe_DB($row[9]) . ", LueCoDescr=" . StrSafe_DB($clubs[$row[9]][0]) . ", LueCoShort=" . StrSafe_DB(!empty($clubs[$row[9]][1]) ? $clubs[$row[9]][1] : $clubs[$row[9]][0]) . ", LueCountry2=" . StrSafe_DB($row[10]) . ", LueCoDescr2=" . StrSafe_DB(!empty($clubs[$row[10]][0]) ? $clubs[$row[10]][0] : '') . ", LueCoShort2=" . StrSafe_DB(!empty($clubs[$row[10]][0]) ? !empty($clubs[$row[10]][1]) ? $clubs[$row[10]][1] : $clubs[$row[10]][0] : '') . ", LueDivision=" . StrSafe_DB($row[6]) . ", LueStatus=" . $row[7] . ", LueStatusValidUntil=" . StrSafe_DB($row[8]) . ", LueClass=%1\$s" . ", LueSubClass=%2\$s" . ", LueDefault=%3\$s";
            for ($i = 11; $i < count($row); $i += 3) {
                //				print $row[$i] . ' - ' . $row[$i+1] . ' - ' .$row[$i+2].'<br>';
                //				$q=sprintf($Sql, StrSafe_DB($row[$i]), StrSafe_DB($row[$i+1]), StrSafe_DB($row[$i+2]));
                //				print $q.'<br><br>';
                safe_w_sql(sprintf($Sql, StrSafe_DB($row[$i]), StrSafe_DB($row[$i + 1]), StrSafe_DB($row[$i + 2])));
            }
            if ($NumRows++ % 100 == 0) {
                echo "- ";
            }
            if ($NumRows % 2000 == 0) {
                echo "<br>";
            }
            @flush();
            @ob_flush();
        }
        fclose($fp);
        @unlink($file);
        safe_w_sql("insert into LookUpPaths set LupIocCode='{$ioc}', LupLastUpdate='{$date}' on duplicate key update LupLastUpdate='{$date}'");
    }
    echo '<br/>' . get_text('MsgLookup4', 'Tournament') . '<br/>';
    @flush();
    @ob_flush();
    // SE LA GARA NON E' BLOCCATA AGGIORNA GLI ARCIERI!
    if (!IsBlocked(BIT_BLOCK_PARTICIPANT)) {
        /*
         * Trasformazione degli stati:
         * Le righe con EnStatus=1 e LueStatus=8 con dt buona e le righe con EnStatus=6 o =7 non vengono toccate.
         * Le altre invece prendono lo status della lookup se la dt gara è precedente alla scandenza della persona altrimenti pigliano 5
         *
         */
        $Sql = "\r\n\t\t\t\tUPDATE\r\n\t\t\t\t\tEntries\r\n\t\t\t\t\tINNER JOIN\r\n\t\t\t\t\t\tTournament\r\n\t\t\t\t\tON EnTournament=ToId\r\n\t\t\t\t\tINNER JOIN\r\n\t\t\t\t\t\tLookUpEntries\r\n\t\t\t\t\tON EnCode=LueCode and LueIocCode=IF(EnIocCode!='',EnIocCode,ToIocCode)\r\n\t\t\t\tSET\r\n\t\t\t\t\tEnStatus=IF(ToWhenFrom>LueStatusValidUntil AND LueStatusValidUntil<>'0000-00-00',5,LueStatus)\r\n\t\t\t\tWHERE\r\n\t\t\t\t\tEnTournament=" . StrSafe_DB($_SESSION['TourId']) . "\r\n\t\t\t\t\tAND  NOT (EnStatus=6 OR EnStatus=7 OR (EnStatus<=1 AND LueStatus=8 AND LueStatusValidUntil>=ToWhenTo AND LueStatusValidUntil<>'0000-00-00'))\r\n\t\t\t";
        $Rs = safe_w_sql($Sql);
        $Sql = "UPDATE Entries " . "INNER JOIN Tournament ON EnTournament=ToId " . "INNER JOIN LookUpEntries ON EnCode=LueCode and LueIocCode=IF(EnIocCode!='',EnIocCode,ToIocCode) AND EnClass=LueClass " . "SET EnSubClass=LueSubClass " . "WHERE EnTournament = " . StrSafe_DB($_SESSION['TourId']);
        $Rs = safe_w_sql($Sql);
        echo get_text('MsgLookup5', 'Tournament') . '<br/>';
    }
    @flush();
    @ob_flush();
    //			$Rs=safe_w_sql("LOAD DATA LOCAL INFILE '" . $CFG->DOCUMENT_PATH . "Tournament/TmpDownload/ImportData' INTO TABLE LookUpEntries");
}