GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Passed
Push — develop ( 3f084e...60203c )
by Toby
04:51
created

PositionSettingRetrieval::getCacheKey()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
cc 2
eloc 4
c 0
b 0
f 0
nc 2
nop 1
dl 0
loc 7
ccs 0
cts 5
cp 0
crap 6
rs 10
1
<?php
2
0 ignored issues
show
Coding Style introduced by
Missing file doc comment
Loading history...
3
namespace BristolSU\Module\AssignRoles\Support;
4
5
use BristolSU\ControlDB\Contracts\Models\Group;
6
use BristolSU\ControlDB\Contracts\Repositories\Position;
7
use BristolSU\Support\Authentication\Contracts\Authentication;
8
use BristolSU\Support\Logic\Contracts\Audience\LogicAudience;
9
use BristolSU\Support\Logic\Contracts\LogicRepository;
10
use BristolSU\Support\Logic\Contracts\LogicTester;
11
use BristolSU\Support\ModuleInstance\ModuleInstance;
12
use Exception;
13
use Illuminate\Support\Facades\Cache;
14
15
class PositionSettingRetrieval
0 ignored issues
show
Coding Style introduced by
Missing doc comment for class PositionSettingRetrieval
Loading history...
16
{
17
18
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
19
     * @var LogicRepository
20
     */
21
    private $logicRepository;
0 ignored issues
show
Coding Style introduced by
Private member variable "logicRepository" must be prefixed with an underscore
Loading history...
22
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
23
     * @var LogicAudience
24
     */
25
    private $logicAudience;
0 ignored issues
show
Coding Style introduced by
Private member variable "logicAudience" must be prefixed with an underscore
Loading history...
26
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
27
     * @var Position
28
     */
29
    private $positionRepository;
0 ignored issues
show
Coding Style introduced by
Private member variable "positionRepository" must be prefixed with an underscore
Loading history...
30
31
    public function __construct(LogicRepository $logicRepository, LogicAudience $logicAudience, Position $positionRepository)
0 ignored issues
show
Coding Style introduced by
Missing doc comment for function __construct()
Loading history...
32
    {
33
        $this->logicRepository = $logicRepository;
34
        $this->logicAudience = $logicAudience;
35
        $this->positionRepository = $positionRepository;
36
    }
37
38
    public function getSettings(Group $group)
0 ignored issues
show
Coding Style introduced by
Missing doc comment for function getSettings()
Loading history...
39
    {
40
        $settings = settings('position_settings', []);
41
        foreach ($settings as $setting) {
42
            if ($this->groupIsForSetting($group, $setting)) {
43
                return $setting;
44
            }
45
        }
46
        throw new SettingRetrievalException('Could not find a setting');
47
    }
48
49
    protected function groupIsForSetting(Group $group, array $setting): bool
0 ignored issues
show
Coding Style introduced by
Missing doc comment for function groupIsForSetting()
Loading history...
50
    {
51
        $user = app(Authentication::class)->getUser();
52
        $role = app(Authentication::class)->getRole();
53
        
54
        if (!array_key_exists('logic_id', $setting)) {
55
            return false;
56
        }
57
        $logic = $this->logicRepository->getById($setting['logic_id']);
58
        return app(LogicTester::class)->evaluate($logic, $user, $group, $role);
59
//        $groups = collect($this->logicAudience->groupAudience($logic))->map(function (Group $group) {
0 ignored issues
show
Coding Style introduced by
Line indented incorrectly; expected at least 8 spaces, found 0
Loading history...
60
//            return $group->id();
0 ignored issues
show
Coding Style introduced by
Line indented incorrectly; expected at least 8 spaces, found 0
Loading history...
61
//        });
0 ignored issues
show
Coding Style introduced by
Line indented incorrectly; expected at least 8 spaces, found 0
Loading history...
62
//        return $groups->contains($group->id());
0 ignored issues
show
Coding Style introduced by
Line indented incorrectly; expected at least 8 spaces, found 0
Loading history...
63
    }
64
65
    protected function getCacheKey(Group $group)
0 ignored issues
show
Coding Style introduced by
Missing doc comment for function getCacheKey()
Loading history...
66
    {
67
        $moduleInstance = app(ModuleInstance::class);
68
        if($moduleInstance->exists) {
0 ignored issues
show
Coding Style introduced by
Expected "if (...) {\n"; found "if(...) {\n"
Loading history...
69
            throw new \Exception('Module instance was used in ' . static::class . ' but was not bound to the container');
70
        }
71
        return PositionSettingRetrieval::class . '.' . $moduleInstance->id() . '.' . $group->id();
72
    }
73
    
74
    public function parse($setting)
0 ignored issues
show
Coding Style introduced by
Missing doc comment for function parse()
Loading history...
75
    {
76
        foreach ($setting['allowed'] as $index => $id) {
77
            $setting['allowed'][$index] = $this->getPosition($id);
78
        }
79
        foreach ($setting['only_one_role'] as $index => $id) {
80
            $setting['only_one_role'][$index] = $this->getPosition($id);
81
        }
82
        foreach ($setting['only_one_user'] as $index => $id) {
83
            $setting['only_one_user'][$index] = $this->getPosition($id);
84
        }
85
        foreach ($setting['user_only_has_one_role'] as $index => $id) {
86
            $setting['user_only_has_one_role'][$index] = $this->getPosition($id);
87
        }
88
        return $setting;
89
    }
90
91
    protected function getPosition($id)
0 ignored issues
show
Coding Style introduced by
Missing doc comment for function getPosition()
Loading history...
92
    {
93
        return $this->positionRepository->getById($id);
94
    }
95
96
}