public static function updateTanks() { $jsonString = self::getContent(str_replace('{applicationId}', self::getApplicationId(), self::$wotApiTanks)); if ($jsonString != false) { $jsonData = json_decode($jsonString, true); if ($jsonData['status'] == 'ok') { $tran = Yii::app()->db->beginTransaction(); $tanks = WotTank::model()->findAll(array('index' => 'tank_id')); $nations = WotTankNation::model()->findAll(array('index' => 'tank_nation_id')); $classes = WotTankClass::model()->findAll(array('index' => 'tank_class_id')); foreach ($jsonData['data'] as $data) { if (!isset($nations[$data['nation']])) { $nation = new WotTankNation(); $nation->tank_nation_id = $data['nation']; $nation->tank_nation_name = $data['nation_i18n']; $nation->save(false); $nations[$data['nation']] = $nation; } if (!isset($classes[$data['type']])) { $class = new WotTankClass(); $class->tank_class_id = $data['type']; $class->tank_class_name = $data['type_i18n']; $class->save(false); $classes[$data['type']] = $class; } if (!isset($tanks[$data['tank_id']])) { $tank = new WotTank(); } else { $tank = $tanks[$data['tank_id']]; } $tank->tank_id = $data['tank_id']; $tank->tank_class_id = $data['type']; $tank->tank_nation_id = $data['nation']; $tank->tank_level = $data['level']; $tank->is_premium = $data['is_premium']; if (preg_match("/#(.*?):(.*)/", $data['name'], $mathes)) { $tankName = $mathes[2]; } else { $tankName = $data['name']; } $tank->tank_name = $tankName; $tank->tank_name_i18n = $data['name_i18n']; $tank->save(false); } $tran->commit(); } } }