Loader::setCLiMode()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
c 0
b 0
f 0
rs 10
cc 1
nc 1
nop 1
1
<?php
2
3
namespace Kaliop\EzFindSearchEngineBundle\Core\MVC\Legacy\Kernel;
4
5
use eZ\Publish\Core\MVC\Legacy\Kernel\Loader as BaseLoader;
6
use eZ\Publish\Core\MVC\Legacy\Kernel as LegacyKernel;
7
use eZ\Publish\Core\MVC\Legacy\LegacyEvents;
8
use eZ\Publish\Core\MVC\Legacy\Event\PostBuildKernelEvent;
9
use Symfony\Component\HttpFoundation\ParameterBag;
10
use eZ\Publish\Core\MVC\Legacy\Event\PreBuildKernelEvent;
11
use eZ\Publish\Core\MVC\Legacy\Kernel\CLIHandler;
12
13
/**
14
 * Implement a fix for https://jira.ez.no/browse/EZP-26895 as well as https://jira.ez.no/browse/EZP-26451
15
 */
16
class Loader extends BaseLoader
17
{
18
    protected $isCli = false;
19
20
    public function setCLiMode($isCli=true)
21
    {
22
        $this->isCli = $isCli;
23
    }
24
25
    public function buildLegacyKernel($legacyKernelHandlerWeb, $legacyKernelHandlerCli=null)
26
    {
27
        $legacyRootDir = $this->legacyRootDir;
28
        $webrootDir = $this->webrootDir;
29
        $eventDispatcher = $this->eventDispatcher;
30
        $logger = $this->logger;
31
        $that = $this;
32
33
        return function () use ($legacyKernelHandlerWeb, $legacyKernelHandlerCli, $legacyRootDir, $webrootDir, $eventDispatcher, $logger, $that) {
34
            if (LegacyKernel::hasInstance()) {
35
                return LegacyKernel::instance();
36
            }
37
38
            if ($this->isCli) {
39
                $legacyKernelHandler = $legacyKernelHandlerCli;
40
            } else {
41
                $legacyKernelHandler = $legacyKernelHandlerWeb;
42
            }
43
44
            if ($legacyKernelHandler instanceof \Closure) {
45
                $legacyKernelHandler = $legacyKernelHandler();
46
            }
47
            $legacyKernel = new LegacyKernel($legacyKernelHandler, $legacyRootDir, $webrootDir, $logger);
48
49
            if ($that->getBuildEventsEnabled()) {
50
                $eventDispatcher->dispatch(
51
                    LegacyEvents::POST_BUILD_LEGACY_KERNEL,
52
                    new PostBuildKernelEvent($legacyKernel, $legacyKernelHandler)
53
                );
54
            }
55
56
            return $legacyKernel;
57
        };
58
    }
59
60
    public function buildLegacyKernelHandlerCLI()
61
    {
62
        $legacyRootDir = $this->legacyRootDir;
63
        $eventDispatcher = $this->eventDispatcher;
64
        $container = $this->container;
65
        $that = $this;
66
67
        return function () use ($legacyRootDir, $container, $eventDispatcher, $that) {
68
            if (!$that->getCLIHandler()) {
69
                $currentDir = getcwd();
70
                chdir($legacyRootDir);
71
72
                $legacyParameters = new ParameterBag($container->getParameter('ezpublish_legacy.kernel_handler.cli.options'));
73
                if ($that->getBuildEventsEnabled()) {
74
                    $eventDispatcher->dispatch(LegacyEvents::PRE_BUILD_LEGACY_KERNEL, new PreBuildKernelEvent($legacyParameters));
75
                }
76
77
                $that->setCLIHandler(
78
                    new CLIHandler($legacyParameters->all(), $container->get('ezpublish.siteaccess'), $container)
79
                );
80
81
                chdir($currentDir);
82
            }
83
84
            return $that->getCLIHandler();
85
        };
86
    }
87
}
88