Passed
Pull Request — master (#18)
by
unknown
03:21
created

HistoryControllerFactory::isEnabled()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 2
nc 2
nop 1
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 *
4
 */
5
6
namespace SilverStripe\VersionedAdmin\Controllers;
7
8
use SilverStripe\CMS\Controllers\CMSPageHistoryController;
9
use SilverStripe\CMS\Model\SiteTree;
10
use SilverStripe\Control\HTTPRequest;
11
use SilverStripe\Core\Extensible;
12
use SilverStripe\Core\Injector\Factory;
13
use SilverStripe\Core\Injector\Injector;
14
15
class HistoryControllerFactory implements Factory
16
{
17
    use Extensible;
18
19
    public function create($service, array $params = array())
20
    {
21
        $request = Injector::inst()->get(HTTPRequest::class);
22
        $id = $request->param('ID');
23
24
        if ($id) {
25
            $page = SiteTree::get()->byID($id);
26
            if ($page && $this->isEnabled($page)) {
27
                return Injector::inst()->create(CMSPageHistoryViewerController::class);
28
            }
29
        }
30
31
        // Injector is not used to prevent an infinite loop
32
        return new CMSPageHistoryController();
33
    }
34
35
    /**
36
     * Only activate for pages that have a history viewer capability applied. Extensions can provide their
37
     * own two cents about this criteria.
38
     *
39
     * @param SiteTree $record
40
     * @return bool
41
     */
42
    public function isEnabled(SiteTree $record)
43
    {
44
        $enabledResults = array_filter($this->extend('updateIsEnabled', $record));
45
        return (!empty($enabledResults) && max($enabledResults) === true);
46
    }
47
48
}
49