public static function achievment($achievmentName) { if (empty(self::$_models)) { self::$_models = self::model()->findAll(array('index' => 'achievment_name')); } if (!isset(self::$_models[$achievmentName])) { $model = new self(); $model->achievment_name = $achievmentName; $model->save(false); self::$_models[$achievmentName] = $model; } return self::$_models[$achievmentName]; }
/** * * @param WotClan $clan */ public static function updateClanPlayersInfo($clan) { $url = strtr(self::$wotApiPlayerUrl, array('{applicationId}' => self::getApplicationId(), '{playerId}' => implode(',', array_keys($clan->players)))); $jsonString = self::getContent($url); if ($jsonString != false) { $jsonData = json_decode($jsonString, true); if ($jsonData['status'] == 'ok') { $tran = Yii::app()->db->beginTransaction(); foreach ($jsonData['data'] as $playerId => $data) { $player = $clan->players[$playerId]; $achievments = $player->achievments; $player->updated_at = date('Y-m-d H:i', $data['updated_at']); foreach ($data['achievements'] as $key => $value) { if ($value > 0) { if (isset($achievments[$key])) { $playerAchievment = $achievments[$key]; } else { $achievment = WotAchievment::achievment($key); $playerAchievment = new WotPlayerAchievment(); $playerAchievment->achievment_id = $achievment->achievment_id; $playerAchievment->player_id = $player->player_id; } if ($playerAchievment->cnt != $value) { $playerAchievment->cnt = $value; $playerAchievment->updated_at = $player->updated_at; $playerAchievment->save(false); } } } foreach (array('all', 'clan', 'company', 'historical') as $statName) { $stat = $player->getStatistic($statName); $stat->attributes = $data['statistics'][$statName]; $stat->updated_at = $player->updated_at; $stat->save(false); } $player->max_xp = $data['statistics']['max_xp']; $player->created_at = date('Y-m-d H:i', $data['created_at']); $player->player_name = $data['nickname']; $player->last_battle_time = date('Y-m-d H:i', $data['last_battle_time']); $player->logout_at = date('Y-m-d H:i', $data['logout_at']); $player->global_rating = $data['global_rating']; $player->save(false); } $tran->commit(); } else { Yii::log($jsonString, 'error'); } // var_dump($jsonData); } }