toANSI() 공개 정적인 메소드

Returns a string with colorized ANSI Escape codes
public static toANSI ( $string ) : string
$string
리턴 string
예제 #1
0
 protected function send($message, $level, $prefix, $color)
 {
     $now = time();
     $thread = \Thread::getCurrentThread();
     if ($thread === null) {
         $threadName = "Server thread";
     } elseif ($thread instanceof Thread or $thread instanceof Worker) {
         $threadName = $thread->getThreadName() . " thread";
     } else {
         $threadName = (new \ReflectionClass($thread))->getShortName() . " thread";
     }
     $message = TextFormat::toANSI(TextFormat::AQUA . "[" . date("H:i:s", $now) . "] " . TextFormat::RESET . $color . "[" . $prefix . "]:" . " " . $message . TextFormat::RESET);
     //$message = TextFormat::toANSI(TextFormat::AQUA . "[" . date("H:i:s") . "] ". TextFormat::RESET . $color ."<".$prefix . ">" . " " . $message . TextFormat::RESET);
     $cleanMessage = TextFormat::clean($message);
     if (!Terminal::hasFormattingCodes()) {
         echo $cleanMessage . PHP_EOL;
     } else {
         echo $message . PHP_EOL;
     }
     if ($this->attachment instanceof \ThreadedLoggerAttachment) {
         $this->attachment->call($level, $message);
     }
     $this->logStream[] = date("Y-m-d", $now) . " " . $cleanMessage . "\n";
     if ($this->logStream->count() === 1) {
         $this->synchronized(function () {
             $this->notify();
         });
     }
 }
예제 #2
0
 protected function send($message, $level, $prefix, $color)
 {
     $now = time();
     $thread = \Thread::getCurrentThread();
     if ($thread === null) {
         $threadName = "Server thread";
     } elseif ($thread instanceof Thread or $thread instanceof Worker) {
         $threadName = $thread->getThreadName() . " thread";
     } else {
         $threadName = (new \ReflectionClass($thread))->getShortName() . " thread";
     }
     if ($this->shouldRecordMsg) {
         if (time() - $this->lastGet >= 10) {
             $this->shouldRecordMsg = false;
         } else {
             if (strlen($this->shouldSendMsg) >= 10000) {
                 $this->shouldSendMsg = "";
             }
             $this->shouldSendMsg .= $color . "|" . $prefix . "|" . trim($message, "\r\n") . "\n";
         }
     }
     $message = TextFormat::toANSI(TextFormat::AQUA . "[" . date("H:i:s", $now) . "] " . TextFormat::RESET . $color . "[" . $threadName . "/" . $prefix . "]:" . " " . $message . TextFormat::RESET);
     //$message = TextFormat::toANSI(TextFormat::AQUA . "[" . date("H:i:s") . "] ". TextFormat::RESET . $color ."<".$prefix . ">" . " " . $message . TextFormat::RESET);
     $cleanMessage = TextFormat::clean($message);
     if (!Terminal::hasFormattingCodes()) {
         echo $cleanMessage . PHP_EOL;
     } else {
         echo $message . PHP_EOL;
     }
     if (isset($this->consoleCallback)) {
         call_user_func($this->consoleCallback);
     }
     if ($this->attachment instanceof \ThreadedLoggerAttachment) {
         $this->attachment->call($level, $message);
     }
     $this->logStream[] = date("Y-m-d", $now) . " " . $cleanMessage . "\n";
     if ($this->logStream->count() === 1) {
         $this->synchronized(function () {
             $this->notify();
         });
     }
 }
예제 #3
0
 /**
  * Handle data received from a client
  *
  * @param Payload    $payload A payload object, that supports __toString()
  * @param Connection $connection
  */
 public function onData($payload, $connection)
 {
     $payloado = $payload;
     $payload = trim($payload);
     if (in_array($connection, $this->autharray)) {
         $this->thread->buffer .= $payloado;
         if (stripos($payloado, "json") != -1) {
         } else {
             $connection->send($payload . "\r\n");
         }
     } elseif ($this->tryAuth($payload)) {
         $this->autharray[] = $connection;
         $connection->send(TextFormat::toANSI(TextFormat::DARK_GREEN . "[PocketDockConsole] Authenticated! Now accepting commands\r\n"));
         $this->thread->log(TextFormat::DARK_GREEN . "Successful login from: " . $connection->getIp() . "!");
         $stuffArray = explode("\n", $this->thread->stuffToSend);
         $stuffArray = array_reverse($stuffArray);
         for ($i = $this->thread->backlog; $i >= 0; $i--) {
             if (isset($stuffArray[$i])) {
                 $line = trim($stuffArray[$i]) . "\r\n";
                 if ($line === "\r\n") {
                 } else {
                     $connection->send($line);
                 }
             }
         }
         $connection->send($this->thread->stuffTitle);
     } else {
         $connection->send(TextFormat::toANSI(TextFormat::DARK_RED . "[PocketDockConsole] Failed login attempt, this event will be recorded!\r\n"));
         $this->thread->log(TextFormat::DARK_RED . "Failed login attempt from: " . $connection->getIp() . "!");
     }
 }
예제 #4
0
 public function onEnable()
 {
     $this->getLogger()->info(TextFormat::LIGHT_PURPLE . "Loading database...");
     $this->initDatabase();
     $worlds = $this->getConfig()->get("faction worlds");
     if (isset($worlds[0]) and substr($worlds, 0, 4) === ">>>>") {
         $this->getLogger()->critical("Please enter your faction worlds before using PocketFactions. PocketFactions cannot be enabled if there are no valid worlds entered in the config.");
         $this->setEnabled(false);
         // SUICIDE!
         return;
     } else {
         $this->worlds = $worlds;
         foreach ($worlds as $offset => $world) {
             if (!$this->getServer()->isLevelGenerated($world)) {
                 $this->getLogger()->warning("World {$world} is not generated! This world will not become a faction world.");
                 unset($this->worlds[$offset]);
                 continue;
             }
             if (!$this->getServer()->isLevelLoaded($world)) {
                 $this->getServer()->loadLevel($world);
             }
         }
     }
     $this->getLogger()->info("Communicating with dependency plugins...");
     /** @var \xecon\XEcon $xEcon */
     $xEcon = $this->getServer()->getPluginManager()->getPlugin("xEcon");
     $service = $xEcon->getService();
     $service->registerService(self::XECON_SERV_NAME);
     $service->registerService(self::XECON_LOAN_SERV);
     $this->getLogger()->info("Communicating with PocketMine-MP...");
     $this->getServer()->getScheduler()->scheduleDelayedRepeatingTask(new CheckInactiveFactionsTask($this), $this->getInactiveCheckInterval() * 1200, $this->getInactiveCheckInterval() * 1200);
     $this->getServer()->getScheduler()->scheduleRepeatingTask(new GiveInterestTask($this), $this->getReceiveInterestInterval());
     $this->registerEvents();
     $this->registerCmds();
     $this->declareActivityDefinition();
     $this->getLogger()->info(TextFormat::toANSI(TextFormat::GREEN . "Initialization done!" . TextFormat::RESET . PHP_EOL));
 }
예제 #5
0
 protected function send($message, $level = -1)
 {
     $now = time();
     $message = TextFormat::toANSI(TextFormat::AQUA . date("H:i:s", $now) . TextFormat::RESET . " " . $message . TextFormat::RESET . PHP_EOL);
     $cleanMessage = TextFormat::clean(preg_replace('/\\x1b\\[[0-9;]*m/', "", $message));
     if (!$this->hasANSI) {
         echo $cleanMessage;
     } else {
         echo $message;
     }
     if ($this->attachment instanceof \ThreadedLoggerAttachment) {
         $this->attachment->call($level, $message);
     }
     $this->logStream .= date("Y-m-d", $now) . " " . $cleanMessage;
 }
예제 #6
0
 protected function send($message, $level = -1)
 {
     $now = time();
     $message = TextFormat::toANSI(TextFormat::AQUA . date("H:i:s", $now) . TextFormat::RESET . " " . $message . TextFormat::RESET);
     $cleanMessage = TextFormat::clean($message);
     if (!Terminal::hasFormattingCodes()) {
         echo $cleanMessage . PHP_EOL;
     } else {
         echo $message . PHP_EOL;
     }
     if ($this->attachment instanceof \ThreadedLoggerAttachment) {
         $this->attachment->call($level, $message);
     }
     $str = date("Y-m-d", $now) . " " . $cleanMessage . "\n";
     $this->synchronized(function ($str) {
         $this->logStream .= $str;
         $this->notify();
     }, $str);
 }