ActivitylogServiceProvider   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
dl 0
loc 51
ccs 27
cts 27
cp 1
rs 10
c 0
b 0
f 0
wmc 7
lcom 1
cbo 3

4 Methods

Rating   Name   Duplication   Size   Complexity  
A boot() 0 16 2
A register() 0 12 1
A determineActivityModel() 0 11 3
A getActivityModelInstance() 0 6 1
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