Addon.php
1.25 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
<?php
declare(strict_types=1);
namespace ACP\Service;
use AC\Registerable;
use ACP\AddonFactory;
final class Addon implements Registerable
{
private $addons;
private $addon_factory;
public function __construct(array $addons, AddonFactory $addon_factory)
{
$this->addons = $addons;
$this->addon_factory = $addon_factory;
}
public function register(): void
{
$deactivate = [];
foreach ($this->addons as $addon) {
$filename = sprintf('%1$s%2$s/%1$s%2$s.php', 'ac-addon-', $addon);
if (is_plugin_active($filename)) {
$deactivate[] = $filename;
}
}
// Reload to prevent duplicate loading of functions and classes
if ($deactivate) {
deactivate_plugins($deactivate);
$protocol = is_ssl() ? 'https' : 'http';
$url = $protocol . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
wp_redirect($url);
exit;
}
foreach ($this->addons as $addon) {
if (apply_filters('acp/addon/' . $addon . '/active', true)) {
$this->addon_factory->create($addon)
->register();
}
}
}
}