*/ class Settings { /** * Protocol the chat will use. * @var string */ public $protocol = 'TestRepeater'; /** * Server address the chat will connect to. * @var string */ public $server = null; /** * Title to display on the window/tab. * @var string */ public $title = 'Sakurako'; /** * Location to redirect to when the authentication failed. * @var string */ public $authRedir = null; /** * Cookies to send to the server for authentication (in proper order). * @var array */ public $authCookies = []; /** * URL format for avatars, {0} gets replaced with the user's id and set to null to disable. * @var string */ public $avatarUrl = null; /** * URL format for profile links, works the same as avatars. * @var string */ public $profileUrl = null; /** * Enabling compact (classic) by default. * @var bool */ public $compactView = false; /** * Strobe the tab title on new message. * @var bool */ public $flashTitle = true; /** * Enabling browser notifications. * @var bool */ public $enableNotifications = true; /** * Words that trigger a notification separated with spaces. * @var string */ public $notificationTriggers = ''; /** * Show the contents of the message in the notification. * @var bool */ public $notificationShowMessage = false; /** * Enabling development mode (e.g. loading eruda). * @var bool */ public $development = false; /** * Default style. * @var string */ public $style = 'dark'; /** * Path to language files relative to the chat client's index. * @var string */ public $languagePath = './languages/'; /** * Default language file to use. * @var string */ public $language = 'en-gb'; /** * Available languages. * @var array */ public $languages = [ 'en-gb' => 'English', ]; /** * Formatting string to the timestamp, uses the PHP syntax. * @var string */ public $dateTimeFormat = 'H:i:s'; /** * Markup parser to use. * @var string */ public $parser = 'WaterDown'; /** * Enabling the markup parser. * @var bool */ public $enableParser = true; /** * Enabling emoticon parsing. * @var bool */ public $enableEmoticons = true; /** * Whether urls should be automatically detected in message. * @var bool */ public $autoParseUrls = true; /** * Whether the chat should embed url macros like image embedding. * @var bool */ public $autoEmbed = true; /** * Enabling automatically scrolling down when a new message is received. * @var bool */ public $autoScroll = true; /** * Enabling notification sounds. * @var bool */ public $soundEnable = true; /** * The volume percentage for sounds. * @var int */ public $soundVolume = 80; /** * The default sound pack. * @var string */ public $soundPack = 'default'; /** * Available sound packs. * @var array */ public $soundPacks = [ 'default' => 'Default', ]; /** * Enabling the user join sound. * @var bool */ public $soundEnableJoin = true; /** * Enabling the user leave sound. * @var bool */ public $soundEnableLeave = true; /** * Enabling the error sound. * @var bool */ public $soundEnableError = true; /** * Enabling the server broadcast sound. * @var bool */ public $soundEnableServer = true; /** * Enabling the incoming message sound. * @var bool */ public $soundEnableIncoming = true; /** * Enabling the outgoing message sound. * @var bool */ public $soundEnableOutgoing = true; /** * Enabling the private message sound. * @var bool */ public $soundEnablePrivate = true; /** * Enabling the forceful leave (kick/ban/etc) sound. * @var bool */ public $soundEnableForceLeave = true; /** * Whether to let the user confirm before closing the tab. * @var bool */ public $closeTabConfirm = false; /** * Emoticons to be loaded. * @var array */ public $emoticons = []; /** * Applies settings based on Sakura's configuration. */ public function loadStandard() { $this->protocol = config('chat.protocol'); $this->server = config('chat.server'); $this->title = config('chat.title'); $this->authRedir = route('auth.login', null, true); $cpfx = config('cookie.prefix'); $this->authCookies = [ "{$cpfx}id", "{$cpfx}session", ]; $this->avatarUrl = route('file.avatar', '{0}', true); $this->profileUrl = route('user.profile', '{0}', true); $this->development = config('dev.show_errors'); $this->languagePath = config('chat.language_path'); $this->language = config('chat.language'); $this->languages = config('chat.languages'); $this->dateTimeFormat = config('chat.date_format'); $this->parser = config('chat.parser'); $this->soundPack = config('chat.sound_pack'); $this->soundPacks = config('chat.sound_packs'); } /** * Adding an emoticon to the list. * @param array $triggers * @param string $image * @param int $hierarchy * @param bool $relativePath */ public function addEmoticon($triggers, $image, $hierarchy = 0, $relativePath = false) { $this->emoticons[] = [ 'Text' => $triggers, 'Image' => ($relativePath ? full_domain() : '') . $image, 'Hierarchy' => $hierarchy, ]; } }