/** * @return WotProvince the static model class */ public static function getByAttributes($attributes) { $arena = WotArena::model()->findByPk($attributes['arena_id']); if (empty($arena)) { $arena = new WotArena(); $arena->arena_id = $attributes['arena_id']; $arena->arena_name = $attributes['arena_name']; $arena->save(false); } $model = self::model()->findByBk($attributes['province_id']); if (empty($model)) { $model = new WotProvince(); $model->province_id = $attributes['province_id']; $model->province_name = $attributes['name']; $model->arena_id = $attributes['arena_id']; $model->attaked = $attributes['attaked']; $model->occupancy_time = $attributes['occupancy_time']; $model->combats_running = $attributes['combats_running']; $model->prime_time = $attributes['prime_time']; $model->gold = $attributes['gold']; $model->save(false); } return $model; }
/** * * @param WotClan $clan */ public static function updateClanProvinces($clan) { $clanId = $clan->clan_id . '-' . $clan->clan_name; $data = self::ajaxRequest("http://worldoftanks.ru/community/clans/{$clanId}/provinces/list/"); $currentProvinces = array(); if (!empty($data)) { if ($data['status'] == 'ok') { foreach ($data['request_data']['items'] as $item) { $province = WotProvince::getByAttributes($item['name'], $item['id']); $map = WotMap::getByName($item['arena_name']); $currentProvinces[$item['name']] = $item['id']; $clanProvince = WotClanProvince::model()->findByAttributes(array('province_id' => $province->province_id, 'clan_id' => $clan->clan_id, 'date_end' => null)); if (empty($clanProvince)) { $clanProvince = new WotClanProvince(); $clanProvince->clan_id = $clan->clan_id; $clanProvince->province_id = $province->province_id; $clanProvince->prime_time = $item['prime_time']; $clanProvince->map_id = $map->map_id; $clanProvince->revenue = $item['revenue']; $clanProvince->type = $item['type']; $days = intval($item['occupancy_time']); if ($days > 0) { $clanProvince->date_start = new CDbExpression("date_add(curdate(), interval -{$days} DAY)"); } else { $clanProvince->date_start = new CDbExpression('curdate()'); } $clanProvince->save(false); } } foreach ($clan->clanProvinces as $clanProvince) { if (!isset($currentProvinces[$clanProvince->province->province_name])) { $clanProvince->date_end = new CDbExpression('now()'); $clanProvince->save(false); } } } } }