Passed
Branch main (b6a268)
by Iain
04:11
created

AbstractSection   A

Complexity

Total Complexity 12

Size/Duplication

Total Lines 65
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 19
c 1
b 0
f 0
dl 0
loc 65
rs 10
wmc 12

10 Methods

Rating   Name   Duplication   Size   Complexity  
A buildListView() 0 20 3
A buildFilters() 0 3 1
A postSave() 0 2 1
A getRelatedPages() 0 3 1
A preSave() 0 2 1
A getButtons() 0 3 1
A buildEntityForm() 0 3 1
A buildReadView() 0 3 1
A getAccessRights() 0 3 1
A getSettings() 0 3 1
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * Copyright Humbly Arrogant Ltd 2020-2022.
7
 *
8
 * Use of this software is governed by the Business Source License included in the LICENSE file and at https://getparthenon.com/docs/next/license.
9
 *
10
 * Change Date: TBD ( 3 years after 2.0.0 release )
11
 *
12
 * On the date above, in accordance with the Business Source License, use of this software will be governed by the open source license specified in the LICENSE file.
13
 */
14
15
namespace Parthenon\Athena;
16
17
use Parthenon\Athena\Filters\ListFilters;
18
19
abstract class AbstractSection implements SectionInterface
20
{
21
    public function buildListView(ListView $listView): ListView
22
    {
23
        $reflectionObject = new \ReflectionObject($this->getEntity());
24
25
        $camelCaseToSnakeCase = function ($input) {
26
            if (0 === preg_match('/[A-Z]/', $input)) {
27
                return $input;
28
            }
29
            $pattern = '/([a-z])([A-Z])/';
30
31
            return strtolower(preg_replace_callback($pattern, function ($a) {
32
                return $a[1].'_'.strtolower($a[2]);
33
            }, $input));
34
        };
35
36
        foreach ($reflectionObject->getProperties() as $property) {
37
            $listView->addField($camelCaseToSnakeCase($property->getName()), 'text');
38
        }
39
40
        return $listView;
41
    }
42
43
    public function preSave($entity): void
44
    {
45
    }
46
47
    public function postSave($entity): void
48
    {
49
    }
50
51
    public function buildFilters(ListFilters $listFilters): ListFilters
52
    {
53
        return $listFilters;
54
    }
55
56
    public function buildReadView(ReadView $readView): ReadView
57
    {
58
        return $readView;
59
    }
60
61
    public function buildEntityForm(EntityForm $entityForm): EntityForm
62
    {
63
        return $entityForm;
64
    }
65
66
    public function getRelatedPages(): array
67
    {
68
        return [];
69
    }
70
71
    public function getSettings(): Settings
72
    {
73
        return new Settings([]);
74
    }
75
76
    public function getAccessRights(): array
77
    {
78
        return [];
79
    }
80
81
    public function getButtons(): array
82
    {
83
        return [];
84
    }
85
}
86