Completed
Pull Request — master (#114)
by Bart
07:53
created

Sections::getRecordDefinition()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 19
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 20

Importance

Changes 0
Metric Value
dl 0
loc 19
ccs 0
cts 5
cp 0
rs 9.2
c 0
b 0
f 0
cc 4
eloc 13
nc 4
nop 1
crap 20
1
<?php
2
3
namespace NerdsAndCompany\Schematic\Services;
4
5
use Craft;
6
use craft\base\Model;
7
use craft\models\Section;
8
use craft\models\EntryType;
9
use craft\models\Section_SiteSettings;
10
11
/**
12
 * Schematic Sections.
13
 *
14
 * Sync Craft Setups.
15
 *
16
 * @author    Nerds & Company
17
 * @copyright Copyright (c) 2015-2018, Nerds & Company
18
 * @license   MIT
19
 *
20
 * @see      http://www.nerds.company
21
 */
22
class Sections extends Base
23
{
24
    /**
25
     * Get all section records
26
     *
27
     * @return Section[]
28
     */
29
    protected function getRecords()
30
    {
31
        return Craft::$app->sections->getAllSections();
32
    }
33
34
    /**
35
     * {@inheritdoc}
36
     */
37
    protected function getRecordDefinition(Model $record)
38
    {
39
        $definition = parent::getRecordDefinition($record);
40
        if ($record instanceof Section) {
41
            $definition['entryTypes'] = $this->export($record->getEntryTypes());
42
            $definition['siteSettings'] = [];
43
            foreach ($record->getSiteSettings() as $siteSetting) {
44
                $attributes = $siteSetting->attributes;
45
                unset($attributes['sectionId']);
46
                unset($attributes['id']);
47
                $definition['siteSettings'][] = $attributes;
48
            }
49
        }
50
        if ($record instanceof EntryType) {
51
            unset($definition['attributes']['sectionId']);
52
        }
53
54
        return $definition;
55
    }
56
57
    /**
58
     * {@inheritdoc}
59
     */
60
    protected function saveRecord(Model $record, array $definition)
61
    {
62
        if ($record instanceof Section) {
63
            $siteSettings = [];
64
            foreach ($definition['siteSettings'] as $siteSettingDefinition) {
65
                $siteSettings[] = new Section_SiteSettings($siteSettingDefinition);
66
            }
67
            $record->setSiteSettings($siteSettings);
68
            if (Craft::$app->sections->saveSection($record)) {
69
                parent::import($definition['entryTypes'], $record->getEntryTypes(), ['sectionId' => $record->id]);
0 ignored issues
show
Comprehensibility Bug introduced by
It seems like you call parent on a different method (import() instead of saveRecord()). Are you sure this is correct? If so, you might want to change this to $this->import().

This check looks for a call to a parent method whose name is different than the method from which it is called.

Consider the following code:

class Daddy
{
    protected function getFirstName()
    {
        return "Eidur";
    }

    protected function getSurName()
    {
        return "Gudjohnsen";
    }
}

class Son
{
    public function getFirstName()
    {
        return parent::getSurname();
    }
}

The getFirstName() method in the Son calls the wrong method in the parent class.

Loading history...
70
                return true;
71
            }
72
        }
73
74
        if ($record instanceof EntryType) {
75
            return Craft::$app->sections->saveEntryType($record);
76
        }
77
78
        return false;
79
    }
80
81
    /**
82
     * Delete a record
83
     *
84
     * @param Model $record
85
     * @return boolean
86
     */
87
    protected function deleteRecord(Model $record)
88
    {
89
        if ($record instanceof Section) {
90
            return Craft::$app->sections->deleteSection($record);
91
        }
92
        if ($record instanceof EntryType) {
93
            return Craft::$app->sections->deleteEntryType($record);
94
        }
95
        return false;
96
    }
97
}
98