public function action() { $team = new Team(); $team->initById($this->parameters->teamId); $teamInJSON = JSONPrepare::team($team); $teamInJSON["footballers"] = JSONPrepare::footballers(FootballerSatellite::initForTeam($team)); $teamInJSON["sponsors"] = JSONPrepare::sponsors(SponsorSatellite::initForTeam($team)); $this->result['team'] = $teamInJSON; }
public function initById($userId) { $this->socialUserId = intval($userId); if (!$this->socialUserId) { return new ErrorPoint(ErrorPoint::CODE_VK, "Не получен номер команды", ErrorPoint::TYPE_USER); } track_stats(); // Отслеживаем производительность $teamInstance = RAM::getInstance()->getTeamById($this->socialUserId); track_stats(); // Отслеживаем производительность if (empty($teamInstance)) { //} || GlobalParameters::$IS_FAKE_ENTER || GlobalParameters::MODER_ID == $userId){ $sql_template = "SELECT *, unix_timestamp(tour_bonus_time) as tour_bonus_time FROM teams WHERE vk_id = %s"; $sql = sprintf($sql_template, $this->socialUserId); $result = SQL::getInstance()->query($sql); if ($result instanceof ErrorPoint) { return $result; } track_stats(); // Отслеживаем производительность if ($result->num_rows) { $loadedTeam = $result->fetch_object(); $this->isInstalled = 1; $this->initFromDB($loadedTeam); track_stats(); // Отслеживаем производительность $this->footballers = FootballerSatellite::initForTeam($this); if ($this->footballers instanceof ErrorPoint) { return $this->footballers; } track_stats(); // Отслеживаем производительность $this->sponsors = SponsorSatellite::initForTeam($this); if ($this->sponsors instanceof ErrorPoint) { return $this->sponsors; } return true; } else { if (GlobalParameters::getCommand() != COMMAND_PING && GlobalParameters::getCommand() != COMMAND_FRIEND_INFO && GlobalParameters::getCommand() != COMMAND_SYSTEM && GlobalParameters::getCommand() != COMMAND_WELCOME) { // Utils::forDebug("Не найдена команда по ID#" . $this->socialUserId . " " . $sql); return false; return new ErrorPoint(ErrorPoint::CODE_LOGIC, "Не найдена команда по ID#" . $this->socialUserId, ErrorPoint::TYPE_SYSTEM); } else { $this->inTeam = 0; return false; } } } else { $this->initFromRAM($teamInstance); $this->isInstalled = 1; track_stats(); // Отслеживаем производительность $this->footballers = FootballerSatellite::initForTeam($this); if ($this->footballers instanceof ErrorPoint) { return $this->footballers; } track_stats(); // Отслеживаем производительность $this->sponsors = SponsorSatellite::initForTeam($this); if ($this->sponsors instanceof ErrorPoint) { return $this->sponsors; } track_stats(); // Отслеживаем производительность return true; } }
public static function initForTeam(Team &$team, $isGetOnlyActive = false) { $teamId = $team->getSocialUserId(); $store = array(); track_stats(); // Отслеживаем производительность $footballersStore = RAM::getInstance()->getObjectsForTeam($teamId, RAM::RAM_TYPE_FOOTBALLER); track_stats(); // Отслеживаем производительность $activeFootballer = 0; // Utils::forDebug(count($footballersStore) . " == " . $team->getAllFootballersCount()); if (count($footballersStore) != $team->getAllFootballersCount() || $team->getAllFootballersCount() == 0) { //} || GlobalParameters::$IS_FAKE_ENTER || GlobalParameters::MODER_ID == $teamId){ $sql_template = "SELECT\n footballers.level,\n footballers.footballer_id,\n footballers.is_active,\n footballers.super,\n footballers.health_down,\n item_footballers.line as type FROM footballers\nLEFT JOIN item_footballers ON item_footballers.id = footballers.footballer_id\nWHERE footballers.owner_vk_id = %d " . ($isGetOnlyActive ? " AND footballers.is_active = 1 " : "") . " ORDER BY item_footballers.line DESC "; $sql_template = "SELECT\n footballers.level,\n footballers.footballer_id,\n footballers.is_active,\n footballers.super,\n footballers.health_down,\n item_footballers.line AS typer FROM footballers, item_footballers\nWHERE footballers.owner_vk_id = %d " . ($isGetOnlyActive ? " AND footballers.is_active = 1 " : "") . " AND item_footballers.id = footballers.footballer_id ORDER BY item_footballers.line ASC"; $sql = sprintf($sql_template, intval($teamId)); $SQLresult = SQL::getInstance()->query($sql); track_stats(); // Отслеживаем производительность if ($SQLresult instanceof ErrorPoint) { return $SQLresult; } track_stats(); // Отслеживаем производительность $team->setAllFootballersCount($SQLresult->num_rows, true); $counter = 0; $footballersStore = array(); while ($footballer = $SQLresult->fetch_object()) { $footballerInstance = new Footballer(); $footballerInstance->initFromParameters($footballer, false, $teamId, $sql); $footballersStore[$footballerInstance->getId()] = $footballerInstance; if ($footballerInstance->getIsActive() == 1) { $activeFootballer++; } //RAM::getInstance()->setFootballer($footballerInstance, $teamId, $counter); $counter++; } track_stats(); // Отслеживаем производительность } else { track_stats(); // Отслеживаем производительность $footballersStore = array(); if ($isGetOnlyActive) { $footballersStoreTeam = $footballersStore; foreach ($footballersStoreTeam as $footballerInstance) { if ($footballerInstance->getIsActive() == 1) { $footballersStore[$footballerInstance->getId()] = $footballerInstance; } $footballerInstance->checkHealth(); } } else { $footballersStoreTeam = $footballersStore; foreach ($footballersStoreTeam as $footballerInstance) { if ($footballerInstance instanceof Footballer) { if ($footballerInstance instanceof Footballer && $footballerInstance->getIsActive() == 1) { $activeFootballer++; } $footballersStore[$footballerInstance->getId()] = $footballerInstance; $footballerInstance->checkHealth(); } } } track_stats(); // Отслеживаем производительность } track_stats(); // Отслеживаем производительность $footballersFriendStore = RAM::getInstance()->getObjectsForTeam($teamId, RAM::RAM_TYPE_FOOTBALLER_FRIEND); track_stats(); // Отслеживаем производительность if (count($footballersFriendStore) != $team->getAllFootballersFriendsCount() || $team->getAllFootballersFriendsCount() == 0) { $sql_template = "SELECT footballers_friends.*,\n teams.user_year,\n teams.user_country,\n teams.user_name,\n teams.user_photo,\n teams.in_team,\n owner_team.team_name\nFROM footballers_friends\nJOIN teams ON footballers_friends.vk_id = teams.vk_id\nLEFT JOIN teams AS owner_team ON owner_team.vk_id = footballers_friends.owner_vk_id\nWHERE owner_vk_id = '%s' " . ($isGetOnlyActive ? " AND is_active = 1 " : "") . " ORDER BY footballers_friends.type DESC"; $sql_template = "SELECT\n footballers_friends.vk_id,\n footballers_friends.level,\n footballers_friends.type as typer,\n footballers_friends.is_active,\n footballers_friends.super,\n footballers_friends.owner_vk_id,\n footballers_friends.health_down,\n teams.user_year,\n teams.user_country,\n teams.user_name,\n teams.user_photo,\n teams.in_team\nFROM footballers_friends\nJOIN teams ON footballers_friends.vk_id = teams.vk_id\nWHERE owner_vk_id = %d " . ($isGetOnlyActive ? " AND is_active = 1 " : "") . " ORDER BY footballers_friends.type DESC"; // ORDER BY footballers_friends.type DESC"; $sql = sprintf($sql_template, intval($teamId)); $SQLresult = SQL::getInstance()->query($sql); if ($SQLresult instanceof ErrorPoint) { return $SQLresult; } $team->setAllFootballersFriendsCount($SQLresult->num_rows, true); track_stats(); // Отслеживаем производительность $footballersFriendStore = array(); $counter = 0; while ($footballer = $SQLresult->fetch_object()) { $footballerInstance = new Footballer(); $footballerInstance->initFromParameters($footballer, true, $teamId, $sql); $footballersFriendStore[$footballerInstance->getId()] = $footballerInstance; if ($footballerInstance->getIsActive() == 1) { $activeFootballer++; } //RAM::getInstance()->setFootballerFriend($footballerInstance, $teamId, $counter); $counter++; } track_stats(); // Отслеживаем производительность } else { track_stats(); // Отслеживаем производительность if ($isGetOnlyActive) { $footballersStoreTeam = $footballersFriendStore; $footballersFriendStore = array(); foreach ($footballersStoreTeam as $footballerInstance) { if ($footballerInstance->getIsActive() == 1) { $footballersFriendStore[] = $footballerInstance; } $footballerInstance->checkHealth(); } } else { foreach ($footballersFriendStore as $footballerInstance) { if ($footballerInstance->getIsActive() == 1) { $activeFootballer++; } $footballerInstance->checkHealth(); } } track_stats(); // Отслеживаем производительность } $store = array_merge($footballersStore, $footballersFriendStore); $returnStore = array(); foreach ($store as $footballerInstance) { if ($footballerInstance instanceof Footballer) { $returnStore[$footballerInstance->getId()] = $footballerInstance; } } track_stats(); // Отслеживаем производительность if ($activeFootballer > GlobalParameters::MAX_TEAM) { $actionResult = FootballerSatellite::bagoFixActiveFootballers($team, $returnStore); if ($actionResult instanceof ErrorPoint) { return $actionResult; } $returnStore = FootballerSatellite::initForTeam($team); // return new ErrorPoint(ErrorPoint::CODE_LOGIC, "Количество активных игроков превышет допустимого значения. Разрешено ". // GlobalParameters::MAX_TEAM . " а у игрока " . $activeFootballer, ErrorPoint::TYPE_SYSTEM); } track_stats(); // Отслеживаем производительность return $returnStore; }