From e95b14b8c0a240d214d785f3df675720d5c8e2f0 Mon Sep 17 00:00:00 2001 From: Roman Kelesidis Date: Wed, 3 Apr 2024 12:59:12 +0700 Subject: [PATCH] Updated --- library/config.php | 19 ++++++----- src/Dev.php | 84 +++++++++++++++++++++++++--------------------- 2 files changed, 55 insertions(+), 48 deletions(-) diff --git a/library/config.php b/library/config.php index befa07acc..2df9bb0d1 100644 --- a/library/config.php +++ b/library/config.php @@ -445,16 +445,17 @@ $bb_cfg['abuse_email'] = "abuse@$domain_name"; // abuse email (e.g. DMCA) $bb_cfg['adv_email'] = "adv@$domain_name"; // advertisement email // Error reporting -$bb_cfg['bugsnag'] = [ +$bb_cfg['error_reporting'] = [ 'enabled' => true, - 'api_key' => '33b3ed0102946bab71341f9edc125e21', -]; - -$bb_cfg['telegram_sender'] = [ - 'enabled' => false, - 'token' => '', - 'chat_id' => '', - 'timeout' => 10 + 'method' => 'telegram', // Available: bugsnag, telegram, both + 'bugsnag' => [ + 'api_key' => '33b3ed0102946bab71341f9edc125e21', + ], + 'telegram' => [ + 'token' => '', + 'chat_id' => '', + 'timeout' => 10 + ] ]; // Special users diff --git a/src/Dev.php b/src/Dev.php index bd357cab0..55570084c 100644 --- a/src/Dev.php +++ b/src/Dev.php @@ -35,9 +35,11 @@ class Dev /** * Environment type * - * @var string|null + * @var string */ - public static ?string $envType = null; + public static string $envType; + + public static $whoops; /** * Base debug functionality init @@ -46,30 +48,56 @@ class Dev */ public static function initDebug(): void { - self::$envType = env('APP_ENV', 'local'); + global $bb_cfg; + + self::$envType = (string)env('APP_ENV', 'local'); + self::$whoops = new Run; if (self::$envType === 'production') { - self::getBugsnag(); + if ($bb_cfg['error_reporting']['enabled']) { + if ($bb_cfg['error_reporting']['method'] == 'both' || $bb_cfg['error_reporting']['method'] == 'bugsnag') { + self::getBugsnag($bb_cfg['error_reporting']['bugsnag']['api_key']); + } + if ($bb_cfg['error_reporting']['method'] == 'both' || $bb_cfg['error_reporting']['method'] == 'telegram') { + self::getTelegramSender($bb_cfg['error_reporting']['telegram']); + } + } } else { - self::getWhoops(); + if (APP_DEBUG) { + self::getWhoops(); + } } + + self::$whoops->register(); } /** * Bugsnag debug driver * + * @param string $apiKey * @return void */ - private static function getBugsnag(): void + private static function getBugsnag(string $apiKey): void { - global $bb_cfg; + Handler::register(Client::make($apiKey)); + } - if (!$bb_cfg['bugsnag']['enabled']) { - return; - } - - $bugsnag = Client::make($bb_cfg['bugsnag']['api_key']); - Handler::register($bugsnag); + /** + * Send debug via Telegram + * + * @param array $configTelegram + * @return void + */ + private static function getTelegramSender(array $configTelegram): void + { + $telegramSender = new PlainTextHandler(); + $telegramSender->loggerOnly(true); + $telegramSender->setLogger((new Logger( + APP_NAME, + [(new TelegramHandler($configTelegram['token'], (int)$configTelegram['chat_id'], timeout: $configTelegram['timeout'])) + ->setFormatter(new TelegramFormatter())] + ))); + self::$whoops->pushHandler($telegramSender); } /** @@ -79,18 +107,10 @@ class Dev */ private static function getWhoops(): void { - global $bb_cfg; - - if (!APP_DEBUG) { - return; - } - - $whoops = new Run; - /** * Show errors on page */ - $whoops->pushHandler(new PrettyPageHandler); + self::$whoops->pushHandler(new PrettyPageHandler); /** * Show log in browser console @@ -102,7 +122,7 @@ class Dev [(new BrowserConsoleHandler()) ->setFormatter((new LineFormatter(null, null, true)))] ))); - $whoops->pushHandler($loggingInConsole); + self::$whoops->pushHandler($loggingInConsole); /** * Log errors in file @@ -115,24 +135,10 @@ class Dev [(new StreamHandler(WHOOPS_LOG_FILE)) ->setFormatter((new LineFormatter(null, null, true)))] ))); - $whoops->pushHandler($loggingInFile); + self::$whoops->pushHandler($loggingInFile); } - /** - * Send debug via Telegram - */ - if ($bb_cfg['telegram_sender']['enabled']) { - $telegramSender = new PlainTextHandler(); - $telegramSender->loggerOnly(true); - $telegramSender->setLogger((new Logger( - APP_NAME, - [(new TelegramHandler($bb_cfg['telegram_sender']['token'], (int)$bb_cfg['telegram_sender']['chat_id'], timeout: $bb_cfg['telegram_sender']['timeout'])) - ->setFormatter(new TelegramFormatter())] - ))); - $whoops->pushHandler($telegramSender); - } - - $whoops->register(); + self::$whoops->register(); } /**