UpdateTournament($connection, $t->TournamentKey, 'Name', $t->Name, 's'); UpdateTournament($connection, $t->TournamentKey, 'Year', $t->Year, 's'); UpdateTournament($connection, $t->TournamentKey, 'StartDate', $t->StartDate, 's'); UpdateTournament($connection, $t->TournamentKey, 'EndDate', $t->EndDate, 's'); UpdateTournament($connection, $t->TournamentKey, 'SignupStartDate', $t->SignupStartDate, 's'); UpdateTournament($connection, $t->TournamentKey, 'SignupEndDate', $t->SignupEndDate, 's'); UpdateTournament($connection, $t->TournamentKey, 'CancelEndDate', $t->CancelEndDate, 's'); UpdateTournament($connection, $t->TournamentKey, 'LocalHandicap', $t->LocalHandicap, 's'); UpdateTournament($connection, $t->TournamentKey, 'ScgaTournament', $t->ScgaTournament, 'i'); UpdateTournament($connection, $t->TournamentKey, 'TeamSize', $t->TeamSize, 'i'); UpdateTournament($connection, $t->TournamentKey, 'TournamentDescriptionKey', $t->TournamentDescriptionKey, 'i'); UpdateTournament($connection, $t->TournamentKey, 'Cost', $t->Cost, 'i'); UpdateTournament($connection, $t->TournamentKey, 'Pool', $t->Pool, 'i'); UpdateTournament($connection, $t->TournamentKey, 'ChairmanName', $t->ChairmanName, 's'); UpdateTournament($connection, $t->TournamentKey, 'ChairmanEmail', $t->ChairmanEmail, 's'); UpdateTournament($connection, $t->TournamentKey, 'ChairmanPhone', $t->ChairmanPhone, 's'); UpdateTournament($connection, $t->TournamentKey, 'Stableford', $t->Stableford, 'i'); UpdateTournament($connection, $t->TournamentKey, 'Eclectic', $t->Eclectic, 'i'); UpdateTournament($connection, $t->TournamentKey, 'SendEmail', $t->SendEmail, 'i'); UpdateTournament($connection, $t->TournamentKey, 'RequirePayment', $t->RequirePayment, 'i'); UpdateTournament($connection, $t->TournamentKey, 'SCGAQualifier', $t->SCGAQualifier, 'i'); UpdateTournament($connection, $t->TournamentKey, 'SrClubChampionship', $t->SrClubChampionship, 'i'); UpdateTournament($connection, $t->TournamentKey, 'OnlineSignUp', $t->OnlineSignUp, 'i'); UpdateTournament($connection, $t->TournamentKey, 'MatchPlay', $t->MatchPlay, 'i'); UpdateTournament($connection, $t->TournamentKey, 'AllowNonMemberSignup', $t->AllowNonMemberSignup, 'i'); UpdateTournament($connection, $t->TournamentKey, 'AnnouncementOnly', $t->AnnouncementOnly, 'i'); UpdateTournament($connection, $t->TournamentKey, 'MemberGuest', $t->MemberGuest, 'i'); } } } echo "Success";
function tour_import($filename) { // Tabelle che hanno il codice Tournament $tabs_on_tour = array('AccColors' => 'Ac', 'AccEntries' => 'AE', 'AccPrice' => 'AP', 'ACL' => 'Acl', 'AclDetails' => 'AclDt', 'AvailableTarget' => 'At', 'Awards' => 'Aw', 'Awarded' => 'Aw', 'BackNumber' => 'Bn', 'CasScore' => 'CaS', 'CasTeam' => 'Ca', 'CasTeamFinal' => 'CTF', 'CasTeamTarget' => 'CTT', 'Classes' => 'Cl', 'ClubTeam' => 'CT', 'ClubTeamScore' => 'CTS', 'Countries' => 'Co', 'Divisions' => 'Div', 'DistanceInformation' => 'Di', 'Emails' => 'Em', 'Entries' => 'En', 'EventClass' => 'Ec', 'Events' => 'Ev', 'Individuals' => 'Ind', "F2FGrid" => 'F2F', "F2FEntries" => "F2F", "F2FFinal" => "F2F", 'FinalReportA' => 'Fra', 'Finals' => 'Fin', 'FinSchedule' => 'FS', 'FinTraining' => 'Ft', 'FinTrainingEvent' => 'Fte', 'FinWarmup' => 'Fw', 'HhtData' => 'Hd', 'HhtEvents' => 'He', 'HhtSetup' => 'Hs', 'IdCardElements' => 'Ice', 'IdCards' => 'Ic', 'Images' => 'Im', 'ModulesParameters' => 'Mp', 'RecTournament' => 'Rt', 'Reviews' => 'Rev', 'SubClass' => 'Sc', 'TargetFaces' => 'Tf', 'TeamComponent' => 'Tc', 'TeamFinals' => 'Tf', 'TeamFinComponent' => 'Tfc', 'Teams' => 'Te', 'TournamentDistances' => 'Td', 'TournamentInvolved' => 'Ti', 'TourRecords' => 'Tr', 'TVContents' => 'TVC', 'TVOut' => 'TV', 'TVParams' => 'TVP', 'TVRules' => 'TVR', 'TVSequence' => 'TVS', 'Session' => 'Ses', 'Scheduler' => 'Sch', 'Eliminations' => 'El', 'VegasAwards' => 'Va'); // Tabelle che hanno il codice Countries $tab_to_country = array('CasTeam' => 'CaTeam', 'ClubTeam' => 'CTTeam', 'Entries' => array('EnCountry', 'EnCountry2', 'EnCountry3'), 'TeamComponent' => 'TcCoId', 'TeamFinals' => 'TfTeam', 'TeamFinComponent' => 'TfcCoId', 'Teams' => 'TeCoId'); // Tabelle che hanno il codice Entries $tab_to_entry = array('AccEntries' => 'AEId', 'Awarded' => 'AwEntry', 'ElabQualifications' => 'EqId', 'Eliminations' => 'ElId', 'ExtraData' => 'EdId', 'Individuals' => 'IndId', "F2FEntries" => "F2FEnId", "F2FFinal" => "F2FEnId", 'Finals' => 'FinAthlete', 'HhtData' => 'HdEnId', 'Photos' => 'PhEnId', 'Qualifications' => 'QuId', 'TeamComponent' => 'TcId', 'TeamFinComponent' => 'TfcId', 'Vegas' => 'VeId'); // Tabelle che dipendono SOLO da Tournament $tabs_only_tour = array('AccColors', 'AccPrice', 'ACL', 'AclDetails', 'AvailableTarget', 'Awards', 'BackNumber', 'CasScore', 'CasTeamFinal', 'CasTeamTarget', 'Classes', 'ClubTeamScore', 'DistanceInformation', 'Divisions', 'Emails', 'EventClass', 'Events', 'F2FGrid', 'FinalReportA', 'FinSchedule', 'FinTraining', 'FinTrainingEvent', 'FinWarmup', 'HhtEvents', 'HhtSetup', 'IdCardElements', 'IdCards', 'Images', 'ModulesParameters', 'RecTournament', 'Reviews', 'SubClass', 'TargetFaces', 'TournamentDistances', 'TournamentInvolved', 'TourRecords', 'TVContents', 'TVOut', 'TVParams', 'TVRules', 'TVSequence', 'Session', 'Scheduler', 'Eliminations', 'VegasAwards'); $Gara = unserialize(gzuncompress(implode('', file($filename)))); // If is not compatible, exits if ($Gara['Tournament']['ToDbVersion'] > GetParameter('DBUpdate')) { return false; } require_once 'UpdateTournament.inc.php'; $Gara = UpdateTournament($Gara); // CONTROLLA SE C'E' UN TORNEO CON LO STESSO CODICE E LO SEGA! $q = safe_r_sql("select ToId from Tournament where ToCode=" . strsafe_db($Gara['Tournament']['ToCode'])); if ($r = safe_fetch($q)) { // esiste un tournament con lo stesso codice... ranzo tutto! tour_delete($r->ToId); } // Inserisce il torneo $quer = array(); foreach ($Gara['Tournament'] as $key => $val) { if ($key != 'ToId') { $quer[] = "{$key}=" . strsafe_db($val); // if($key=='ToImgL') debug_svela(array('SAFE' => strsafe_db($val), '','','','','', 'ORG' => $val)); } } safe_w_sql("Insert into Tournament set " . implode(', ', $quer)); $TourId = safe_w_last_id(); if (debug) { echo "Inserito Tournament<br />"; } // aggiusta il nuovo valore del torneo nell'array... foreach ($tabs_on_tour as $tab => $code) { if (isset($Gara[$tab])) { foreach ($Gara[$tab] as $key => $val) { $Gara[$tab][$key][$code . 'Tournament'] = $TourId; } if (debug) { echo "Aggiornato Tournament Nr. in tabella {$tab}<br />"; } } } // inserisce le tabelle che hanno SOLO il tournament foreach ($tabs_only_tour as $tab) { if (isset($Gara[$tab])) { foreach ($Gara[$tab] as $record) { $query = array(); foreach ($record as $key => $val) { $query[] = "{$key} = " . strsafe_db($val); } safe_w_sql("insert into {$tab} set " . implode(', ', $query) . " on duplicate key update " . implode(', ', $query)); } } if (debug) { echo "Inserita tabella {$tab}<br />"; } } // inserisce i paesi e mantieni l'array per il cambio country $Countries = array(); if (array_key_exists('Countries', $Gara) && is_array($Gara['Countries']) && count($Gara['Countries']) > 0) { foreach ($Gara['Countries'] as $record) { $query = array(); foreach ($record as $key => $val) { if ($key != 'CoId') { $query[] = "{$key} = " . strsafe_db($val); } } safe_w_sql("insert into Countries set " . implode(', ', $query)); $Countries[$record['CoId']] = safe_w_last_id(); } if (debug) { echo "Inserita tabella Countries<br />"; } } //aggiorna CoParent1 della Countries stessa $tmpSql = "SELECT DISTINCT CoParent1 FROM Countries WHERE CoTournament=" . $TourId . " AND CoParent1!=0"; $tmpRs = safe_r_sql($tmpSql); if (safe_num_rows($tmpRs) != 0) { while ($tmpRow = safe_fetch($tmpRs)) { safe_w_sql("UPDATE Countries SET CoParent1=" . $Countries[$tmpRow->CoParent1] . " WHERE CoParent1=" . $tmpRow->CoParent1 . " AND CoTournament=" . $TourId); } safe_free_result($tmpRs); } //aggiorna CoParent2 della Countries stessa $tmpSql = "SELECT DISTINCT CoParent2 FROM Countries WHERE CoTournament=" . $TourId . " AND CoParent2!=0"; $tmpRs = safe_r_sql($tmpSql); if (safe_num_rows($tmpRs) != 0) { while ($tmpRow = safe_fetch($tmpRs)) { safe_w_sql("UPDATE Countries SET CoParent2=" . $Countries[$tmpRow->CoParent2] . " WHERE CoParent2=" . $tmpRow->CoParent2 . " AND CoTournament=" . $TourId); } safe_free_result($tmpRs); } // aggiorna i paesi nelle tabelle che ne fanno uso foreach ($tab_to_country as $tab => $field) { if (array_key_exists($tab, $Gara)) { foreach ($Gara[$tab] as $key => $record) { if (is_array($field)) { foreach ($field as $ff) { if (array_key_exists($ff, $record) && $record[$ff]) { $Gara[$tab][$key][$ff] = $Countries[$record[$ff]]; } } } else { if ($record[$field] && array_key_exists($record[$field], $Countries)) { $Gara[$tab][$key][$field] = $Countries[$record[$field]]; } } } } if (debug) { echo "Aggiornata il Country di tabella {$tab}<br />"; } } // inserisce le Entries e mantieni l'array per il cambio Entry $Entries = array(); if (array_key_exists('Entries', $Gara) && is_array($Gara['Entries']) && count($Gara['Entries']) > 0) { foreach ($Gara['Entries'] as $record) { $query = array(); foreach ($record as $key => $val) { if ($key != 'EnId') { $query[] = "{$key} = " . strsafe_db($val); } } safe_w_sql("insert into Entries set " . implode(', ', $query)); $Entries[$record['EnId']] = safe_w_last_id(); } if (debug) { echo "Inserita tabella Entries<br />"; } } // aggiorna le rimanenti tabelle con le Entries corrette foreach ($tab_to_entry as $tab => $field) { if (array_key_exists($tab, $Gara)) { foreach ($Gara[$tab] as $key => $record) { if (array_key_exists($record[$field], $Entries) && $record[$field]) { $Gara[$tab][$key][$field] = $Entries[$record[$field]]; } } } if (debug) { echo "Aggiornata l'Entry di tabella {$tab}<br />"; } } // inserisce le tabelle restanti unset($tab_to_country['Entries']); $final_tabs = array_unique(array_merge(array_keys($tab_to_country), array_keys($tab_to_entry))); foreach ($final_tabs as $tab) { if (array_key_exists($tab, $Gara)) { foreach ($Gara[$tab] as $record) { $query = array(); foreach ($record as $key => $val) { $query[] = "{$key} = " . strsafe_db($val); } // attenzione: questa query era "commentata" per non far apparirer errori: // se questo comportamento è desiderato, chiamare la funzione safe_w_sql passando // come terzo parametro un array con gli errori numerici ammessi safe_w_sql("REPLACE INTO {$tab} set " . implode(', ', $query)); } } if (debug) { echo "Inserita tabella {$tab}<br />"; } } //Gestisce la tabella Flags if (array_key_exists('Flags', $Gara) && is_array($Gara['Flags']) && count($Gara['Flags']) > 0) { foreach ($Gara['Flags'] as $record) { if ($record['FlTournament'] != -1) { $record['FlTournament'] = $TourId; } $query = array(); foreach ($record as $key => $val) { $query[] = "{$key} = " . strsafe_db($val); } safe_w_sql("insert into Flags set " . implode(', ', $query) . " on duplicate key update " . implode(', ', $query)); } if (debug) { echo "Inserita tabella Flags<br />"; } } return $TourId; }