public function init() { if (($data = cache()->get(CacheNames::SERVER_STATUS)) === FALSE) { if (config('server_status.allow') == 1) { $data['content'] = array(); $data['totalOnline'] = 0; $criteria = new CDbCriteria(array('select' => 't.name, t.id, t.fake_online, t.ip, t.port', 'scopes' => array('opened'), 'with' => array('ls' => array('select' => 'ls.ip, ls.port, ls.name', 'scopes' => array('opened'))))); $gsList = Gs::model()->findAll($criteria); if ($gsList) { foreach ($gsList as $gs) { try { $l2 = l2('gs', $gs->id)->connect(); // Кол-во игроков $online = $l2->getDb()->createCommand("SELECT COUNT(0) FROM `characters` WHERE `online` = 1")->queryScalar(); // Fake online if (is_numeric($gs->fake_online) && $gs->fake_online > 0) { $online += Lineage::fakeOnline($online, $gs->fake_online); } $data['content'][$gs->id] = array('gs_status' => Lineage::getServerStatus($gs->ip, $gs->port), 'ls_status' => isset($gs->ls) ? Lineage::getServerStatus($gs->ls->ip, $gs->ls->port) : 'offline', 'online' => $online, 'gs' => $gs); $data['totalOnline'] += $online; } catch (Exception $e) { $data[$gs->id]['error'] = $e->getMessage(); } } } if (config('server_status.cache') > 0) { cache()->set(CacheNames::SERVER_STATUS, $data, config('server_status.cache') * 60); } } } app()->controller->renderPartial('//server-status', $data); }
private function total() { $ls = l2('ls', $this->_gs->login_id)->connect(); // Кол-во аккаунтов $data['countAccounts'] = (int) $ls->getCountAccounts(); $gs = l2('gs', $this->_gs_id)->connect(); // Кол-во персонажей $data['countCharacters'] = (int) $gs->getCountCharacters(); // В игре $data['countOnline'] = (int) $gs->getCountOnlineCharacters(); // Fake online if ($this->_gs->fake_online > 0) { $data['countOnline'] += Lineage::fakeOnline($data['countOnline'], $this->_gs->fake_online); } // Кол-во кланов $data['countClans'] = (int) $gs->getCountClans(); // Men $data['countMen'] = $gs->getCountMen(); // Female $data['countFemale'] = $gs->getCountWomen(); // Races $data['races'] = array('human' => $gs->getCountRaceHuman(), 'elf' => $gs->getCountRaceElf(), 'dark_elf' => $gs->getCountRaceDarkElf(), 'ork' => $gs->getCountRaceOrk(), 'dwarf' => $gs->getCountRaceDwarf()); $data['races_percentage'] = array('human' => $data['races']['human'] > 0 ? round($data['races']['human'] / $data['countCharacters'] * 100) : 0, 'elf' => $data['races']['elf'] > 0 ? round($data['races']['elf'] / $data['countCharacters'] * 100) : 0, 'dark_elf' => $data['races']['dark_elf'] > 0 ? round($data['races']['dark_elf'] / $data['countCharacters'] * 100) : 0, 'ork' => $data['races']['ork'] > 0 ? round($data['races']['ork'] / $data['countCharacters'] * 100) : 0, 'dwarf' => $data['races']['dwarf'] > 0 ? round($data['races']['dwarf'] / $data['countCharacters'] * 100) : 0); if ($gs->getChronicle() != 'interlude') { $data['races']['kamael'] = $gs->getCountRaceKamael(); $data['races_percentage']['kamael'] = $data['races']['kamael'] > 0 ? round($data['races']['kamael'] / $data['countCharacters'] * 100) : 0; } return $this->renderPartial('//stats/' . __FUNCTION__, $data, TRUE); }