DevGroupExtension::onAfterWrite()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 27
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 17
c 1
b 0
f 0
nc 3
nop 0
dl 0
loc 27
rs 9.7
1
<?php
2
3
namespace LeKoala\DevToolkit\Extensions;
4
5
use SilverStripe\Security\Member;
6
use SilverStripe\Admin\LeftAndMain;
0 ignored issues
show
Bug introduced by
The type SilverStripe\Admin\LeftAndMain was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
7
use SilverStripe\ORM\DataExtension;
8
use SilverStripe\Control\Controller;
9
use SilverStripe\Security\DefaultAdminService;
10
use SilverStripe\View\Parsers\URLSegmentFilter;
11
12
/**
13
 * Manage group
14
 *
15
 * @property \SilverStripe\Security\Group $owner
16
 */
17
class DevGroupExtension extends DataExtension
18
{
19
    public function onAfterWrite()
20
    {
21
        $ctrl = Controller::curr();
22
        if (!$ctrl instanceof LeftAndMain) {
23
            return;
24
        }
25
        // Always populate a group with a user
26
        // ! this should not run during test or it causes infinite loops
27
        if ($this->owner->Members()->count() == 0) {
28
            $groupTitle = $this->owner->Title;
29
            $filter = new URLSegmentFilter;
30
31
            $service = DefaultAdminService::singleton();
32
            $defaultAdmin = $service->findOrCreateDefaultAdmin();
33
            $emailParts = explode('@', $defaultAdmin->Email);
34
35
            // Let's create a fake member for this
36
            $member = Member::create();
37
            $member->Email = $filter->filter($groupTitle) . '@' . $emailParts[1];
38
            $member->FirstName = 'Default User';
39
            $member->Surname = $groupTitle;
40
            $member->write();
41
42
            $member->changePassword('Test0000');
43
            $member->write();
44
45
            $this->owner->Members()->add($member);
46
        }
47
    }
48
}
49