EnvSiteConfigExtension::setSS_Environment()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 5
c 1
b 0
f 0
nc 2
nop 1
dl 0
loc 7
rs 10
1
<?php
2
3
namespace LeKoala\DevToolkit\Extensions;
4
5
use Exception;
6
use SilverStripe\Forms\FieldList;
7
use SilverStripe\Control\Director;
8
use SilverStripe\ORM\DataExtension;
9
use SilverStripe\Forms\TextareaField;
10
use SilverStripe\Security\Permission;
11
12
/**
13
 * Edit the .env file from the SiteConfig screen
14
 *
15
 * @author lekoala
16
 */
17
class EnvSiteConfigExtension extends DataExtension
18
{
19
    public function updateCMSFields(FieldList $fields)
20
    {
21
        $SS_ENVIRONMENT_FILE = Director::baseFolder() . '/.env';
22
        if ($SS_ENVIRONMENT_FILE && Permission::check('ADMIN')) {
23
            $class = TextareaField::class;
24
            $fields->addFieldToTab(
25
                'Root.Env',
26
                $field = $class::create(
27
                    'SS_Environment',
28
                    null,
29
                    file_get_contents($SS_ENVIRONMENT_FILE)
30
                )
31
            );
32
            if (!is_writable($SS_ENVIRONMENT_FILE)) {
33
                $field->setReadonly(true);
34
            }
35
        }
36
    }
37
38
    public function setSS_Environment($v)
39
    {
40
        $SS_ENVIRONMENT_FILE = Director::baseFolder() . '/.env';
41
        if (!is_writable($SS_ENVIRONMENT_FILE)) {
42
            throw new Exception('Environment file must be writable');
43
        } else {
44
            return file_put_contents($SS_ENVIRONMENT_FILE, $v);
45
        }
46
    }
47
}
48