TinyMCEConfigExtension   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 46
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 8
eloc 24
c 2
b 0
f 0
dl 0
loc 46
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B parse_yaml_formats() 0 44 8
1
<?php
2
3
namespace Sunnysideup\CleanerTinyMCEConfig\Formats;
4
5
use SilverStripe\Core\Extension;
6
use SilverStripe\Forms\HTMLEditor\TinyMCEConfig;
7
8
/**
9
 * Class \Sunnysideup\CleanerTinyMCEConfig\Formats\TinyMCEConfigExtension
10
 *
11
 * @property TinyMCEConfig|TinyMCEConfigExtension $owner
12
 */
13
class TinyMCEConfigExtension extends Extension
14
{
15
    public static function parse_yaml_formats(string $identifier = 'cms'): array
16
    {
17
        $yamlFormats = TinyMCEConfig::config()->get('formats');
18
19
        if (! isset($yamlFormats[$identifier])) {
20
            user_error('no editor formats for ' . $identifier);
21
            return [];
22
        }
23
24
        $parsedFormats = [];
25
26
        foreach ($yamlFormats[$identifier] as $sectionTitle => $sectionFormats) {
27
            $formats = [];
28
            $sort = 100;
29
30
            foreach ($sectionFormats as $sTitle => $sFormat) {
31
                if (isset($sFormat['disabled']) && $sFormat['disabled']) {
32
                    continue;
33
                }
34
35
                $title = $sTitle;
36
37
                if (isset($sFormat['title'])) {
38
                    $title = $sFormat['title'];
39
                }
40
41
                if (! isset($sFormat['sort'])) {
42
                    $sFormat['sort'] = $sort;
43
                }
44
45
                $formats[] = ['title' => $title] + $sFormat;
46
            }
47
48
            usort($formats, function ($x, $y) {
49
                return $x['sort'] <=> $y['sort'];
50
            });
51
52
            $parsedFormats[] = [
53
                'title' => $sectionTitle,
54
                'items' => $formats,
55
            ];
56
        }
57
58
        return $parsedFormats;
59
    }
60
}
61