Beispiel #1
0
 /**
  * 
  * @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);
     }
 }
Beispiel #2
0
 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) {
                 }
             }
         }
     }
 }