ImageFieldFinder   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 18
c 1
b 0
f 0
dl 0
loc 30
rs 10
wmc 8

1 Method

Rating   Name   Duplication   Size   Complexity  
B Fields() 0 26 8
1
<?php
2
3
namespace Sunnysideup\AssetsOverview\Api;
4
5
use SilverStripe\Assets\File;
6
use SilverStripe\Assets\Image;
7
use SilverStripe\Core\ClassInfo;
8
use SilverStripe\Core\Config\Config;
9
use SilverStripe\Core\Injector\Injector;
10
use SilverStripe\ORM\DataObject;
11
12
class ImageFieldFinder
13
{
14
    protected static $myCache = [];
15
16
    public function Fields()
17
    {
18
        if (empty(self::$myCache)) {
19
            $types = ['has_one', 'has_many', 'many_many', 'belongs_many_many', 'belongs_to'];
20
            $classNames = ClassInfo::subclassesFor(DataObject::class, false);
21
            foreach ($classNames as $className) {
22
                $obj = Injector::inst()->get($className);
23
                $fieldLabels = $obj->fieldLabels(true);
24
                foreach ($types as $type) {
25
                    $rels = Config::inst()->get($className, $type, Config::UNINHERITED);
26
                    if (is_array($rels) && ! empty($rels)) {
27
                        foreach ($rels as $relName => $relType) {
28
                            if (is_a($relType, File::class, true)) {
29
                                $title = $obj->i18n_singular_name() . ' - ' . ($fieldLabels[$relName] ?? $relName);
30
                                $key = $className . ',' . $relName . ',' . $type;
31
                                self::$myCache[$key] = $title;
32
                            }
33
                        }
34
                    }
35
                }
36
            }
37
38
            asort(self::$myCache);
39
        }
40
41
        return self::$myCache;
42
    }
43
}
44