forked from Neblabs/coupon-urls
-
Notifications
You must be signed in to change notification settings - Fork 0
/
coupon-urls.php
82 lines (72 loc) · 2.94 KB
/
coupon-urls.php
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
<?php
use CouponURLs\App\Creation\Environment\EnvironmentFactory;
use CouponURLs\Original\Cache\MemoryCache;
use CouponURLs\Original\Collections\ByFileGettableCollection;
use CouponURLs\Original\Collections\GettableCollectionDecorator;
use CouponURLs\Original\Construction\Abilities\HandleableServiceExceptionFactory;
use CouponURLs\Original\Construction\Core\DevelopmentServiceExceptionHandlerFactory;
use CouponURLs\Original\Construction\Core\ProductionServiceExceptionHandlerFactory;
use CouponURLs\Original\Construction\Dependency\ProductionDependenciesContainerFactory;
use CouponURLs\Original\Construction\FactoryOverloader;
use CouponURLs\Original\Core\Application;
use CouponURLs\Original\Core\Services\ActionsService;
use CouponURLs\Original\Core\Services\DependenciesService;
use CouponURLs\Original\Core\Services\MonitorService;
use CouponURLs\Original\Dependency\Framework\AppDependencyTypes;
use CouponURLs\Original\Dependency\Framework\OriginalDependencyTypes;
use CouponURLs\Original\Dependency\Framework\ValidDependencyTypes;
use CouponURLs\Original\Environment\Env;
use CouponURLs\Original\Files\RequireFileReader;
use function CouponURLs\Original\Utilities\Collection\_a;
/*
Plugin Name: Coupon URLs for WooCommerce - Extension
Plugin URI:
Description: Add a coupon and optionally a product when clicking a custom URL.
Version: 1.1.4
Author: Neblabs
Author URI: https://neblabs.com
Text Domain: coupon-urls-international
Domain Path: /international
Requires at least: 4.7
Requires PHP: 7.2
*/
require_once 'bootstrap.php';
(object) $environmentFactory = new EnvironmentFactory;
(object) $environment = $environmentFactory->create(Env::settings()->environment);
(object) $overloadableServiceExceptionFactories = new FactoryOverloader(_a([
new DevelopmentServiceExceptionHandlerFactory,
new ProductionServiceExceptionHandlerFactory,
]));
/** @var HandleableServiceExceptionFactory */
(object) $serviceExceptionFactory = $overloadableServiceExceptionFactories->overload($environment);
(object) $application = new Application(
$serviceExceptionFactory->create()
);
$application->addService(
new DependenciesService(
new ProductionDependenciesContainerFactory,
new ValidDependencyTypes(
new GettableCollectionDecorator(
new ByFileGettableCollection(
new OriginalDependencyTypes,
new RequireFileReader(
new MemoryCache
)
),
new ByFileGettableCollection(
new AppDependencyTypes,
new RequireFileReader(
new MemoryCache
)
)
)
)
)
);
$application->addService(new MonitorService);
$application->addService(new ActionsService);
add_action('wp_loaded', function() use ($application) {
if (class_exists(WooCommerce::class)) {
$application->start();
}
}, 5);