Files
lis/vendor/munafio/chatify/src/ChatifyServiceProvider.php
T

154 lines
5.2 KiB
PHP

<?php
namespace Chatify;
use Chatify\Console\InstallCommand;
use Chatify\Console\PublishCommand;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\ServiceProvider;
class ChatifyServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
app()->bind('ChatifyMessenger', function () {
return new \Chatify\ChatifyMessenger;
});
}
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
// Load Views and Routes
$this->loadViewsFrom(__DIR__ . '/views', 'Chatify');
$this->loadRoutes();
if ($this->app->runningInConsole()) {
$this->commands([
InstallCommand::class,
PublishCommand::class,
]);
$this->setPublishes();
}
}
/**
* Publishing the files that the user may override.
*
* @return void
*/
protected function setPublishes()
{
// Load user's avatar folder from package's config
$userAvatarFolder = json_decode(json_encode(include(__DIR__.'/config/chatify.php')))->user_avatar->folder;
// Config
$this->publishes([
__DIR__ . '/config/chatify.php' => config_path('chatify.php')
], 'chatify-config');
// Migrations
$this->publishes([
__DIR__ . '/database/migrations/2022_01_10_99999_add_active_status_to_users.php' => database_path('migrations/' . date('Y_m_d') . '_999999_add_active_status_to_users.php'),
__DIR__ . '/database/migrations/2022_01_10_99999_add_avatar_to_users.php' => database_path('migrations/' . date('Y_m_d') . '_999999_add_avatar_to_users.php'),
__DIR__ . '/database/migrations/2022_01_10_99999_add_dark_mode_to_users.php' => database_path('migrations/' . date('Y_m_d') . '_999999_add_dark_mode_to_users.php'),
__DIR__ . '/database/migrations/2022_01_10_99999_add_messenger_color_to_users.php' => database_path('migrations/' . date('Y_m_d') . '_999999_add_messenger_color_to_users.php'),
__DIR__ . '/database/migrations/2022_01_10_99999_create_chatify_favorites_table.php' => database_path('migrations/' . date('Y_m_d') . '_999999_create_chatify_favorites_table.php'),
__DIR__ . '/database/migrations/2022_01_10_99999_create_chatify_messages_table.php' => database_path('migrations/' . date('Y_m_d') . '_999999_create_chatify_messages_table.php'),
], 'chatify-migrations');
// Models
$isV8 = explode('.', app()->version())[0] >= 8;
$this->publishes([
__DIR__ . '/Models' => app_path($isV8 ? 'Models' : '')
], 'chatify-models');
// Controllers
$this->publishes([
__DIR__ . '/Http/Controllers' => app_path('Http/Controllers/vendor/Chatify')
], 'chatify-controllers');
// Views
$this->publishes([
__DIR__ . '/views' => resource_path('views/vendor/Chatify')
], 'chatify-views');
// Assets
$this->publishes([
// CSS
__DIR__ . '/assets/css' => public_path('css/chatify'),
// JavaScript
__DIR__ . '/assets/js' => public_path('js/chatify'),
// Images
__DIR__ . '/assets/imgs' => storage_path('app/public/' . $userAvatarFolder),
// CSS
__DIR__ . '/assets/sounds' => public_path('sounds/chatify'),
], 'chatify-assets');
// Routes (API and Web)
$this->publishes([
__DIR__ . '/routes' => base_path('routes/chatify')
], 'chatify-routes');
}
/**
* Group the routes and set up configurations to load them.
*
* @return void
*/
protected function loadRoutes()
{
if (config('chatify.routes.custom')) {
Route::group($this->routesConfigurations(), function () {
$this->loadRoutesFrom(base_path('routes/chatify/web.php'));
});
Route::group($this->apiRoutesConfigurations(), function () {
$this->loadRoutesFrom(base_path('routes/chatify/api.php'));
});
} else {
Route::group($this->routesConfigurations(), function () {
$this->loadRoutesFrom(__DIR__ . '/routes/web.php');
});
Route::group($this->apiRoutesConfigurations(), function () {
$this->loadRoutesFrom(__DIR__ . '/routes/api.php');
});
}
}
/**
* Routes configurations.
*
* @return array
*/
private function routesConfigurations()
{
return [
'prefix' => config('chatify.routes.prefix'),
'namespace' => config('chatify.routes.namespace'),
'middleware' => config('chatify.routes.middleware'),
];
}
/**
* API routes configurations.
*
* @return array
*/
private function apiRoutesConfigurations()
{
return [
'prefix' => config('chatify.api_routes.prefix'),
'namespace' => config('chatify.api_routes.namespace'),
'middleware' => config('chatify.api_routes.middleware'),
];
}
}