Completed
Push — master ( a15f89...abb079 )
by Craig
07:12 queued 01:36
created

AbstractExtensionCommand::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 1
eloc 8
nc 1
nop 7
dl 0
loc 17
rs 10
c 1
b 0
f 1
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of the Zikula package.
7
 *
8
 * Copyright Zikula Foundation - https://ziku.la/
9
 *
10
 * For the full copyright and license information, please view the LICENSE
11
 * file that was distributed with this source code.
12
 */
13
14
namespace Zikula\ExtensionsModule\Command;
15
16
use Symfony\Component\Console\Command\Command;
17
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
18
use Zikula\BlocksModule\Entity\RepositoryInterface\BlockRepositoryInterface;
19
use Zikula\Bundle\CoreBundle\HttpKernel\ZikulaHttpKernelInterface;
20
use Zikula\ExtensionsModule\Constant;
21
use Zikula\ExtensionsModule\Entity\RepositoryInterface\ExtensionRepositoryInterface;
22
use Zikula\ExtensionsModule\Helper\BundleSyncHelper;
23
use Zikula\ExtensionsModule\Helper\ExtensionDependencyHelper;
24
use Zikula\ExtensionsModule\Helper\ExtensionHelper;
25
26
abstract class AbstractExtensionCommand extends Command
27
{
28
    /**
29
     * @var ExtensionRepositoryInterface
30
     */
31
    protected $extensionRepository;
32
33
    /**
34
     * @var BlockRepositoryInterface
35
     */
36
    protected $blockRepository;
37
38
    /**
39
     * @var ExtensionDependencyHelper
40
     */
41
    protected $dependencyHelper;
42
43
    /**
44
     * @var BundleSyncHelper
45
     */
46
    protected $bundleSyncHelper;
47
48
    /**
49
     * @var ExtensionHelper
50
     */
51
    protected $extensionHelper;
52
53
    /**
54
     * @var EventDispatcherInterface
55
     */
56
    protected $eventDispatcher;
57
58
    /**
59
     * @var ZikulaHttpKernelInterface
60
     */
61
    protected $kernel;
62
63
    public function __construct(
64
        ExtensionRepositoryInterface $extensionRepository,
65
        BlockRepositoryInterface $blockRepository,
66
        ExtensionDependencyHelper $dependencyHelper,
67
        BundleSyncHelper $bundleSyncHelper,
68
        ExtensionHelper $extensionHelper,
69
        EventDispatcherInterface $eventDispatcher,
70
        ZikulaHttpKernelInterface $kernel
71
    ) {
72
        $this->extensionRepository = $extensionRepository;
73
        $this->blockRepository = $blockRepository;
74
        $this->dependencyHelper = $dependencyHelper;
75
        $this->bundleSyncHelper = $bundleSyncHelper;
76
        $this->extensionHelper = $extensionHelper;
77
        $this->eventDispatcher = $eventDispatcher;
78
        $this->kernel = $kernel;
79
        parent::__construct();
80
    }
81
82
    protected function isInstalled(string $bundleName)
83
    {
84
        if (null !== $extension = $this->extensionRepository->findOneBy(['name' => $bundleName])) {
85
            if (in_array($extension->getState(), [Constant::STATE_ACTIVE, Constant::STATE_INACTIVE])) {
86
                return $extension;
87
            }
88
        }
89
90
        return false;
91
    }
92
93
    protected function reSync(): void
94
    {
95
        $extensionsInFileSystem = $this->bundleSyncHelper->scanForBundles();
96
        $this->bundleSyncHelper->syncExtensions($extensionsInFileSystem);
97
        $this->kernel->reboot(null);
98
    }
99
}
100