Пример #1
0
 /**
  * @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);
     }
 }