Completed
Push — master ( ae276e...08a128 )
by Tom
03:19
created

ActivitylogServiceProvider::bootConfig()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 8
ccs 4
cts 4
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Spatie\Activitylog;
4
5
use Illuminate\Database\Eloquent\Model;
6
use Illuminate\Support\ServiceProvider;
7
use Spatie\Activitylog\Contracts\Activity;
8
use Spatie\Activitylog\Contracts\Activity as ActivityContract;
9
use Spatie\Activitylog\Exceptions\InvalidConfiguration;
10
use Spatie\Activitylog\Models\Activity as ActivityModel;
11
12
class ActivitylogServiceProvider extends ServiceProvider
13
{
14 384
    public function boot()
15
    {
16 384
        $this->publishes([
17 384
            __DIR__.'/../config/activitylog.php' => config_path('activitylog.php'),
18 384
        ], 'config');
19
20 384
        $this->mergeConfigFrom(__DIR__.'/../config/activitylog.php', 'activitylog');
21
22 384
        if (! class_exists('CreateActivityLogTable')) {
23 4
            $timestamp = date('Y_m_d_His', time());
24
25 4
            $this->publishes([
26 4
                __DIR__.'/../migrations/create_activity_log_table.php.stub' => database_path("/migrations/{$timestamp}_create_activity_log_table.php"),
27 4
            ], 'migrations');
28
        }
29 384
    }
30
31 384
    public function register()
32
    {
33 384
        $this->app->bind('command.activitylog:clean', CleanActivitylogCommand::class);
34
35 384
        $this->commands([
36 384
            'command.activitylog:clean',
37
        ]);
38
39 384
        $this->app->bind(ActivityLogger::class);
40
41 384
        $this->app->singleton(ActivityLogStatus::class);
42 384
    }
43
44 347
    public static function determineActivityModel(): string
45
    {
46 347
        $activityModel = config('activitylog.activity_model') ?? ActivityModel::class;
47
48 347
        if (! is_a($activityModel, Activity::class, true)
49 347
            || ! is_a($activityModel, Model::class, true)) {
50 8
            throw InvalidConfiguration::modelIsNotValid($activityModel);
51
        }
52
53 347
        return $activityModel;
54
    }
55
56 347
    public static function getActivityModelInstance(): ActivityContract
57
    {
58 347
        $activityModelClassName = self::determineActivityModel();
59
60 347
        return new $activityModelClassName();
61
    }
62
}
63