Passed
Push — master ( bec2a0...9c6a4b )
by Nicolaas
02:11
created

AllLinksProviderBase::getNumberOfExamples()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 3
rs 10
1
<?php
2
3
namespace Sunnysideup\TemplateOverview\Api;
4
5
6
namespace Sunnysideup\TemplateOverview\Api;
7
8
use ReflectionClass;
9
10
use Sunnysideup\TemplateOverview\Api\Providers\AllLinksControllerInfo;
11
use Sunnysideup\TemplateOverview\Api\Providers\AllLinksDataObjects;
12
use Sunnysideup\TemplateOverview\Api\Providers\AllLinksModelAdmin;
13
use Sunnysideup\TemplateOverview\Api\Providers\AllLinksReports;
14
15
16
17
18
use SilverStripe\Admin\CMSMenu;
19
use SilverStripe\CMS\Model\SiteTree;
20
use SilverStripe\Control\Director;
21
use SilverStripe\Core\ClassInfo;
22
use SilverStripe\Core\Config\Configurable;
23
use SilverStripe\Core\Extensible;
24
use SilverStripe\Core\Injector\Injectable;
25
use SilverStripe\Core\Injector\Injector;
26
27
28
use SilverStripe\ORM\DataObject;
29
use SilverStripe\ORM\DB;
30
use SilverStripe\Versioned\Versioned;
31
32
abstract class AllLinksProviderBase
33
{
34
    use Extensible;
35
    use Injectable;
36
    use Configurable;
37
38
    protected $numberOfExamples = 1;
39
40
    public function setNumberOfExamples($n): self
41
    {
42
        $this->numberOfExamples = $n;
43
44
        return $this;
45
    }
46
47
    public function getNumberOfExamples(): int
48
    {
49
        return $this->numberOfExamples;
50
    }
51
52
    protected function isValidClass($class)
53
    {
54
        $obj = new ReflectionClass($class);
55
        if ($obj->isAbstract()) {
56
            return false;
57
        }
58
        return true;
59
    }
60
    /**
61
     * Takes an array, takes one item out, and returns new array
62
     *
63
     * @param array $array Array which will have an item taken out of it.
64
     * @param string $exclusion Item to be taken out of $array
65
     *
66
     * @return array New array.
67
     */
68
    protected function arrayExcept($array, $exclusion)
69
    {
70
        $newArray = $array;
71
        $count = count($newArray);
72
        for ($i = 0; $i < $count; $i++) {
73
            if ($newArray[$i] === $exclusion) {
74
                unset($newArray[$i]);
75
            }
76
        }
77
        return $newArray;
78
    }
79
80
    private $listOfAllSiteTreeClassesCache = [];
81
82
    /**
83
     * returns a list of all SiteTree Classes
84
     * @return array
85
     */
86
    public function getListOfAllSiteTreeClasses()
87
    {
88
        if(empty($this->listOfAllSiteTreeClassesCache)) {
89
            $siteTreeDetails = Injector::inst()->get(SiteTreeDetails::class);
90
            $list = $siteTreeDetails->ListOfAllSiteTreeClasses();
91
            foreach ($list as $page) {
92
                $this->listOfAllSiteTreeClassesCache[] = $page->ClassName;
93
            }
94
        }
95
        return $this->listOfAllSiteTreeClassesCache;
96
    }
97
98
99
}
100