/** * * @param WotClan $clan */ public static function updateClanInfo($clan) { $url = strtr(self::$wotApiClanUrl, array('{applicationId}' => self::getApplicationId(), '{clanId}' => $clan->clan_id)); $jsonString = self::getContent($url); if ($jsonString != false) { $jsonData = json_decode($jsonString, true); if ($jsonData['status'] == 'ok') { if (isset($jsonData['data'][$clan->clan_id])) { $data = $jsonData['data'][$clan->clan_id]; $clan->clan_descr = $data['description']; $clan->updated_at = date('Y-m-d H:i', $data['updated_at']); $clan->clan_name = $data['abbreviation']; $clan->clan_fullname = $data['name']; $clan->clan_descr_html = $data['description_html']; $clan->clan_created = date('Y-m-d', $data['created_at']); $clan->clan_ico = $data['emblems']['large']; $clan->clan_motto = $data['motto']; $clan->clan_owner_id = $data['owner_id']; $clan->save(false); $members = $data['members']; // foreach ($data['members'] as $member) { // $members[$member['account_id']]=$member; // } } $tran = Yii::app()->db->beginTransaction(); $clanPlayers = $clan->playersRec; foreach ($clanPlayers as $playerId => $clanPlayerRec) { if (!isset($members[$playerId])) { $clanPlayerRec->escape_date = new CDbExpression('now()'); $clanPlayerRec->save(false); continue; } if ($clanPlayerRec->clan_role_id != $members[$playerId]['role']) { $clanPlayerRec->clan_role_id = WotClanRole::getRoleId($members[$playerId]['role'], $members[$playerId]['role_i18n']); $clanPlayerRec->save(false); } } foreach ($members as $playerId => $playerData) { if (!isset($clanPlayers[$playerId])) { $player = WotPlayer::model()->findByPk($playerId); if (empty($player)) { $player = new WotPlayer(); $player->player_id = $playerId; $player->player_name = $playerData['account_name']; $player->save(false); } $playerClan = WotPlayerClan::model()->findByPk(array('player_id' => $playerId, 'clan_id' => $clan->clan_id, 'entry_date' => date('Y-m-d', $playerData['created_at']))); if (empty($playerClan)) { $playerClan = new WotPlayerClan(); $playerClan->clan_id = $clan->clan_id; $playerClan->player_id = $playerId; $playerClan->entry_date = date('Y-m-d', $playerData['created_at']); $playerClan->clan_role_id = WotClanRole::getRoleId($playerData['role'], $playerData['role_i18n']); } else { if (!empty($playerClan->escape_date)) { $playerClan->escape_date = null; } } $playerClan->save(false); } } $tran->commit(); } else { Yii::log($jsonString, 'error'); } //var_dump($jsonData); } }
public function actionPresense() { Yii::import('ext.teamspeak.libraries.TeamSpeak3.*', true); //cFsOcmiR // connect to local server, authenticate and spawn an object for the virtual server on port 9987 $ts3 = TeamSpeak3::factory(Yii::app()->params['tsUri']); $clientList = $ts3->clientList(); $memberGroup = $ts3->serverGroupGetByName('MUMMI'); if (empty($memberGroup)) { throw new CException('member group is empty'); } $friendGroup = $ts3->serverGroupGetByName('Друг'); if (empty($friendGroup)) { throw new CException('friend group is empty'); } foreach ($clientList as $client) { if ((string) $client['client_platform'] != 'ServerQuery') { $info = $client->getInfo(); $clientGroups = array(); foreach ($client->memberOf() as $clientGroup) { $clientGroups[$clientGroup->getId()] = $clientGroup; } $teamspeak = WotTeamspeak::model()->with(array('player', 'player.playerClan'))->findByPk($info['client_database_id']); if (empty($teamspeak)) { if (preg_match('/^\\w+/', (string) $client, $matches)) { $playerName = $matches[0]; $player = WotPlayer::model()->with(array('playerClan'))->findByAttributes(array('player_name' => $playerName)); } } else { $player = $teamspeak->player; } if (!empty($player)) { if (empty($player->playerClan)) { if (isset($clientGroups[$memberGroup->getId()])) { } $client->addServerGroup($friendGroup->getId()); $client->remServerGroup($memberGroup->getId()); } else { if (empty($teamspeak)) { $teamspeak = new WotTeamspeak(); $teamspeak->player_id = $player->player_id; $teamspeak->client_database_id = $info['client_database_id']; $teamspeak->save(false); } $sql = "INSERT IGNORE INTO wot_presense(updated_at, client_database_id)VALUES(now(),{$info['client_database_id']})"; Yii::app()->db->createCommand($sql)->execute(); } // $wins=number_format($stat->wins/$stat->battles*100,2); // $description="\nПроцент побед: {$wins} \nWN8: {$player->wn8}\nРЭ: {$player->effect}\n"; // $client->modifyDb(array('client_description'=>$description)); } else { if (isset($clientGroups[$memberGroup->getId()])) { } try { $client->remServerGroup($memberGroup->getId()); } catch (Exception $e) { } if (!isset($clientGroups[$friendGroup->getId()])) { } try { $client->addServerGroup($friendGroup->getId()); } catch (Exception $e) { } } } } }