protected function run(array $args, Session $sender)
 {
     if ($sender->getTeamId() === -1) {
         return $sender->translate(Phrases::CMD_TEAM_ERR_NOT_IN_TEAM);
     }
     if (!$sender->confirmQuitTeam) {
         $sender->confirmQuitTeam = true;
         return $sender->getTeamRank() === Settings::TEAM_RANK_LEADER ? $sender->translate(Phrases::CMD_TEAM_QUIT_WARNING_LEADER) : ($sender->getTeamRank() === Settings::TEAM_RANK_JUNIOR ? $sender->translate(Phrases::CMD_TEAM_QUIT_WARNING_JUNIOR) : $sender->translate(Phrases::CMD_TEAM_QUIT_WARNING_NORMAL));
     }
     if ($sender->getTeamRank() === 4) {
         $prop = Hormone::get($this->getMain(), Hormone::TEAM_DISBAND_PROPAGANDA, $sender->getInGameName(), "Team disbanded by owner /tq", Settings::CLASS_ALL, ["tid" => $sender->getTeamId()]);
         $prop->release();
         new RawAsyncQuery($this->getMain(), "UPDATE users SET tid=-1,teamrank=0,teamjoin=0,teampts=0 WHERE tid={$sender->getTeamId()}");
         new RawAsyncQuery($this->getMain(), "DELETE FROM teams WHERE tid=" . $sender->getTeamId());
         return true;
     }
     $type = Hormone::get($this->getMain(), Hormone::TEAM_CHAT, "Network", "%tr%" . Phrases::CMD_TEAM_QUITTED, Settings::CLASS_ALL, ["tid" => $sender->getTeamId(), "teamName" => $sender->getTeamName(), "ign" => "Network", "data" => ["name" => $sender->getPlayer()->getName(), "teamname" => $sender->getTeamName()]]);
     $type->release();
     $sender->setLoginDatum("tid", -1);
     $sender->setLoginDatum("teamname", null);
     $sender->setLoginDatum("teamrank", 0);
     $sender->setLoginDatum("teamjoin", 0);
     $sender->setLoginDatum("teampts", 0);
     return $sender->translate(Phrases::CMD_TEAM_QUITTED);
 }
 protected function run(array $args, Session $sender)
 {
     if ($sender->getTeamId() === -1) {
         return $sender->translate(Phrases::CMD_TEAM_ERR_NOT_IN_TEAM);
     }
     if ($sender->getTeamId() < Settings::TEAM_RANK_COLEAD) {
         return $sender->translate(Phrases::CMD_TEAM_CONFIG_NEED_CO_LEADER, ["type" => $sender->translate($this->humanPhrase)]);
     }
     new TeamConfigChangeQuery($this->getPlugin(), $sender, $sender->getTeamId(), $this->bit, $this->boolean, $this->humanPhrase);
     return true;
 }
 /**
  * @param Session $session
  * @param int $status
  * @return mixed[][]|mixed[]
  */
 protected function getColumns(Session $session, $status)
 {
     $coins = $session->getCoins();
     $this->coinsDelta = $session->getAndUpdateCoinsDelta();
     $skin = $session->getCurrentFaceSkin();
     return ["uid" => ["v" => $session->getUid(), "noupdate" => true], "name" => ["v" => strtolower($session->getPlayer()->getName())], "nicks" => "|" . implode("|", $session->getNicks()) . "|", "lastip" => $session->getPlayer()->getAddress(), "status" => $status, "lastses" => Settings::$LOCALIZE_CLASS, "authuuid" => $session->getPlayer()->getUniqueId(), "coins" => ["v" => $coins, "noupdate" => true], "hash" => ["v" => $session->getPasswordHash(), "noupdate" => true], "pwprefix" => ["v" => $session->getPasswordPrefix(), "noupdate" => true], "pwlen" => ["v" => $session->getPasswordLength(), "noupdate" => true], "registration" => ["v" => $session->getRegisterTime(), "noupdate" => true], "laston" => time(), "ontime" => (int) $session->getAndUpdateOntime(), "config" => $session->getAllSettings(), "skin1" => ["v" => substr($skin, 0, 128), "bin" => true], "skin2" => ["v" => substr($skin, 128, 128), "bin" => true], "lastgrind" => $session->getLastGrind(), "rank" => ["v" => $session->getRank(), "noupdate" => true], "warnpts" => $session->getWarningPoints(), "lastwarn" => $session->getLastWarnTime(), "tid" => $session->getTeamId(), "teamrank" => $session->getTeamRank(), "teamjoin" => $session->getTeamJoinTime(), "ignorelist" => "," . implode(",", $session->getIgnoreList()) . ","];
 }
 protected function run(array $args, Session $sender)
 {
     if ($sender->getTeamId() === -1) {
         return $sender->translate(Phrases::CMD_TEAM_ERR_ALREADY_IN_TEAM);
     }
     if (!$sender->confirmQuitTeam) {
         $sender->confirmQuitTeam = true;
         return $sender->getTeamRank() === Settings::TEAM_RANK_LEADER ? $sender->translate(Phrases::CMD_TEAM_QUIT_WARNING_LEADER) : ($sender->getTeamRank() === Settings::TEAM_RANK_JUNIOR ? $sender->translate(Phrases::CMD_TEAM_QUIT_WARNING_JUNIOR) : $sender->translate(Phrases::CMD_TEAM_QUIT_WARNING_NORMAL));
     }
     $type = ChatType::get($this->getMain(), ChatType::TEAM_CHAT, "Network", "%tr%" . Phrases::CMD_TEAM_QUITTED, Settings::CLASS_ALL, ["tid" => $sender->getTeamId(), "teamName" => $sender->getTeamName(), "ign" => "Network", "data" => ["name" => $sender->getPlayer()->getName(), "teamname" => $sender->getTeamName()]]);
     $type->push();
     $sender->setLoginDatum("tid", -1);
     $sender->setLoginDatum("teamrank", 0);
     $sender->setLoginDatum("teamjoin", 0);
     $sender->setLoginDatum("teampts", 0);
     return true;
 }
 protected function run(array $args, Session $sender)
 {
     if ($sender->getTeamId() === -1) {
         return $sender->translate(Phrases::CMD_TEAM_ERR_NOT_IN_TEAM);
     }
     if (!isset($args[0])) {
         new TeamPropertyResponseQuery($this->getPlugin(), $sender, $sender->getTeamId(), $this->column, $this->humanPhrase);
         return true;
     }
     if ($sender->getTeamRank() < Settings::TEAM_RANK_COLEAD) {
         return $sender->translate(Phrases::CMD_TEAM_PROPERTY_NEED_CO_LEADER, ["type" => $sender->translate($this->humanPhrase)]);
     }
     $text = preg_replace('/[ \\t]+\\|[ \\t]+/', "\n", implode(" ", $args));
     $text = trim($text);
     new TeamPropertyChangeQuery($this->getPlugin(), $sender, $sender->getTeamId(), $this->column, $text, $this->humanPhrase);
     return true;
 }
 public function __construct(BasePlugin $main, Session $issuer, $name)
 {
     $this->issuerName = $issuer->getPlayer()->getName();
     $this->issuerUid = $issuer->getUid();
     $this->tid = $issuer->getTeamId();
     $this->teamName = $issuer->getTeamName();
     $this->queriedTargetName = $name;
     parent::__construct($main);
 }
 protected function run(array $args, Session $sender)
 {
     if ($sender->getTeamId() === -1) {
         return $sender->translate(Phrases::CMD_TEAM_ERR_ALREADY_IN_TEAM);
     }
     if (!isset($args[0])) {
         return false;
     }
     $team = array_shift($args);
     new JoinTeamQuery($this->getMain(), $sender->getUid(), $team);
     return $sender->translate(Phrases::CMD_TEAM_LOADING);
 }
 protected function run(array $args, Session $sender)
 {
     if ($sender->getTeamId() === -1 or $sender->getTeamRank() < Settings::TEAM_RANK_SENIOR) {
         return $sender->translate(Phrases::CMD_TEAM_INVITE_NOT_SENIOR);
     }
     $name = array_shift($args);
     if ($name === null) {
         return false;
     }
     new InviteTeamQuery($this->getMain(), $sender, $name);
     return true;
 }
 protected function run(array $args, Session $sender)
 {
     if ($sender->getTeamId() !== -1) {
         return $sender->translate(Phrases::CMD_TEAM_ERR_ALREADY_IN_TEAM);
     }
     $name = array_shift($args);
     if ($name === null) {
         return false;
     }
     if (!preg_match('/^[A-Za-z0-9_]{5,}$/', $name)) {
         $sender->send(Phrases::CMD_TEAM_CREATE_INVALID_NAME);
         return true;
     }
     new CreateTeamQuery($this->getMain(), $sender->getUid(), $name);
     return $sender->translate(Phrases::CMD_TEAM_LOADING);
 }
 protected function run(array $args, Session $sender)
 {
     if (!isset($args[0])) {
         return false;
     }
     if ($sender->getTeamId() === -1) {
         return $sender->translate(Phrases::CMD_TEAM_ERR_NOT_IN_TEAM);
     }
     if ($sender->getTeamRank() < Settings::TEAM_RANK_SENIOR) {
         return $sender->translate(Phrases::CMD_TEAM_RANK_CHANGE_NEED_SENIOR);
     }
     $name = array_shift($args);
     if (strtolower($sender->getPlayer()->getName()) === strtolower($name)) {
         return false;
     }
     new TeamRankChangeQuery($this->getMain(), $this->promote, $name, $sender);
     return true;
 }
 protected function run(array $args, Session $sender)
 {
     if (!isset($args[0])) {
         switch ($sender->getCurrentChatState()) {
             case Session::CHANNEL_LOCAL:
                 $sender->send(Phrases::CMD_CHANNEL_VIEW_LOCAL);
                 break;
             case Session::CHANNEL_TEAM:
                 $sender->send(Phrases::CMD_CHANNEL_VIEW_TEAM);
                 break;
             default:
                 $sender->send(Phrases::CMD_CHANNEL_VIEW_OTHER, ["chan" => $sender->getCurrentChatState()]);
         }
         return $sender->translate(Phrases::CMD_CHANNEL_VIEW_SUBSCRIBING_TO_CHANNELS, ["channels" => implode(", ", $sender->getChannelSubscriptions())]);
     }
     $name = array_shift($args);
     if (strtolower($name) === "local" or strtolower($name) === "g" or strtolower($name) === "l") {
         $sender->setCurrentChatState(Session::CHANNEL_LOCAL);
         return $sender->translate(Phrases::CMD_CHANNEL_SET_LOCAL);
     } elseif (strtolower($name) === "team" or strtolower($name) === "t") {
         if ($sender->getTeamId() === -1) {
             return $sender->translate(Phrases::CMD_TEAM_ERR_NOT_IN_TEAM);
         }
         $sender->setCurrentChatState(Session::CHANNEL_TEAM);
         return $sender->translate(Phrases::CMD_CHANNEL_SET_TEAM);
     } elseif (strtolower($name) === "quit") {
         if (!isset($args[0])) {
             return false;
         }
         $ch = array_shift($args);
         if (!$sender->isOnChannel($ch)) {
             return $sender->translate(Phrases::CMD_CHANNEL_QUIT_NOT_ON_CHANNEL);
         }
         $sender->partChannel($ch);
         return $sender->translate(Phrases::CMD_CHANNEL_QUIT_SUCCESS);
     } else {
         if (!$sender->isOnChannel($name)) {
             $sender->joinChannel($name);
             $sender->send(Phrases::CMD_CHANNEL_JOINED_SELF, ["channel" => $name]);
         }
         $sender->setCurrentChatState($name);
         return $sender->translate(Phrases::CMD_CHANNEL_SET_OTHER, ["chan" => $name]);
     }
 }