-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathServiceProvider.php
More file actions
129 lines (114 loc) · 4.86 KB
/
ServiceProvider.php
File metadata and controls
129 lines (114 loc) · 4.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?php
/**
* Class ServiceProvider
*
* @since 1.0.0
* @package Translationmanager\Module
*/
namespace Translationmanager\Module;
use CachingIterator;
use Pimple\Container;
use Translationmanager\Module\ACF\Processor\IncomingMetaProcessor;
use Translationmanager\Module\ACF\Processor\OutgoingMetaProcessor;
use Translationmanager\Module\ACF\Acf;
use Translationmanager\Module\Mlp\Integrator as MultilingualPressIntegrator;
use Translationmanager\Module\Processor\ProcessorBusFactory;
use Translationmanager\Module\WooCommerce\Integrator as WooCommerceIntegrator;
use Translationmanager\Module\YoastSeo\Integrator as WordPressSeoByYoastIntegrator;
use Translationmanager\Module\ACF\Integrator as ACFIntegrator;
use Translationmanager\Module\Elementor\Integrator as ElementorIntegrator;
use Translationmanager\Module\Elementor\Processor\IncomingMetaProcessor as ElementorIncomingMetaProcessor;
use Translationmanager\Module\Elementor\Processor\OutgoingMetaProcessor as ElementorOutgoingMetaProcessor;
use Translationmanager\Service\IntegrableServiceProvider;
/**
* Class ServiceProvider
*
* @since 1.0.0
* @package Translationmanager\Module
*/
class ServiceProvider implements IntegrableServiceProvider
{
/**
* @inheritdoc
*/
public function register(Container $container)
{
$container[MultilingualPressIntegrator::class] = function () {
return new MultilingualPressIntegrator();
};
$container[WordPressSeoByYoastIntegrator::class] = function () {
return new WordPressSeoByYoastIntegrator();
};
$container[WooCommerceIntegrator::class] = function (Container $container) {
return new WooCommerceIntegrator(
$container[ProcessorBusFactory::class]
);
};
$container[AcfIntegrator::class] = function (Container $container) {
return new AcfIntegrator($container['tm/acf/processor_bus']);
};
$container[ElementorIntegrator::class] = function (Container $container) {
return new ElementorIntegrator($container['tm/elementor/processor_bus']);
};
$container['tm/acf/processor_bus'] = function (Container $container) {
$outgoingMetaProcessor = $container['tm/acf/outgoing_meta_processor'];
$incomingMetaProcessor = $container['tm/acf/incoming_meta_processor'];
$processorBusFactory = $container[ProcessorBusFactory::class];
$processorBus = $processorBusFactory->create();
$processorBus
->pushProcessor($outgoingMetaProcessor)
->pushProcessor($incomingMetaProcessor);
return $processorBus;
};
$container['tm/acf/outgoing_meta_processor'] = function (Container $container) {
return new OutgoingMetaProcessor($container['tm/acf/acf']);
};
$container['tm/acf/acf'] = function () {
return new Acf();
};
$container['tm/acf/incoming_meta_processor'] = function () {
return new IncomingMetaProcessor();
};
$container['tm/elementor/processor_bus'] = function (Container $container) {
$outgoingMetaProcessor = new ElementorOutgoingMetaProcessor();
$incomingMetaProcessor = new ElementorIncomingMetaProcessor();
$processorBusFactory = $container[ProcessorBusFactory::class];
$processorBus = $processorBusFactory->create();
$processorBus
->pushProcessor($outgoingMetaProcessor)
->pushProcessor($incomingMetaProcessor);
return $processorBus;
};
$container[ModulesProvider::class] = function (Container $container) {
return new ModulesProvider([
'wp-seo' => $container[WordPressSeoByYoastIntegrator::class],
'multilingualpress' => $container[MultilingualPressIntegrator::class],
'multilingual-press' => $container[MultilingualPressIntegrator::class],
'woocommerce' => $container[WooCommerceIntegrator::class],
'acf' => $container[ACFIntegrator::class],
'elementor' => $container[ElementorIntegrator::class],
]);
};
$container['Modules'] = function (Container $container) {
return new CachingIterator(
$container[ModulesProvider::class]->getIterator(),
CachingIterator::FULL_CACHE
);
};
$container[ModuleIntegrator::class] = function (Container $container) {
return new ModuleIntegrator(
$container['Modules']
);
};
$container[ProcessorBusFactory::class] = function () {
return new ProcessorBusFactory();
};
}
/**
* @inheritdoc
*/
public function integrate(Container $container)
{
$container[ModuleIntegrator::class]->integrate();
}
}