Completed
Branch barista-prod (8f1757)
by
unknown
38:38 queued 29:41
created

AssetRequests::matchesCurrentRequest()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
nc 4
nop 0
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace EventEspresso\core\domain\entities\routing\handlers\shared;
4
5
use EE_Dependency_Map;
6
use EventEspresso\core\domain\services\assets\CoreAssetManager;
7
use EventEspresso\core\domain\services\assets\JqueryAssetManager;
8
use EventEspresso\core\domain\services\assets\ReactAssetManager;
9
use EventEspresso\core\services\assets\BaristaFactory;
10
use EventEspresso\core\services\assets\BaristaInterface;
11
use EventEspresso\core\services\loaders\LoaderInterface;
12
use EventEspresso\core\services\request\RequestInterface;
13
use EventEspresso\core\services\routing\Route;
14
15
/**
16
 * Class AssetRequests
17
 * loads for any type of request where asset managers are required
18
 *
19
 * @package EventEspresso\core\domain\entities\routing\handlers\shared
20
 * @author  Brent Christensen
21
 * @since   $VID:$
22
 */
23
class AssetRequests extends Route
24
{
25
26
    /**
27
     * @var BaristaFactory $barista_factory
28
     */
29
    protected $barista_factory;
30
31
32
    /**
33
     * AssetRequests constructor.
34
     *
35
     * @param EE_Dependency_Map                $dependency_map
36
     * @param LoaderInterface                  $loader
37
     * @param RequestInterface                 $request
38
     * @param BaristaFactory $barista_factory
39
     */
40
    public function __construct(
41
        EE_Dependency_Map $dependency_map,
42
        LoaderInterface $loader,
43
        RequestInterface $request,
44
        BaristaFactory $barista_factory
45
    ) {
46
        $this->barista_factory = $barista_factory;
47
        parent::__construct($dependency_map, $loader, $request);
48
    }
49
50
51
    /**
52
     * returns true if the current request matches this route
53
     *
54
     * @return bool
55
     * @since   $VID:$
56
     */
57
    public function matchesCurrentRequest()
58
    {
59
        return $this->request->isAdmin()
60
               || $this->request->isFrontend()
61
               || $this->request->isIframe()
62
               || $this->request->isWordPressApi();
63
    }
64
65
66
    /**
67
     * @since $VID:$
68
     */
69
    protected function registerDependencies()
70
    {
71
        $default_dependencies = [
72
            'EventEspresso\core\domain\Domain'                   => EE_Dependency_Map::load_from_cache,
73
            'EventEspresso\core\services\assets\AssetCollection' => EE_Dependency_Map::load_new_object,
74
            'EventEspresso\core\services\assets\Registry'        => EE_Dependency_Map::load_from_cache,
75
        ];
76
        $this->dependency_map->registerDependencies(JqueryAssetManager::class, $default_dependencies);
77
        $this->dependency_map->registerDependencies(ReactAssetManager::class, $default_dependencies);
78
        $this->dependency_map->registerDependencies(
79
            CoreAssetManager::class,
80
            [
81
                'EventEspresso\core\services\assets\AssetCollection' => EE_Dependency_Map::load_new_object,
82
                'EE_Currency_Config'                                 => EE_Dependency_Map::load_from_cache,
83
                'EE_Template_Config'                                 => EE_Dependency_Map::load_from_cache,
84
                'EventEspresso\core\domain\Domain'                   => EE_Dependency_Map::load_from_cache,
85
                'EventEspresso\core\services\assets\Registry'        => EE_Dependency_Map::load_from_cache,
86
            ]
87
        );
88
        $this->dependency_map->registerDependencies(
89
            'EventEspresso\core\services\editor\BlockRegistrationManager',
90
            [
91
                'EventEspresso\core\services\assets\BlockAssetManagerCollection'     => EE_Dependency_Map::load_from_cache,
92
                'EventEspresso\core\domain\entities\editor\BlockCollection'          => EE_Dependency_Map::load_from_cache,
93
                'EventEspresso\core\services\routing\RouteMatchSpecificationManager' => EE_Dependency_Map::load_from_cache,
94
                'EventEspresso\core\services\request\Request'                        => EE_Dependency_Map::load_from_cache,
95
            ]
96
        );
97
        $this->dependency_map->registerDependencies(
98
            'EventEspresso\core\domain\entities\editor\CoreBlocksAssetManager',
99
            [
100
                'EventEspresso\core\domain\Domain'                   => EE_Dependency_Map::load_from_cache,
101
                'EventEspresso\core\services\assets\AssetCollection' => EE_Dependency_Map::load_new_object,
102
                'EventEspresso\core\services\assets\Registry'        => EE_Dependency_Map::load_from_cache,
103
            ]
104
        );
105
        $this->dependency_map->registerDependencies(
106
            'EventEspresso\core\domain\services\blocks\EventAttendeesBlockRenderer',
107
            [
108
                'EventEspresso\core\domain\Domain' => EE_Dependency_Map::load_from_cache,
109
                'EEM_Attendee'                     => EE_Dependency_Map::load_from_cache,
110
            ]
111
        );
112
        $this->dependency_map->registerDependencies(
113
            'EventEspresso\core\domain\entities\editor\blocks\EventAttendees',
114
            [
115
                'EventEspresso\core\domain\entities\editor\CoreBlocksAssetManager'      => EE_Dependency_Map::load_from_cache,
116
                'EventEspresso\core\services\request\Request'                           => EE_Dependency_Map::load_from_cache,
117
                'EventEspresso\core\domain\services\blocks\EventAttendeesBlockRenderer' => EE_Dependency_Map::load_from_cache,
118
            ]
119
        );
120
        if (apply_filters('FHEE__load_Barista', true)) {
121
            $this->dependency_map->registerDependencies(
122
                'EventEspresso\core\services\assets\Barista',
123
                ['EventEspresso\core\services\assets\AssetManifest' => EE_Dependency_Map::load_from_cache]
124
            );
125
        }
126
    }
127
128
129
    /**
130
     * implements logic required to run during request
131
     *
132
     * @return bool
133
     * @since   $VID:$
134
     */
135
    protected function requestHandler()
136
    {
137
        if (apply_filters('FHEE__load_Barista', true)) {
138
            $barista = $this->barista_factory->create();
139
            if ($barista instanceof BaristaInterface) {
140
                $barista->initialize();
141
                $this->loader->getShared('EventEspresso\core\services\assets\Registry');
142
            }
143
        }
144
        $this->loader->getShared(JqueryAssetManager::class);
145
        $this->loader->getShared(CoreAssetManager::class);
146
        if ($this->canLoadBlocks()) {
147
            $this->loader->getShared(
148
                'EventEspresso\core\services\editor\BlockRegistrationManager'
149
            );
150
        }
151
        return true;
152
    }
153
154
155
    /**
156
     * Return whether blocks can be registered/loaded or not.
157
     *
158
     * @return bool
159
     * @since $VID:$
160
     */
161
    private function canLoadBlocks()
162
    {
163
        return apply_filters('FHEE__EE_System__canLoadBlocks', true)
164
               && function_exists('register_block_type')
165
               // don't load blocks if in the Divi page builder editor context
166
               // @see https://github.com/eventespresso/event-espresso-core/issues/814
167
               && ! $this->request->getRequestParam('et_fb', false);
168
    }
169
}
170