/** * @param $match */ public function insert(match $match) { $db = db::obtain(); $slots = $match->get_all_slots(); if ($match->get('radiant_team_id')) { $db->insert_pdo(db::real_tablename('teams'), array('id' => $match->get('radiant_team_id'), 'name' => $match->get('radiant_name'))); } if ($match->get('dire_team_id')) { $db->insert_pdo(db::real_tablename('teams'), array('id' => $match->get('dire_team_id'), 'name' => $match->get('dire_name'))); } // save common match info $db->insert_pdo(db::real_tablename('matches'), $match->get_data_array()); $users_data = array(); // save accounts foreach ($slots as $slot) { if ($slot->get('account_id') != player::ANONYMOUS) { $db->insert_pdo(db::real_tablename('users'), array('account_id' => $slot->get('account_id'), 'steamid' => player::convert_id($slot->get('account_id')))); } } // save slots foreach ($slots as $slot) { $slot_id = $db->insert_pdo(db::real_tablename('slots'), $slot->get_data_array()); // save abilities upgrade $a_u = $slot->get_abilities_upgrade(); if (count($a_u) > 0) { $keys = array(); $data = array(); foreach ($a_u as $ability) { $keys = array_keys($ability); // yes, it will be reassigned many times $data1 = array_values($ability); array_unshift($data1, $slot_id); array_push($data, $data1); } reset($a_u); array_unshift($keys, 'slot_id'); $db->insert_many_pdo(db::real_tablename('ability_upgrades'), $keys, $data); } $additional_unit = $slot->get_additional_unit_items(); if (count($additional_unit) > 0) { $additional_unit['slot_id'] = $slot_id; $db->insert_pdo(db::real_tablename('additional_units'), $additional_unit); } } if ($match->get('game_mode') == match::CAPTAINS_MODE) { $picks_bans = $match->get_all_picks_bans(); $data = array(); foreach ($picks_bans as $pick_ban) { $data1 = array(); array_push($data1, $match->get('match_id')); array_push($data1, $pick_ban['is_pick']); array_push($data1, $pick_ban['hero_id']); array_push($data1, $pick_ban['team']); array_push($data1, $pick_ban['order']); array_push($data, $data1); } $db->insert_many_pdo(db::real_tablename('picks_bans'), array('match_id', 'is_pick', 'hero_id', 'team', 'order'), $data); } }