public function execute(CommandSender $sender, $commandLabel, array $args)
 {
     if (!$this->testPermission($sender)) {
         return true;
     }
     $msg = implode(" ", $args);
     $local = true;
     if (substr($msg, 0, 1) === ".") {
         $msg = substr($msg, 1);
         $local = false;
     }
     $type = ChatType::get($this->getMain(), ChatType::SERVER_BROADCAST, $sender->getName(), $msg, $local ? Settings::$LOCALIZE_CLASS : Settings::CLASS_ALL, []);
     $type->push();
     return true;
 }
 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;
 }
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     $result = $this->getResult();
     if ($this->lastId === null) {
         $main->setInternalLastChatId($this->fetchedMaxId);
         $result = $this->getResult()["result"];
         foreach ($result as $row) {
             $type = ChatType::get($main, ChatType::MUTE_CHAT, $result["src"], $result["msg"], Settings::$LOCALIZE_CLASS, json_decode($row["json"]));
             $type->execute();
         }
     } elseif ($result["resulttype"] === self::TYPE_ALL) {
         $result = $this->getResult()["result"];
         foreach ($result as $row) {
             $row["json"] = json_decode($row["json"], true);
             $main->handleChat($row);
         }
     }
     $task = $main->getFireSyncChatQueryTask();
     $task->canFireNext = true;
 }
 public function handleChat(array $row)
 {
     $this->setInternalLastChatId($row["id"]);
     $source = $row["src"];
     $message = $row["msg"];
     $type = $row["type"];
     $class = $row["class"];
     $data = $row["json"];
     $exe = ChatType::get($this, $type, $source, $message, $class, $data);
     $exe->execute();
 }