- 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 ";
/* 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"); }