Issues (4)

src/ShopwareTasksPlugin.php (1 issue)

1
<?php
2
3
namespace Deployee\Plugins\ShopwareTasks;
4
5
use Deployee\Components\Config\ConfigInterface;
6
use Deployee\Components\Container\ContainerInterface;
7
use Deployee\Components\Dependency\ContainerResolver;
8
use Deployee\Components\Environment\EnvironmentInterface;
9
use Deployee\Components\Persistence\LazyPDO;
10
use Deployee\Components\Plugins\PluginInterface;
11
use Deployee\Plugins\Deploy\Dispatcher\DispatcherCollection;
12
use Deployee\Plugins\Deploy\Helper\TaskCreationHelper;
13
use Deployee\Plugins\ShellTasks\Helper\ExecutableFinder;
14
use Deployee\Plugins\ShopwareTasks\Definitions\CacheClearDefinition;
15
use Deployee\Plugins\ShopwareTasks\Definitions\CreateAdminUserDefinition;
16
use Deployee\Plugins\ShopwareTasks\Definitions\GenerateThemeCacheDefinition;
17
use Deployee\Plugins\ShopwareTasks\Definitions\PluginActivateDefinition;
18
use Deployee\Plugins\ShopwareTasks\Definitions\PluginConfigSetDefinition;
19
use Deployee\Plugins\ShopwareTasks\Definitions\PluginDeactivateDefinition;
20
use Deployee\Plugins\ShopwareTasks\Definitions\PluginInstallDefinition;
21
use Deployee\Plugins\ShopwareTasks\Definitions\PluginRefreshDefinition;
22
use Deployee\Plugins\ShopwareTasks\Definitions\PluginUninstallDefinition;
23
use Deployee\Plugins\ShopwareTasks\Definitions\PluginUpdateDefinition;
24
use Deployee\Plugins\ShopwareTasks\Definitions\ShopwareCommandDefinition;
25
use Deployee\Plugins\ShopwareTasks\Dispatcher\CacheClearDispatcher;
26
use Deployee\Plugins\ShopwareTasks\Dispatcher\CreateAdminUserDispatcher;
27
use Deployee\Plugins\ShopwareTasks\Dispatcher\GenerateThemeCacheDispatcher;
28
use Deployee\Plugins\ShopwareTasks\Dispatcher\PluginActivateDispatcher;
29
use Deployee\Plugins\ShopwareTasks\Dispatcher\PluginConfigSetDispatcher;
30
use Deployee\Plugins\ShopwareTasks\Dispatcher\PluginDeactivateDispatcher;
31
use Deployee\Plugins\ShopwareTasks\Dispatcher\PluginInstallDispatcher;
32
use Deployee\Plugins\ShopwareTasks\Dispatcher\PluginRefreshDispatcher;
33
use Deployee\Plugins\ShopwareTasks\Dispatcher\PluginUninstallDispatcher;
34
use Deployee\Plugins\ShopwareTasks\Dispatcher\PluginUpdateDispatcher;
35
use Deployee\Plugins\ShopwareTasks\Dispatcher\ShopwareCommandDispatcher;
36
use Deployee\Plugins\ShopwareTasks\Shop\ShopConfig;
37
38
class ShopwareTasksPlugin implements PluginInterface
39
{
40
    /**
41
     * @param ContainerInterface $container
42
     */
43
    public function boot(ContainerInterface $container)
44
    {
45
        /* @var EnvironmentInterface $env */
46
        $env = $container->get(EnvironmentInterface::class);
47
        /* @var ConfigInterface $config  */
48
        $config = $container->get(ConfigInterface::class);
49
        $path = $config->get('shopware.path', '');
50
        $path = strpos($path, '/') !== 0 && strpos($path, ':') !== 1
51
            ? $env->getWorkDir() . DIRECTORY_SEPARATOR . $path
52
            : $path;
53
        $container->set('shopware.path', $path);
54
55
        $container->set(ShopConfig::class, function (ContainerInterface $container) {
56
            $envFile = getenv('APP_ENV')
57
                ? ShopConfig::BASE_ENV_FILE . '.' . getenv('APP_ENV')
58
                : ShopConfig::BASE_ENV_FILE;
59
60
            return new ShopConfig(
61
                $container->get('shopware.path') . DIRECTORY_SEPARATOR . $envFile
62
            );
63
        });
64
65
        $container->extend(LazyPDO::class, function (LazyPDO $lazyPDO) use ($container) {
66
            /* @var ConfigInterface $config */
67
            $config = $container->get(ConfigInterface::class);
68
69
            /* @var ShopConfig $shopConfig */
70
            $shopConfig = $container->get(ShopConfig::class);
71
72
            $config->set('db.type', 'mysql' ?? $shopConfig->get('type'));
73
            $config->set('db.host', $config->get('db.host') ?? $shopConfig->get('host'));
74
            $config->set('db.port', $config->get('db.port') ?? $shopConfig->get('port'));
75
            $config->set('db.database', $config->get('db.database') ?? $shopConfig->get('dbname'));
76
            $config->set('db.user', $config->get('db.user') ?? $shopConfig->get('username'));
77
            $config->set('db.password', $config->get('db.password') ?? $shopConfig->get('password'));
78
79
            $lazyPDO->changeConnection(
80
                sprintf(
81
                    '%s:host=%s;port=%d;dbname=%s',
82
                    'mysql',
83
                    $config->get('db.host'),
84
                    $config->get('db.port'),
85
                    $config->get('db.database')
86
                ),
87
                $config->get('db.user'),
88
                $config->get('db.password'),
89
                [
90
                    \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION
91
                ]
92
            );
93
94
            return $lazyPDO;
95
        });
96
    }
97
98
    /**
99
     * @param ContainerInterface $container
100
     * @throws \ReflectionException
101
     */
102
    public function configure(ContainerInterface $container)
103
    {
104
        /* @var ConfigInterface $config */
105
        $config = $container->get(ConfigInterface::class);
0 ignored issues
show
The assignment to $config is dead and can be removed.
Loading history...
106
107
        /* @var ExecutableFinder $execFinder */
108
        $execFinder = $container->get(ExecutableFinder::class);
109
        $execFinder->addAlias('swconsole', $container->get('shopware.path') . '/bin/console');
110
111
        /* @var TaskCreationHelper $helper */
112
        $helper = $container->get(TaskCreationHelper::class);
113
        $helper->addAlias('swCommand', ShopwareCommandDefinition::class);
114
        $helper->addAlias('swCacheClear', CacheClearDefinition::class);
115
        $helper->addAlias('swCreateAdmin', CreateAdminUserDefinition::class);
116
        $helper->addAlias('swGenerateThemeCache', GenerateThemeCacheDefinition::class);
117
        $helper->addAlias('swPluginInstall', PluginInstallDefinition::class);
118
        $helper->addAlias('swPluginUninstall', PluginUninstallDefinition::class);
119
        $helper->addAlias('swPluginUpdate', PluginUpdateDefinition::class);
120
        $helper->addAlias('swPluginActivate', PluginActivateDefinition::class);
121
        $helper->addAlias('swPluginDeactivate', PluginDeactivateDefinition::class);
122
        $helper->addAlias('swPluginRefresh', PluginRefreshDefinition::class);
123
124
        /* @var DispatcherCollection $dispatcherCollection */
125
        $dispatcherCollection = $container->get(DispatcherCollection::class);
126
        /* @var ContainerResolver $resolver */
127
        $resolver = $container->get(ContainerResolver::class);
128
129
        $dispatcherArray = [
130
            $resolver->createInstance(ShopwareCommandDispatcher::class),
131
            $resolver->createInstance(CreateAdminUserDispatcher::class),
132
            $resolver->createInstance(CacheClearDispatcher::class),
133
            $resolver->createInstance(GenerateThemeCacheDispatcher::class),
134
            $resolver->createInstance(PluginInstallDispatcher::class),
135
            $resolver->createInstance(PluginUninstallDispatcher::class),
136
            $resolver->createInstance(PluginUpdateDispatcher::class),
137
            $resolver->createInstance(PluginActivateDispatcher::class),
138
            $resolver->createInstance(PluginDeactivateDispatcher::class),
139
            $resolver->createInstance(PluginRefreshDispatcher::class),
140
        ];
141
142
        $dispatcherCollection->addDispatcherArray($dispatcherArray);
143
    }
144
}