Completed
Push — master ( bd4222...e5ba92 )
by Arjay
13:31
created

EloquentRepository::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 1
eloc 2
c 1
b 0
f 1
nc 1
nop 1
dl 0
loc 4
rs 10
1
<?php
2
3
namespace Yajra\CMS\Extension;
4
5
use Yajra\CMS\Entities\Extension;
6
7
class EloquentRepository implements Repository
8
{
9
    /**
10
     * @var \Yajra\CMS\Entities\Extension
11
     */
12
    protected $extension;
13
14
    /**
15
     * EloquentRepository constructor.
16
     *
17
     * @param \Yajra\CMS\Entities\Extension $extension
18
     */
19
    public function __construct(Extension $extension)
20
    {
21
        $this->extension = $extension;
22
    }
23
24
    /**
25
     * Install an extension.
26
     *
27
     * @param string $type
28
     * @param array $attributes
29
     * @return \Yajra\CMS\Entities\Extension
30
     */
31
    public function install($type, array $attributes)
32
    {
33
        $extension       = new Extension;
34
        $extension->type = $type;
35
        $extension->name = $attributes['name'];
36
        if (isset($attributes['parameters'])) {
37
            $extension->parameters = $attributes['parameters'];
38
        }
39
        $extension->manifest = json_encode($attributes);
40
        $extension->save();
41
42
        return $extension;
43
    }
44
45
    /**
46
     * Uninstall extension.
47
     *
48
     * @param int $id
49
     * @throws \Exception
50
     */
51
    public function uninstall($id)
52
    {
53
        $extension = $this->extension->query()->findOrFail($id);
54
        // TODO: remove extension files.
55
        $extension->delete();
56
    }
57
58
    /**
59
     * Get all extensions.
60
     *
61
     * @return \Illuminate\Database\Eloquent\Collection|static[]
62
     */
63
    public function all()
64
    {
65
        return $this->extension->all();
66
    }
67
68
    /**
69
     * Find or fail an extension.
70
     *
71
     * @param int $id
72
     * @return \Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Eloquent\Model
73
     */
74
    public function findOrFail($id)
75
    {
76
        return $this->extension->query()->findOrFail($id);
77
    }
78
}
79