File: /home/bdedition/public_html/core/app/Providers/AppServiceProvider.php
<?php
namespace App\Providers;
use App\Constants\Status;
use App\Lib\Searchable;
use App\Models\AdminNotification;
use App\Models\Frontend;
use App\Models\News;
use App\Models\SupportTicket;
use App\Models\User;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\ServiceProvider;
use Illuminate\Pagination\Paginator;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*/
public function register(): void
{
Builder::mixin(new Searchable);
}
/**
* Bootstrap any application services.
*/
public function boot(): void
{
if (!cache()->get('SystemInstalled')) {
$envFilePath = base_path('.env');
if (!file_exists($envFilePath)) {
header('Location: install');
exit;
}
$envContents = file_get_contents($envFilePath);
if (empty($envContents)) {
header('Location: install');
exit;
} else {
cache()->put('SystemInstalled', true);
}
}
$activeTemplate = activeTemplate();
$viewShare['activeTemplate'] = $activeTemplate;
$viewShare['activeTemplateTrue'] = activeTemplate(true);
$viewShare['emptyMessage'] = 'Data not found';
view()->share($viewShare);
view()->composer('admin.partials.sidenav', function ($view) {
$view->with([
'bannedUsersCount' => User::banned()->count(),
'emailUnverifiedUsersCount' => User::emailUnverified()->count(),
'mobileUnverifiedUsersCount' => User::mobileUnverified()->count(),
'pendingNewsCount' => News::pending()->count(),
'pendingTicketCount' => SupportTicket::whereIN('status', [Status::TICKET_OPEN, Status::TICKET_REPLY])->count(),
'updateAvailable' => version_compare(gs('available_version'), systemDetails()['version'], '>') ? 'v' . gs('available_version') : false,
]);
});
view()->composer('admin.partials.topnav', function ($view) {
$view->with([
'adminNotifications' => AdminNotification::where('is_read', Status::NO)->with('user')->orderBy('id', 'desc')->take(10)->get(),
'adminNotificationCount' => AdminNotification::where('is_read', Status::NO)->count(),
]);
});
view()->composer('partials.seo', function ($view) {
$seo = Frontend::where('data_keys', 'seo.data')->first();
$view->with([
'seo' => $seo ? $seo->data_values : $seo,
]);
});
if (gs('force_ssl')) {
\URL::forceScheme('https');
}
Paginator::useBootstrapFive();
}
}