OwnershipExtension::IsNotOwner()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
namespace LeKoala\CommonExtensions;
4
5
use SilverStripe\ORM\DataObject;
6
use SilverStripe\Security\Member;
7
use SilverStripe\ORM\DataExtension;
8
use SilverStripe\Security\Permission;
9
10
/**
11
 * Make a DataObject have a Member owner
12
 *
13
 * @property DataObject $owner
14
 * @property int $OwnerID
15
 * @method \SilverStripe\Security\Member Owner()
16
 */
17
class OwnershipExtension extends DataExtension
18
{
19
    private static $has_one = [
0 ignored issues
show
introduced by
The private property $has_one is not used, and could be removed.
Loading history...
20
        "Owner" => Member::class,
21
    ];
22
23
    public function onBeforeWrite()
24
    {
25
        // Make sure we have a owner
26
        if (!$this->owner->OwnerID) {
27
            $this->owner->OwnerID = Member::currentUserID();
0 ignored issues
show
Bug introduced by
The method currentUserID() does not exist on SilverStripe\Security\Member. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

27
            /** @scrutinizer ignore-call */ 
28
            $this->owner->OwnerID = Member::currentUserID();

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
28
        }
29
    }
30
31
    /**
32
     * @return bool
33
     */
34
    public function IsOwner()
35
    {
36
        return $this->owner->OwnerID == Member::currentUserID();
37
    }
38
39
    /**
40
     * @return bool
41
     */
42
    public function IsNotOwner()
43
    {
44
        return $this->owner->OwnerID != Member::currentUserID();
45
    }
46
47
    /**
48
     * @param Member $member
49
     * @return boolean
50
     */
51
    public function canView($member = null)
52
    {
53
        // Can always view
54
        if ($this->IsOwner()) {
55
            return true;
56
        }
57
        return Permission::check('ADMIN', 'any', $member);
58
    }
59
60
    /**
61
     * @param Member $member
62
     * @return boolean
63
     */
64
    public function canEdit($member = null)
65
    {
66
        // Can always view
67
        if ($this->IsOwner()) {
68
            return true;
69
        }
70
        return Permission::check('ADMIN', 'any', $member);
71
    }
72
73
    /**
74
     * @param Member $member
75
     * @return boolean
76
     */
77
    public function canDelete($member = null)
78
    {
79
        // Can always view
80
        if ($this->IsOwner()) {
81
            return true;
82
        }
83
        return Permission::check('ADMIN', 'any', $member);
84
    }
85
}
86