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;
 }
Beispiel #2
0
 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;
 }