isProduction()); // Register model observers. $this->registerObservers(); // Register custom macros. $this->registerNumberMacros(); $this->registerCarbonMacros(); // Register Livewire component overrides. $this->registerLivewireOverrides(); // This gate determines who can access the Pulse dashboard. Gate::define('viewPulse', function (User $user) { return $user->isAdmin(); }); // Register the Discord socialite provider. Event::listen(function (SocialiteWasCalled $event) { $event->extendSocialite('discord', Provider::class); }); } /** * Register model observers. */ private function registerObservers(): void { Mod::observe(ModObserver::class); ModVersion::observe(ModVersionObserver::class); ModDependency::observe(ModDependencyObserver::class); SptVersion::observe(SptVersionObserver::class); } /** * Register custom number macros. */ private function registerNumberMacros(): void { // Format download numbers. Number::macro('downloads', function (int|float $number) { return Number::forHumans( $number, $number > 1000000 ? 2 : ($number > 1000 ? 1 : 0), maxPrecision: null, abbreviate: true ); }); } /** * Register custom Carbon macros. */ private function registerCarbonMacros(): void { // Format dates dynamically based on the time passed. Carbon::macro('dynamicFormat', function (Carbon $date) { if ($date->diff(now())->m > 1) { return $date->format('M jS, Y'); } if ($date->diff(now())->d === 0) { return $date->diffForHumans(); } return $date->format('M jS, g:i A'); }); } /** * Register Livewire component overrides. */ private function registerLivewireOverrides(): void { Livewire::component('profile.update-password-form', UpdatePasswordForm::class); } }