Completed
Branch FET/add-status-circle-componen... (87b160)
by
unknown
50:48 queued 42:38
created
core/services/formatters/Windows1252.php 1 patch
Indentation   +30 added lines, -30 removed lines patch added patch discarded remove patch
@@ -17,34 +17,34 @@
 block discarded – undo
17 17
 class Windows1252 extends FormatterBase
18 18
 {
19 19
 
20
-    /**
21
-     * Converts the string to windows-1252 encoding.
22
-     *
23
-     * @param string|int|float $input anything easily cast into a string
24
-     * @return string
25
-     */
26
-    public function format($input)
27
-    {
28
-        // in case an int or float etc was passed in
29
-        $input = (string) $input;
30
-        if (function_exists('iconv')) {
31
-            $input = iconv('utf-8', 'cp1252//TRANSLIT', $input);
32
-        } elseif (WP_DEBUG) {
33
-            trigger_error(
34
-                sprintf(
35
-                // @codingStandardsIgnoreStart
36
-                    esc_html__(
37
-                        '%1$s could not format the string "%2$s" because the function "%3$s" does not exist. Please verify PHP is installed with this function, see %4$s',
38
-                        'event_espresso'
39
-                    ),
40
-                    // @codingStandardsIgnoreEnd
41
-                    get_class($this),
42
-                    $input,
43
-                    'iconv',
44
-                    '<a href="http://php.net/manual/en/iconv.installation.php">http://php.net/manual/en/iconv.installation.php</a>'
45
-                )
46
-            );
47
-        }
48
-        return $input;
49
-    }
20
+	/**
21
+	 * Converts the string to windows-1252 encoding.
22
+	 *
23
+	 * @param string|int|float $input anything easily cast into a string
24
+	 * @return string
25
+	 */
26
+	public function format($input)
27
+	{
28
+		// in case an int or float etc was passed in
29
+		$input = (string) $input;
30
+		if (function_exists('iconv')) {
31
+			$input = iconv('utf-8', 'cp1252//TRANSLIT', $input);
32
+		} elseif (WP_DEBUG) {
33
+			trigger_error(
34
+				sprintf(
35
+				// @codingStandardsIgnoreStart
36
+					esc_html__(
37
+						'%1$s could not format the string "%2$s" because the function "%3$s" does not exist. Please verify PHP is installed with this function, see %4$s',
38
+						'event_espresso'
39
+					),
40
+					// @codingStandardsIgnoreEnd
41
+					get_class($this),
42
+					$input,
43
+					'iconv',
44
+					'<a href="http://php.net/manual/en/iconv.installation.php">http://php.net/manual/en/iconv.installation.php</a>'
45
+				)
46
+			);
47
+		}
48
+		return $input;
49
+	}
50 50
 }
Please login to merge, or discard this patch.
core/services/collections/CollectionDetails.php 2 patches
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -192,7 +192,7 @@  discard block
 block discarded – undo
192 192
      */
193 193
     protected function setCollectionInterface($collection_interface)
194 194
     {
195
-        if (! (interface_exists($collection_interface) || class_exists($collection_interface))) {
195
+        if ( ! (interface_exists($collection_interface) || class_exists($collection_interface))) {
196 196
             throw new InvalidInterfaceException($collection_interface);
197 197
         }
198 198
         $this->collection_interface = $collection_interface;
@@ -220,7 +220,7 @@  discard block
 block discarded – undo
220 220
      */
221 221
     protected function setCollectionName($collection_name)
222 222
     {
223
-        if (! is_string($collection_name)) {
223
+        if ( ! is_string($collection_name)) {
224 224
             throw new InvalidDataTypeException('$collection_name', $collection_name, 'string');
225 225
         }
226 226
         $this->collection_name = str_replace(
@@ -248,7 +248,7 @@  discard block
 block discarded – undo
248 248
      */
249 249
     protected function setIdentifierType($identifier_type)
250 250
     {
251
-        if (! ($identifier_type === CollectionDetails::ID_CLASS_NAME
251
+        if ( ! ($identifier_type === CollectionDetails::ID_CLASS_NAME
252 252
                || $identifier_type === CollectionDetails::ID_OBJECT_HASH
253 253
                || $identifier_type === CollectionDetails::ID_CALLBACK_METHOD
254 254
         )) {
@@ -278,7 +278,7 @@  discard block
 block discarded – undo
278 278
      */
279 279
     protected function setIdentifierCallback($identifier_callback = 'identifier')
280 280
     {
281
-        if (! is_string($identifier_callback)) {
281
+        if ( ! is_string($identifier_callback)) {
282 282
             throw new InvalidDataTypeException('$identifier_callback', $identifier_callback, 'string');
283 283
         }
284 284
         $this->identifier_callback = $identifier_callback;
@@ -308,7 +308,7 @@  discard block
 block discarded – undo
308 308
         $this->file_mask = ! empty($file_mask) ? $file_mask : '*.php';
309 309
         // we know our default is a string, so if it's not a string now,
310 310
         // then that means the incoming parameter was something else
311
-        if (! is_string($this->file_mask)) {
311
+        if ( ! is_string($this->file_mask)) {
312 312
             throw new InvalidDataTypeException('$file_mask', $this->file_mask, 'string');
313 313
         }
314 314
     }
@@ -333,7 +333,7 @@  discard block
 block discarded – undo
333 333
     public function setCollectionFQCNs($collection_FQCNs)
334 334
     {
335 335
         foreach ((array) $collection_FQCNs as $collection_FQCN) {
336
-            if (! empty($collection_FQCN)) {
336
+            if ( ! empty($collection_FQCN)) {
337 337
                 if (class_exists($collection_FQCN)) {
338 338
                     $this->collection_FQCNs[] = $collection_FQCN;
339 339
                 } else {
@@ -355,7 +355,7 @@  discard block
 block discarded – undo
355 355
      */
356 356
     protected function getFQCNsFromPartialNamespace($partial_FQCN)
357 357
     {
358
-        if (! $this->file_locator instanceof FqcnLocator) {
358
+        if ( ! $this->file_locator instanceof FqcnLocator) {
359 359
             $this->file_locator = new FqcnLocator();
360 360
         }
361 361
         $this->file_locator->locate($partial_FQCN);
@@ -381,8 +381,8 @@  discard block
 block discarded – undo
381 381
     public function setCollectionPaths($collection_paths)
382 382
     {
383 383
         foreach ((array) $collection_paths as $collection_path) {
384
-            if (! empty($collection_path)) {
385
-                if (! is_readable($collection_path)) {
384
+            if ( ! empty($collection_path)) {
385
+                if ( ! is_readable($collection_path)) {
386 386
                     throw new InvalidFilePathException($collection_path);
387 387
                 }
388 388
                 $this->collection_paths[] = $collection_path;
Please login to merge, or discard this patch.
Indentation   +347 added lines, -347 removed lines patch added patch discarded remove patch
@@ -43,351 +43,351 @@
 block discarded – undo
43 43
 class CollectionDetails implements CollectionDetailsInterface
44 44
 {
45 45
 
46
-    /**
47
-     * if $identifier_type is set to this,
48
-     * then the collection will use each object's spl_object_hash() as it's identifier
49
-     */
50
-    const ID_OBJECT_HASH = 'identifier-uses-spl-object-hash';
51
-
52
-    /**
53
-     * if $identifier_type is set to this,
54
-     * then the collection will use each object's class name as it's identifier
55
-     */
56
-    const ID_CLASS_NAME = 'identifier-uses-object-class-name';
57
-
58
-    /**
59
-     * if $identifier_type is set to this,
60
-     * then the collection will use the return value from a specified callback method on each object
61
-     */
62
-    const ID_CALLBACK_METHOD = 'identifier-uses-callback-method';
63
-
64
-    /**
65
-     * The interface used for controlling what gets added to the collection
66
-     *
67
-     * @var string $collection_interface
68
-     */
69
-    protected $collection_interface = '';
70
-
71
-    /**
72
-     * a unique name used to identify the collection in filter names
73
-     * supplied value is run through sanitize_title_with_dashes(),
74
-     * but then also converts dashes to underscores
75
-     *
76
-     * @var string $collection_name
77
-     */
78
-    protected $collection_name = '';
79
-
80
-    /**
81
-     * what the collection uses for the object identifier.
82
-     * corresponds to one of the class constants above.
83
-     * CollectionDetails::ID_OBJECT_HASH will use spl_object_hash( object ) for the identifier
84
-     * CollectionDetails::ID_CLASS_NAME will use get_class( object ) for the identifier
85
-     * CollectionDetails::ID_CALLBACK_METHOD will use a callback for the identifier
86
-     * defaults to using spl_object_hash() so that multiple objects of the same class can be added
87
-     *
88
-     * @var string $identifier_type
89
-     */
90
-    protected $identifier_type = CollectionDetails::ID_OBJECT_HASH;
91
-
92
-    /**
93
-     * the pattern applied to paths when searching for class files to add to the collection
94
-     * ie: "My_Awesome_*.class.php"
95
-     * defaults to "*.php"
96
-     *
97
-     * @var string $file_mask
98
-     */
99
-    protected $file_mask = '';
100
-
101
-    /**
102
-     * if the $identifier_type above is set to CollectionDetails::ID_CALLBACK_METHOD,
103
-     * then this specifies the method to use on each entity.
104
-     * If the callback method does not exist, then an exception will be thrown
105
-     *
106
-     * @var string $identifier_callback
107
-     */
108
-    protected $identifier_callback = '';
109
-
110
-    /**
111
-     * an array of Fully Qualified Class Names
112
-     *  for example:
113
-     *  $FQCNs = array(
114
-     *      '/Fully/Qualified/ClassNameA'
115
-     *      '/Fully/Qualified/Other/ClassNameB'
116
-     *  );
117
-     *
118
-     * @var array $collection_FQCNs
119
-     */
120
-    protected $collection_FQCNs = array();
121
-
122
-    /**
123
-     * an array of full server paths to folders containing files to be loaded into collection
124
-     *  for example:
125
-     *  $paths = array(
126
-     *      '/full/server/path/to/ClassNameA.ext.php' // for class ClassNameA
127
-     *      '/full/server/path/to/other/ClassNameB.php' // for class ClassNameB
128
-     *  );
129
-     *
130
-     * @var array $collection_paths
131
-     */
132
-    protected $collection_paths = array();
133
-
134
-    /**
135
-     * @var LocatorInterface $file_locator
136
-     */
137
-    protected $file_locator;
138
-
139
-
140
-    /**
141
-     * CollectionDetails constructor.
142
-     *
143
-     * @access public
144
-     * @param string           $collection_name
145
-     * @param string           $collection_interface
146
-     * @param array            $collection_FQCNs
147
-     * @param array            $collection_paths
148
-     * @param string           $file_mask
149
-     * @param string           $identifier_type
150
-     * @param string           $identifier_callback
151
-     * @param LocatorInterface $file_locator
152
-     * @throws CollectionDetailsException
153
-     */
154
-    public function __construct(
155
-        $collection_name,
156
-        $collection_interface,
157
-        array $collection_FQCNs = array(),
158
-        array $collection_paths = array(),
159
-        $file_mask = '',
160
-        $identifier_type = CollectionDetails::ID_OBJECT_HASH,
161
-        $identifier_callback = '',
162
-        LocatorInterface $file_locator = null
163
-    ) {
164
-        try {
165
-            $this->setCollectionName($collection_name);
166
-            $this->setCollectionInterface($collection_interface);
167
-            $this->setCollectionFQCNs($collection_FQCNs);
168
-            $this->setCollectionPaths($collection_paths);
169
-            $this->setFileMasks($file_mask);
170
-            $this->setIdentifierType($identifier_type);
171
-            $this->setIdentifierCallback($identifier_callback);
172
-            $this->file_locator = $file_locator;
173
-        } catch (Exception $exception) {
174
-            throw new CollectionDetailsException($exception);
175
-        }
176
-    }
177
-
178
-
179
-    /**
180
-     * @access public
181
-     * @return mixed
182
-     */
183
-    public function getCollectionInterface()
184
-    {
185
-        return $this->collection_interface;
186
-    }
187
-
188
-
189
-    /**
190
-     * @access protected
191
-     * @param string $collection_interface
192
-     * @throws \EventEspresso\core\exceptions\InvalidInterfaceException
193
-     */
194
-    protected function setCollectionInterface($collection_interface)
195
-    {
196
-        if (! (interface_exists($collection_interface) || class_exists($collection_interface))) {
197
-            throw new InvalidInterfaceException($collection_interface);
198
-        }
199
-        $this->collection_interface = $collection_interface;
200
-    }
201
-
202
-
203
-    /**
204
-     * the collection name will be used for creating dynamic filters
205
-     *
206
-     * @access public
207
-     * @return string
208
-     */
209
-    public function collectionName()
210
-    {
211
-        return $this->collection_name;
212
-    }
213
-
214
-
215
-    /**
216
-     * sanitizes collection name and converts spaces and dashes to underscores
217
-     *
218
-     * @access protected
219
-     * @param string $collection_name
220
-     * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
221
-     */
222
-    protected function setCollectionName($collection_name)
223
-    {
224
-        if (! is_string($collection_name)) {
225
-            throw new InvalidDataTypeException('$collection_name', $collection_name, 'string');
226
-        }
227
-        $this->collection_name = str_replace(
228
-            '-',
229
-            '_',
230
-            sanitize_title_with_dashes($collection_name, '', 'save')
231
-        );
232
-    }
233
-
234
-
235
-    /**
236
-     * @access public
237
-     * @return string
238
-     */
239
-    public function identifierType()
240
-    {
241
-        return $this->identifier_type;
242
-    }
243
-
244
-
245
-    /**
246
-     * @access protected
247
-     * @param string $identifier_type
248
-     * @throws InvalidIdentifierException
249
-     */
250
-    protected function setIdentifierType($identifier_type)
251
-    {
252
-        if (! ($identifier_type === CollectionDetails::ID_CLASS_NAME
253
-               || $identifier_type === CollectionDetails::ID_OBJECT_HASH
254
-               || $identifier_type === CollectionDetails::ID_CALLBACK_METHOD
255
-        )) {
256
-            throw new InvalidIdentifierException(
257
-                $identifier_type,
258
-                'CollectionDetails::ID_CLASS_NAME or CollectionDetails::ID_OBJECT_HASH or CollectionDetails::ID_CALLBACK_METHOD'
259
-            );
260
-        }
261
-        $this->identifier_type = $identifier_type;
262
-    }
263
-
264
-
265
-    /**
266
-     * @access public
267
-     * @return string
268
-     */
269
-    public function identifierCallback()
270
-    {
271
-        return $this->identifier_callback;
272
-    }
273
-
274
-
275
-    /**
276
-     * @access protected
277
-     * @param string $identifier_callback
278
-     * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
279
-     */
280
-    protected function setIdentifierCallback($identifier_callback = 'identifier')
281
-    {
282
-        if (! is_string($identifier_callback)) {
283
-            throw new InvalidDataTypeException('$identifier_callback', $identifier_callback, 'string');
284
-        }
285
-        $this->identifier_callback = $identifier_callback;
286
-    }
287
-
288
-
289
-    /**
290
-     * @access public
291
-     * @return string
292
-     */
293
-    public function getFileMask()
294
-    {
295
-        return $this->file_mask;
296
-    }
297
-
298
-
299
-    /**
300
-     * sets the file mask which is then used to filter what files get loaded
301
-     * when searching for classes to add to the collection. Defaults to '*.php'
302
-     *
303
-     * @access protected
304
-     * @param string $file_mask
305
-     * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
306
-     */
307
-    protected function setFileMasks($file_mask)
308
-    {
309
-        $this->file_mask = ! empty($file_mask) ? $file_mask : '*.php';
310
-        // we know our default is a string, so if it's not a string now,
311
-        // then that means the incoming parameter was something else
312
-        if (! is_string($this->file_mask)) {
313
-            throw new InvalidDataTypeException('$file_mask', $this->file_mask, 'string');
314
-        }
315
-    }
316
-
317
-
318
-    /**
319
-     * @access public
320
-     * @return array
321
-     */
322
-    public function getCollectionFQCNs()
323
-    {
324
-        return $this->collection_FQCNs;
325
-    }
326
-
327
-
328
-    /**
329
-     * @access public
330
-     * @param string|array $collection_FQCNs
331
-     * @throws \EventEspresso\core\exceptions\InvalidClassException
332
-     * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
333
-     */
334
-    public function setCollectionFQCNs($collection_FQCNs)
335
-    {
336
-        foreach ((array) $collection_FQCNs as $collection_FQCN) {
337
-            if (! empty($collection_FQCN)) {
338
-                if (class_exists($collection_FQCN)) {
339
-                    $this->collection_FQCNs[] = $collection_FQCN;
340
-                } else {
341
-                    foreach ($this->getFQCNsFromPartialNamespace($collection_FQCN) as $FQCN) {
342
-                        $this->collection_FQCNs[] = $FQCN;
343
-                    }
344
-                }
345
-            }
346
-        }
347
-    }
348
-
349
-
350
-    /**
351
-     * @access protected
352
-     * @param  string $partial_FQCN
353
-     * @return array
354
-     * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
355
-     * @throws \EventEspresso\core\exceptions\InvalidClassException
356
-     */
357
-    protected function getFQCNsFromPartialNamespace($partial_FQCN)
358
-    {
359
-        if (! $this->file_locator instanceof FqcnLocator) {
360
-            $this->file_locator = new FqcnLocator();
361
-        }
362
-        $this->file_locator->locate($partial_FQCN);
363
-        return $this->file_locator->getFQCNs();
364
-    }
365
-
366
-
367
-    /**
368
-     * @access public
369
-     * @return array
370
-     */
371
-    public function getCollectionPaths()
372
-    {
373
-        return $this->collection_paths;
374
-    }
375
-
376
-
377
-    /**
378
-     * @access public
379
-     * @param string|array $collection_paths
380
-     * @throws \EventEspresso\core\exceptions\InvalidFilePathException
381
-     */
382
-    public function setCollectionPaths($collection_paths)
383
-    {
384
-        foreach ((array) $collection_paths as $collection_path) {
385
-            if (! empty($collection_path)) {
386
-                if (! is_readable($collection_path)) {
387
-                    throw new InvalidFilePathException($collection_path);
388
-                }
389
-                $this->collection_paths[] = $collection_path;
390
-            }
391
-        }
392
-    }
46
+	/**
47
+	 * if $identifier_type is set to this,
48
+	 * then the collection will use each object's spl_object_hash() as it's identifier
49
+	 */
50
+	const ID_OBJECT_HASH = 'identifier-uses-spl-object-hash';
51
+
52
+	/**
53
+	 * if $identifier_type is set to this,
54
+	 * then the collection will use each object's class name as it's identifier
55
+	 */
56
+	const ID_CLASS_NAME = 'identifier-uses-object-class-name';
57
+
58
+	/**
59
+	 * if $identifier_type is set to this,
60
+	 * then the collection will use the return value from a specified callback method on each object
61
+	 */
62
+	const ID_CALLBACK_METHOD = 'identifier-uses-callback-method';
63
+
64
+	/**
65
+	 * The interface used for controlling what gets added to the collection
66
+	 *
67
+	 * @var string $collection_interface
68
+	 */
69
+	protected $collection_interface = '';
70
+
71
+	/**
72
+	 * a unique name used to identify the collection in filter names
73
+	 * supplied value is run through sanitize_title_with_dashes(),
74
+	 * but then also converts dashes to underscores
75
+	 *
76
+	 * @var string $collection_name
77
+	 */
78
+	protected $collection_name = '';
79
+
80
+	/**
81
+	 * what the collection uses for the object identifier.
82
+	 * corresponds to one of the class constants above.
83
+	 * CollectionDetails::ID_OBJECT_HASH will use spl_object_hash( object ) for the identifier
84
+	 * CollectionDetails::ID_CLASS_NAME will use get_class( object ) for the identifier
85
+	 * CollectionDetails::ID_CALLBACK_METHOD will use a callback for the identifier
86
+	 * defaults to using spl_object_hash() so that multiple objects of the same class can be added
87
+	 *
88
+	 * @var string $identifier_type
89
+	 */
90
+	protected $identifier_type = CollectionDetails::ID_OBJECT_HASH;
91
+
92
+	/**
93
+	 * the pattern applied to paths when searching for class files to add to the collection
94
+	 * ie: "My_Awesome_*.class.php"
95
+	 * defaults to "*.php"
96
+	 *
97
+	 * @var string $file_mask
98
+	 */
99
+	protected $file_mask = '';
100
+
101
+	/**
102
+	 * if the $identifier_type above is set to CollectionDetails::ID_CALLBACK_METHOD,
103
+	 * then this specifies the method to use on each entity.
104
+	 * If the callback method does not exist, then an exception will be thrown
105
+	 *
106
+	 * @var string $identifier_callback
107
+	 */
108
+	protected $identifier_callback = '';
109
+
110
+	/**
111
+	 * an array of Fully Qualified Class Names
112
+	 *  for example:
113
+	 *  $FQCNs = array(
114
+	 *      '/Fully/Qualified/ClassNameA'
115
+	 *      '/Fully/Qualified/Other/ClassNameB'
116
+	 *  );
117
+	 *
118
+	 * @var array $collection_FQCNs
119
+	 */
120
+	protected $collection_FQCNs = array();
121
+
122
+	/**
123
+	 * an array of full server paths to folders containing files to be loaded into collection
124
+	 *  for example:
125
+	 *  $paths = array(
126
+	 *      '/full/server/path/to/ClassNameA.ext.php' // for class ClassNameA
127
+	 *      '/full/server/path/to/other/ClassNameB.php' // for class ClassNameB
128
+	 *  );
129
+	 *
130
+	 * @var array $collection_paths
131
+	 */
132
+	protected $collection_paths = array();
133
+
134
+	/**
135
+	 * @var LocatorInterface $file_locator
136
+	 */
137
+	protected $file_locator;
138
+
139
+
140
+	/**
141
+	 * CollectionDetails constructor.
142
+	 *
143
+	 * @access public
144
+	 * @param string           $collection_name
145
+	 * @param string           $collection_interface
146
+	 * @param array            $collection_FQCNs
147
+	 * @param array            $collection_paths
148
+	 * @param string           $file_mask
149
+	 * @param string           $identifier_type
150
+	 * @param string           $identifier_callback
151
+	 * @param LocatorInterface $file_locator
152
+	 * @throws CollectionDetailsException
153
+	 */
154
+	public function __construct(
155
+		$collection_name,
156
+		$collection_interface,
157
+		array $collection_FQCNs = array(),
158
+		array $collection_paths = array(),
159
+		$file_mask = '',
160
+		$identifier_type = CollectionDetails::ID_OBJECT_HASH,
161
+		$identifier_callback = '',
162
+		LocatorInterface $file_locator = null
163
+	) {
164
+		try {
165
+			$this->setCollectionName($collection_name);
166
+			$this->setCollectionInterface($collection_interface);
167
+			$this->setCollectionFQCNs($collection_FQCNs);
168
+			$this->setCollectionPaths($collection_paths);
169
+			$this->setFileMasks($file_mask);
170
+			$this->setIdentifierType($identifier_type);
171
+			$this->setIdentifierCallback($identifier_callback);
172
+			$this->file_locator = $file_locator;
173
+		} catch (Exception $exception) {
174
+			throw new CollectionDetailsException($exception);
175
+		}
176
+	}
177
+
178
+
179
+	/**
180
+	 * @access public
181
+	 * @return mixed
182
+	 */
183
+	public function getCollectionInterface()
184
+	{
185
+		return $this->collection_interface;
186
+	}
187
+
188
+
189
+	/**
190
+	 * @access protected
191
+	 * @param string $collection_interface
192
+	 * @throws \EventEspresso\core\exceptions\InvalidInterfaceException
193
+	 */
194
+	protected function setCollectionInterface($collection_interface)
195
+	{
196
+		if (! (interface_exists($collection_interface) || class_exists($collection_interface))) {
197
+			throw new InvalidInterfaceException($collection_interface);
198
+		}
199
+		$this->collection_interface = $collection_interface;
200
+	}
201
+
202
+
203
+	/**
204
+	 * the collection name will be used for creating dynamic filters
205
+	 *
206
+	 * @access public
207
+	 * @return string
208
+	 */
209
+	public function collectionName()
210
+	{
211
+		return $this->collection_name;
212
+	}
213
+
214
+
215
+	/**
216
+	 * sanitizes collection name and converts spaces and dashes to underscores
217
+	 *
218
+	 * @access protected
219
+	 * @param string $collection_name
220
+	 * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
221
+	 */
222
+	protected function setCollectionName($collection_name)
223
+	{
224
+		if (! is_string($collection_name)) {
225
+			throw new InvalidDataTypeException('$collection_name', $collection_name, 'string');
226
+		}
227
+		$this->collection_name = str_replace(
228
+			'-',
229
+			'_',
230
+			sanitize_title_with_dashes($collection_name, '', 'save')
231
+		);
232
+	}
233
+
234
+
235
+	/**
236
+	 * @access public
237
+	 * @return string
238
+	 */
239
+	public function identifierType()
240
+	{
241
+		return $this->identifier_type;
242
+	}
243
+
244
+
245
+	/**
246
+	 * @access protected
247
+	 * @param string $identifier_type
248
+	 * @throws InvalidIdentifierException
249
+	 */
250
+	protected function setIdentifierType($identifier_type)
251
+	{
252
+		if (! ($identifier_type === CollectionDetails::ID_CLASS_NAME
253
+			   || $identifier_type === CollectionDetails::ID_OBJECT_HASH
254
+			   || $identifier_type === CollectionDetails::ID_CALLBACK_METHOD
255
+		)) {
256
+			throw new InvalidIdentifierException(
257
+				$identifier_type,
258
+				'CollectionDetails::ID_CLASS_NAME or CollectionDetails::ID_OBJECT_HASH or CollectionDetails::ID_CALLBACK_METHOD'
259
+			);
260
+		}
261
+		$this->identifier_type = $identifier_type;
262
+	}
263
+
264
+
265
+	/**
266
+	 * @access public
267
+	 * @return string
268
+	 */
269
+	public function identifierCallback()
270
+	{
271
+		return $this->identifier_callback;
272
+	}
273
+
274
+
275
+	/**
276
+	 * @access protected
277
+	 * @param string $identifier_callback
278
+	 * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
279
+	 */
280
+	protected function setIdentifierCallback($identifier_callback = 'identifier')
281
+	{
282
+		if (! is_string($identifier_callback)) {
283
+			throw new InvalidDataTypeException('$identifier_callback', $identifier_callback, 'string');
284
+		}
285
+		$this->identifier_callback = $identifier_callback;
286
+	}
287
+
288
+
289
+	/**
290
+	 * @access public
291
+	 * @return string
292
+	 */
293
+	public function getFileMask()
294
+	{
295
+		return $this->file_mask;
296
+	}
297
+
298
+
299
+	/**
300
+	 * sets the file mask which is then used to filter what files get loaded
301
+	 * when searching for classes to add to the collection. Defaults to '*.php'
302
+	 *
303
+	 * @access protected
304
+	 * @param string $file_mask
305
+	 * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
306
+	 */
307
+	protected function setFileMasks($file_mask)
308
+	{
309
+		$this->file_mask = ! empty($file_mask) ? $file_mask : '*.php';
310
+		// we know our default is a string, so if it's not a string now,
311
+		// then that means the incoming parameter was something else
312
+		if (! is_string($this->file_mask)) {
313
+			throw new InvalidDataTypeException('$file_mask', $this->file_mask, 'string');
314
+		}
315
+	}
316
+
317
+
318
+	/**
319
+	 * @access public
320
+	 * @return array
321
+	 */
322
+	public function getCollectionFQCNs()
323
+	{
324
+		return $this->collection_FQCNs;
325
+	}
326
+
327
+
328
+	/**
329
+	 * @access public
330
+	 * @param string|array $collection_FQCNs
331
+	 * @throws \EventEspresso\core\exceptions\InvalidClassException
332
+	 * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
333
+	 */
334
+	public function setCollectionFQCNs($collection_FQCNs)
335
+	{
336
+		foreach ((array) $collection_FQCNs as $collection_FQCN) {
337
+			if (! empty($collection_FQCN)) {
338
+				if (class_exists($collection_FQCN)) {
339
+					$this->collection_FQCNs[] = $collection_FQCN;
340
+				} else {
341
+					foreach ($this->getFQCNsFromPartialNamespace($collection_FQCN) as $FQCN) {
342
+						$this->collection_FQCNs[] = $FQCN;
343
+					}
344
+				}
345
+			}
346
+		}
347
+	}
348
+
349
+
350
+	/**
351
+	 * @access protected
352
+	 * @param  string $partial_FQCN
353
+	 * @return array
354
+	 * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
355
+	 * @throws \EventEspresso\core\exceptions\InvalidClassException
356
+	 */
357
+	protected function getFQCNsFromPartialNamespace($partial_FQCN)
358
+	{
359
+		if (! $this->file_locator instanceof FqcnLocator) {
360
+			$this->file_locator = new FqcnLocator();
361
+		}
362
+		$this->file_locator->locate($partial_FQCN);
363
+		return $this->file_locator->getFQCNs();
364
+	}
365
+
366
+
367
+	/**
368
+	 * @access public
369
+	 * @return array
370
+	 */
371
+	public function getCollectionPaths()
372
+	{
373
+		return $this->collection_paths;
374
+	}
375
+
376
+
377
+	/**
378
+	 * @access public
379
+	 * @param string|array $collection_paths
380
+	 * @throws \EventEspresso\core\exceptions\InvalidFilePathException
381
+	 */
382
+	public function setCollectionPaths($collection_paths)
383
+	{
384
+		foreach ((array) $collection_paths as $collection_path) {
385
+			if (! empty($collection_path)) {
386
+				if (! is_readable($collection_path)) {
387
+					throw new InvalidFilePathException($collection_path);
388
+				}
389
+				$this->collection_paths[] = $collection_path;
390
+			}
391
+		}
392
+	}
393 393
 }
Please login to merge, or discard this patch.
core/services/licensing/LicenseService.php 2 patches
Indentation   +90 added lines, -90 removed lines patch added patch discarded remove patch
@@ -15,94 +15,94 @@
 block discarded – undo
15 15
  */
16 16
 class LicenseService
17 17
 {
18
-    /**
19
-     * @var Config
20
-     */
21
-    private $config;
22
-
23
-
24
-    /**
25
-     * @var Stats
26
-     */
27
-    private $stats_collection;
28
-
29
-    public function __construct(Stats $stats_collection, Config $config)
30
-    {
31
-        $this->config = $config;
32
-        $this->stats_collection = $stats_collection;
33
-        $this->loadPueClient();
34
-    }
35
-
36
-    private function loadPueClient()
37
-    {
38
-        // PUE Auto Upgrades stuff
39
-        if (is_readable(EE_THIRD_PARTY . 'pue/pue-client.php')) { // include the file
40
-            require_once(EE_THIRD_PARTY . 'pue/pue-client.php');
41
-
42
-            // $options needs to be an array with the included keys as listed.
43
-            $options = array(
44
-                // 'optionName' => '', //(optional) - used as the reference for saving update information in the
45
-                // clients options table.  Will be automatically set if left blank.
46
-                'apikey'                => $this->config->siteLicenseKey(),
47
-                // (required), you will need to obtain the apikey that the client gets from your site and
48
-                // then saves in their sites options table (see 'getting an api-key' below)
49
-                'lang_domain'           => $this->config->i18nDomain(),
50
-                // (optional) - put here whatever reference you are using for the localization of your plugin (if it's
51
-                // localized).  That way strings in this file will be included in the translation for your plugin.
52
-                'checkPeriod'           => $this->config->checkPeriod(),
53
-                // (optional) - use this parameter to indicate how often you want the client's install to ping your
54
-                // server for update checks.  The integer indicates hours.  If you don't include this parameter it will
55
-                // default to 12 hours.
56
-                'option_key'            => $this->config->optionKey(),
57
-                // this is what is used to reference the api_key in your plugin options.  PUE uses this to trigger
58
-                // updating your information message whenever this option_key is modified.
59
-                'options_page_slug'     => $this->config->optionsPageSlug(),
60
-                'plugin_basename'       => EE_PLUGIN_BASENAME,
61
-                'use_wp_update'         => true,
62
-                // if TRUE then you want FREE versions of the plugin to be updated from WP
63
-                'extra_stats'           => $this->stats_collection->statsCallback(),
64
-                'turn_on_notices_saved' => true,
65
-            );
66
-            // initiate the class and start the plugin update engine!
67
-            new PluginUpdateEngineChecker(
68
-                $this->config->hostServerUrl(),
69
-                $this->config->pluginSlug(),
70
-                $options
71
-            );
72
-        }
73
-    }
74
-
75
-
76
-    /**
77
-     * This is a handy helper method for retrieving whether there is an update available for the given plugin.
78
-     *
79
-     * @param  string $basename Use the equivalent result from plugin_basename() for this param as WP uses that to
80
-     *                          identify plugins. Defaults to core update
81
-     * @return boolean           True if update available, false if not.
82
-     */
83
-    public static function isUpdateAvailable($basename = '')
84
-    {
85
-        $basename = ! empty($basename) ? $basename : EE_PLUGIN_BASENAME;
86
-
87
-        $update = false;
88
-
89
-        // should take "event-espresso-core/espresso.php" and change to "/event-espresso-core"
90
-        $folder = DS . dirname($basename);
91
-
92
-        $plugins = get_plugins($folder);
93
-        $current = get_site_transient('update_plugins');
94
-
95
-        foreach ((array) $plugins as $plugin_file => $plugin_data) {
96
-            if (isset($current->response['plugin_file'])) {
97
-                $update = true;
98
-            }
99
-        }
100
-
101
-        // it's possible that there is an update but an invalid site-license-key is in use
102
-        if (get_site_option('pue_json_error_' . $basename)) {
103
-            $update = true;
104
-        }
105
-
106
-        return $update;
107
-    }
18
+	/**
19
+	 * @var Config
20
+	 */
21
+	private $config;
22
+
23
+
24
+	/**
25
+	 * @var Stats
26
+	 */
27
+	private $stats_collection;
28
+
29
+	public function __construct(Stats $stats_collection, Config $config)
30
+	{
31
+		$this->config = $config;
32
+		$this->stats_collection = $stats_collection;
33
+		$this->loadPueClient();
34
+	}
35
+
36
+	private function loadPueClient()
37
+	{
38
+		// PUE Auto Upgrades stuff
39
+		if (is_readable(EE_THIRD_PARTY . 'pue/pue-client.php')) { // include the file
40
+			require_once(EE_THIRD_PARTY . 'pue/pue-client.php');
41
+
42
+			// $options needs to be an array with the included keys as listed.
43
+			$options = array(
44
+				// 'optionName' => '', //(optional) - used as the reference for saving update information in the
45
+				// clients options table.  Will be automatically set if left blank.
46
+				'apikey'                => $this->config->siteLicenseKey(),
47
+				// (required), you will need to obtain the apikey that the client gets from your site and
48
+				// then saves in their sites options table (see 'getting an api-key' below)
49
+				'lang_domain'           => $this->config->i18nDomain(),
50
+				// (optional) - put here whatever reference you are using for the localization of your plugin (if it's
51
+				// localized).  That way strings in this file will be included in the translation for your plugin.
52
+				'checkPeriod'           => $this->config->checkPeriod(),
53
+				// (optional) - use this parameter to indicate how often you want the client's install to ping your
54
+				// server for update checks.  The integer indicates hours.  If you don't include this parameter it will
55
+				// default to 12 hours.
56
+				'option_key'            => $this->config->optionKey(),
57
+				// this is what is used to reference the api_key in your plugin options.  PUE uses this to trigger
58
+				// updating your information message whenever this option_key is modified.
59
+				'options_page_slug'     => $this->config->optionsPageSlug(),
60
+				'plugin_basename'       => EE_PLUGIN_BASENAME,
61
+				'use_wp_update'         => true,
62
+				// if TRUE then you want FREE versions of the plugin to be updated from WP
63
+				'extra_stats'           => $this->stats_collection->statsCallback(),
64
+				'turn_on_notices_saved' => true,
65
+			);
66
+			// initiate the class and start the plugin update engine!
67
+			new PluginUpdateEngineChecker(
68
+				$this->config->hostServerUrl(),
69
+				$this->config->pluginSlug(),
70
+				$options
71
+			);
72
+		}
73
+	}
74
+
75
+
76
+	/**
77
+	 * This is a handy helper method for retrieving whether there is an update available for the given plugin.
78
+	 *
79
+	 * @param  string $basename Use the equivalent result from plugin_basename() for this param as WP uses that to
80
+	 *                          identify plugins. Defaults to core update
81
+	 * @return boolean           True if update available, false if not.
82
+	 */
83
+	public static function isUpdateAvailable($basename = '')
84
+	{
85
+		$basename = ! empty($basename) ? $basename : EE_PLUGIN_BASENAME;
86
+
87
+		$update = false;
88
+
89
+		// should take "event-espresso-core/espresso.php" and change to "/event-espresso-core"
90
+		$folder = DS . dirname($basename);
91
+
92
+		$plugins = get_plugins($folder);
93
+		$current = get_site_transient('update_plugins');
94
+
95
+		foreach ((array) $plugins as $plugin_file => $plugin_data) {
96
+			if (isset($current->response['plugin_file'])) {
97
+				$update = true;
98
+			}
99
+		}
100
+
101
+		// it's possible that there is an update but an invalid site-license-key is in use
102
+		if (get_site_option('pue_json_error_' . $basename)) {
103
+			$update = true;
104
+		}
105
+
106
+		return $update;
107
+	}
108 108
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -36,8 +36,8 @@  discard block
 block discarded – undo
36 36
     private function loadPueClient()
37 37
     {
38 38
         // PUE Auto Upgrades stuff
39
-        if (is_readable(EE_THIRD_PARTY . 'pue/pue-client.php')) { // include the file
40
-            require_once(EE_THIRD_PARTY . 'pue/pue-client.php');
39
+        if (is_readable(EE_THIRD_PARTY.'pue/pue-client.php')) { // include the file
40
+            require_once(EE_THIRD_PARTY.'pue/pue-client.php');
41 41
 
42 42
             // $options needs to be an array with the included keys as listed.
43 43
             $options = array(
@@ -87,7 +87,7 @@  discard block
 block discarded – undo
87 87
         $update = false;
88 88
 
89 89
         // should take "event-espresso-core/espresso.php" and change to "/event-espresso-core"
90
-        $folder = DS . dirname($basename);
90
+        $folder = DS.dirname($basename);
91 91
 
92 92
         $plugins = get_plugins($folder);
93 93
         $current = get_site_transient('update_plugins');
@@ -99,7 +99,7 @@  discard block
 block discarded – undo
99 99
         }
100 100
 
101 101
         // it's possible that there is an update but an invalid site-license-key is in use
102
-        if (get_site_option('pue_json_error_' . $basename)) {
102
+        if (get_site_option('pue_json_error_'.$basename)) {
103 103
             $update = true;
104 104
         }
105 105
 
Please login to merge, or discard this patch.
core/services/request/Request.php 3 patches
Spacing   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -163,7 +163,7 @@  discard block
 block discarded – undo
163 163
             || ($key === 'ee' && empty($this->request['ee']))
164 164
             || ($key === 'ee' && ! empty($this->request['ee']) && $override_ee)
165 165
         ) {
166
-            $this->request[ $key ] = $value;
166
+            $this->request[$key] = $value;
167 167
         }
168 168
     }
169 169
 
@@ -254,10 +254,10 @@  discard block
 block discarded – undo
254 254
             preg_quote($pattern, '/')
255 255
         );
256 256
         foreach ($request_params as $key => $request_param) {
257
-            if (preg_match('/^' . $pattern . '$/is', $key)) {
257
+            if (preg_match('/^'.$pattern.'$/is', $key)) {
258 258
                 // return value for request param
259 259
                 if ($return === 'value') {
260
-                    return $request_params[ $key ];
260
+                    return $request_params[$key];
261 261
                 }
262 262
                 // or actual key or true just to indicate it was found
263 263
                 return $return === 'key' ? $key : true;
@@ -314,29 +314,29 @@  discard block
 block discarded – undo
314 314
                 $key = $real_key ? $real_key : $key;
315 315
             }
316 316
             // check if top level key exists
317
-            if (isset($request_params[ $key ])) {
317
+            if (isset($request_params[$key])) {
318 318
                 // build a new key to pass along like: 'second[third]'
319 319
                 // or just 'second' depending on depth of keys
320 320
                 $key_string = array_shift($keys);
321
-                if (! empty($keys)) {
322
-                    $key_string .= '[' . implode('][', $keys) . ']';
321
+                if ( ! empty($keys)) {
322
+                    $key_string .= '['.implode('][', $keys).']';
323 323
                 }
324 324
                 return $this->requestParameterDrillDown(
325 325
                     $key_string,
326 326
                     $default,
327 327
                     $callback,
328
-                    $request_params[ $key ]
328
+                    $request_params[$key]
329 329
                 );
330 330
             }
331 331
         }
332 332
         if ($callback === 'is_set') {
333
-            return isset($request_params[ $key ]);
333
+            return isset($request_params[$key]);
334 334
         }
335 335
         if ($callback === 'match') {
336 336
             return $this->match($key, $request_params, $default);
337 337
         }
338
-        return isset($request_params[ $key ])
339
-            ? $request_params[ $key ]
338
+        return isset($request_params[$key])
339
+            ? $request_params[$key]
340 340
             : $default;
341 341
     }
342 342
 
@@ -349,9 +349,9 @@  discard block
 block discarded – undo
349 349
      */
350 350
     public function unSetRequestParam($key, $unset_from_global_too = false)
351 351
     {
352
-        unset($this->request[ $key ]);
352
+        unset($this->request[$key]);
353 353
         if ($unset_from_global_too) {
354
-            unset($_REQUEST[ $key ]);
354
+            unset($_REQUEST[$key]);
355 355
         }
356 356
     }
357 357
 
@@ -385,8 +385,8 @@  discard block
 block discarded – undo
385 385
             'REMOTE_ADDR',
386 386
         );
387 387
         foreach ($server_keys as $key) {
388
-            if (isset($this->server[ $key ])) {
389
-                foreach (array_map('trim', explode(',', $this->server[ $key ])) as $ip) {
388
+            if (isset($this->server[$key])) {
389
+                foreach (array_map('trim', explode(',', $this->server[$key])) as $ip) {
390 390
                     if ($ip === '127.0.0.1' || filter_var($ip, FILTER_VALIDATE_IP) !== false) {
391 391
                         $visitor_ip = $ip;
392 392
                     }
Please login to merge, or discard this patch.
Doc Comments   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -174,7 +174,7 @@  discard block
 block discarded – undo
174 174
      *
175 175
      * @param       $key
176 176
      * @param null  $default
177
-     * @return mixed
177
+     * @return integer
178 178
      */
179 179
     public function getRequestParam($key, $default = null)
180 180
     {
@@ -287,7 +287,7 @@  discard block
 block discarded – undo
287 287
      * would return true if default parameters were set
288 288
      *
289 289
      * @param string $callback
290
-     * @param        $key
290
+     * @param        string $key
291 291
      * @param null   $default
292 292
      * @param array  $request_params
293 293
      * @return bool|mixed|null
Please login to merge, or discard this patch.
Indentation   +636 added lines, -636 removed lines patch added patch discarded remove patch
@@ -17,640 +17,640 @@
 block discarded – undo
17 17
 class Request implements InterminableInterface, RequestInterface, ReservedInstanceInterface
18 18
 {
19 19
 
20
-    /**
21
-     * $_GET parameters
22
-     *
23
-     * @var array $get
24
-     */
25
-    private $get;
26
-
27
-    /**
28
-     * $_POST parameters
29
-     *
30
-     * @var array $post
31
-     */
32
-    private $post;
33
-
34
-    /**
35
-     * $_COOKIE parameters
36
-     *
37
-     * @var array $cookie
38
-     */
39
-    private $cookie;
40
-
41
-    /**
42
-     * $_SERVER parameters
43
-     *
44
-     * @var array $server
45
-     */
46
-    private $server;
47
-
48
-    /**
49
-     * $_FILES parameters
50
-     *
51
-     * @var array $files
52
-     */
53
-    private $files;
54
-
55
-    /**
56
-     * $_REQUEST parameters
57
-     *
58
-     * @var array $request
59
-     */
60
-    private $request;
61
-
62
-    /**
63
-     * @var RequestTypeContextCheckerInterface
64
-     */
65
-    private $request_type;
66
-
67
-    /**
68
-     * IP address for request
69
-     *
70
-     * @var string $ip_address
71
-     */
72
-    private $ip_address;
73
-
74
-    /**
75
-     * @var string $user_agent
76
-     */
77
-    private $user_agent;
78
-
79
-    /**
80
-     * true if current user appears to be some kind of bot
81
-     *
82
-     * @var bool $is_bot
83
-     */
84
-    private $is_bot;
85
-
86
-
87
-    /**
88
-     * @param array $get
89
-     * @param array $post
90
-     * @param array $cookie
91
-     * @param array $server
92
-     * @param array $files
93
-     */
94
-    public function __construct(array $get, array $post, array $cookie, array $server, array $files = array())
95
-    {
96
-        // grab request vars
97
-        $this->get = $get;
98
-        $this->post = $post;
99
-        $this->cookie = $cookie;
100
-        $this->server = $server;
101
-        $this->files = $files;
102
-        $this->request = array_merge($this->get, $this->post);
103
-        $this->ip_address = $this->visitorIp();
104
-    }
105
-
106
-
107
-    /**
108
-     * @param RequestTypeContextCheckerInterface $type
109
-     */
110
-    public function setRequestTypeContextChecker(RequestTypeContextCheckerInterface $type)
111
-    {
112
-        $this->request_type = $type;
113
-    }
114
-
115
-
116
-    /**
117
-     * @return array
118
-     */
119
-    public function getParams()
120
-    {
121
-        return $this->get;
122
-    }
123
-
124
-
125
-    /**
126
-     * @return array
127
-     */
128
-    public function postParams()
129
-    {
130
-        return $this->post;
131
-    }
132
-
133
-
134
-    /**
135
-     * @return array
136
-     */
137
-    public function cookieParams()
138
-    {
139
-        return $this->cookie;
140
-    }
141
-
142
-
143
-    /**
144
-     * @return array
145
-     */
146
-    public function serverParams()
147
-    {
148
-        return $this->server;
149
-    }
150
-
151
-
152
-    /**
153
-     * @return array
154
-     */
155
-    public function filesParams()
156
-    {
157
-        return $this->files;
158
-    }
159
-
160
-
161
-    /**
162
-     * returns contents of $_REQUEST
163
-     *
164
-     * @return array
165
-     */
166
-    public function requestParams()
167
-    {
168
-        return $this->request;
169
-    }
170
-
171
-
172
-    /**
173
-     * @param      $key
174
-     * @param      $value
175
-     * @param bool $override_ee
176
-     * @return    void
177
-     */
178
-    public function setRequestParam($key, $value, $override_ee = false)
179
-    {
180
-        // don't allow "ee" to be overwritten unless explicitly instructed to do so
181
-        if ($key !== 'ee'
182
-            || ($key === 'ee' && empty($this->request['ee']))
183
-            || ($key === 'ee' && ! empty($this->request['ee']) && $override_ee)
184
-        ) {
185
-            $this->request[ $key ] = $value;
186
-        }
187
-    }
188
-
189
-
190
-    /**
191
-     * returns   the value for a request param if the given key exists
192
-     *
193
-     * @param       $key
194
-     * @param null  $default
195
-     * @return mixed
196
-     */
197
-    public function getRequestParam($key, $default = null)
198
-    {
199
-        return $this->requestParameterDrillDown($key, $default, 'get');
200
-    }
201
-
202
-
203
-    /**
204
-     * check if param exists
205
-     *
206
-     * @param       $key
207
-     * @return bool
208
-     */
209
-    public function requestParamIsSet($key)
210
-    {
211
-        return $this->requestParameterDrillDown($key);
212
-    }
213
-
214
-
215
-    /**
216
-     * check if a request parameter exists whose key that matches the supplied wildcard pattern
217
-     * and return the value for the first match found
218
-     * wildcards can be either of the following:
219
-     *      ? to represent a single character of any type
220
-     *      * to represent one or more characters of any type
221
-     *
222
-     * @param string     $pattern
223
-     * @param null|mixed $default
224
-     * @return mixed
225
-     */
226
-    public function getMatch($pattern, $default = null)
227
-    {
228
-        return $this->requestParameterDrillDown($pattern, $default, 'match');
229
-    }
230
-
231
-
232
-    /**
233
-     * check if a request parameter exists whose key matches the supplied wildcard pattern
234
-     * wildcards can be either of the following:
235
-     *      ? to represent a single character of any type
236
-     *      * to represent one or more characters of any type
237
-     * returns true if a match is found or false if not
238
-     *
239
-     * @param string $pattern
240
-     * @return bool
241
-     */
242
-    public function matches($pattern)
243
-    {
244
-        return $this->requestParameterDrillDown($pattern, null, 'match') !== null;
245
-    }
246
-
247
-
248
-    /**
249
-     * @see https://stackoverflow.com/questions/6163055/php-string-matching-with-wildcard
250
-     * @param string $pattern               A string including wildcards to be converted to a regex pattern
251
-     *                                      and used to search through the current request's parameter keys
252
-     * @param array  $request_params        The array of request parameters to search through
253
-     * @param mixed  $default               [optional] The value to be returned if no match is found.
254
-     *                                      Default is null
255
-     * @param string $return                [optional] Controls what kind of value is returned.
256
-     *                                      Options are:
257
-     *                                      'bool' will return true or false if match is found or not
258
-     *                                      'key' will return the first key found that matches the supplied pattern
259
-     *                                      'value' will return the value for the first request parameter
260
-     *                                      whose key matches the supplied pattern
261
-     *                                      Default is 'value'
262
-     * @return boolean|string
263
-     */
264
-    private function match($pattern, array $request_params, $default = null, $return = 'value')
265
-    {
266
-        $return = in_array($return, array('bool', 'key', 'value'), true)
267
-            ? $return
268
-            : 'is_set';
269
-        // replace wildcard chars with regex chars
270
-        $pattern = str_replace(
271
-            array("\*", "\?"),
272
-            array('.*', '.'),
273
-            preg_quote($pattern, '/')
274
-        );
275
-        foreach ($request_params as $key => $request_param) {
276
-            if (preg_match('/^' . $pattern . '$/is', $key)) {
277
-                // return value for request param
278
-                if ($return === 'value') {
279
-                    return $request_params[ $key ];
280
-                }
281
-                // or actual key or true just to indicate it was found
282
-                return $return === 'key' ? $key : true;
283
-            }
284
-        }
285
-        // match not found so return default value or false
286
-        return $return === 'value' ? $default : false;
287
-    }
288
-
289
-
290
-    /**
291
-     * the supplied key can be a simple string to represent a "top-level" request parameter
292
-     * or represent a key for a request parameter that is nested deeper within the request parameter array,
293
-     * by using square brackets to surround keys for deeper array elements.
294
-     * For example :
295
-     * if the supplied $key was: "first[second][third]"
296
-     * then this will attempt to drill down into the request parameter array to find a value.
297
-     * Given the following request parameters:
298
-     *  array(
299
-     *      'first' => array(
300
-     *          'second' => array(
301
-     *              'third' => 'has a value'
302
-     *          )
303
-     *      )
304
-     *  )
305
-     * would return true if default parameters were set
306
-     *
307
-     * @param string $callback
308
-     * @param        $key
309
-     * @param null   $default
310
-     * @param array  $request_params
311
-     * @return bool|mixed|null
312
-     */
313
-    private function requestParameterDrillDown(
314
-        $key,
315
-        $default = null,
316
-        $callback = 'is_set',
317
-        array $request_params = array()
318
-    ) {
319
-        $callback = in_array($callback, array('is_set', 'get', 'match'), true)
320
-            ? $callback
321
-            : 'is_set';
322
-        $request_params = ! empty($request_params)
323
-            ? $request_params
324
-            : $this->request;
325
-        // does incoming key represent an array like 'first[second][third]'  ?
326
-        if (strpos($key, '[') !== false) {
327
-            // turn it into an actual array
328
-            $key = str_replace(']', '', $key);
329
-            $keys = explode('[', $key);
330
-            $key = array_shift($keys);
331
-            if ($callback === 'match') {
332
-                $real_key = $this->match($key, $request_params, $default, 'key');
333
-                $key = $real_key ? $real_key : $key;
334
-            }
335
-            // check if top level key exists
336
-            if (isset($request_params[ $key ])) {
337
-                // build a new key to pass along like: 'second[third]'
338
-                // or just 'second' depending on depth of keys
339
-                $key_string = array_shift($keys);
340
-                if (! empty($keys)) {
341
-                    $key_string .= '[' . implode('][', $keys) . ']';
342
-                }
343
-                return $this->requestParameterDrillDown(
344
-                    $key_string,
345
-                    $default,
346
-                    $callback,
347
-                    $request_params[ $key ]
348
-                );
349
-            }
350
-        }
351
-        if ($callback === 'is_set') {
352
-            return isset($request_params[ $key ]);
353
-        }
354
-        if ($callback === 'match') {
355
-            return $this->match($key, $request_params, $default);
356
-        }
357
-        return isset($request_params[ $key ])
358
-            ? $request_params[ $key ]
359
-            : $default;
360
-    }
361
-
362
-
363
-    /**
364
-     * remove param
365
-     *
366
-     * @param      $key
367
-     * @param bool $unset_from_global_too
368
-     */
369
-    public function unSetRequestParam($key, $unset_from_global_too = false)
370
-    {
371
-        unset($this->request[ $key ]);
372
-        if ($unset_from_global_too) {
373
-            unset($_REQUEST[ $key ]);
374
-        }
375
-    }
376
-
377
-
378
-    /**
379
-     * @return string
380
-     */
381
-    public function ipAddress()
382
-    {
383
-        return $this->ip_address;
384
-    }
385
-
386
-
387
-    /**
388
-     * attempt to get IP address of current visitor from server
389
-     * plz see: http://stackoverflow.com/a/2031935/1475279
390
-     *
391
-     * @access public
392
-     * @return string
393
-     */
394
-    private function visitorIp()
395
-    {
396
-        $visitor_ip = '0.0.0.0';
397
-        $server_keys = array(
398
-            'HTTP_CLIENT_IP',
399
-            'HTTP_X_FORWARDED_FOR',
400
-            'HTTP_X_FORWARDED',
401
-            'HTTP_X_CLUSTER_CLIENT_IP',
402
-            'HTTP_FORWARDED_FOR',
403
-            'HTTP_FORWARDED',
404
-            'REMOTE_ADDR',
405
-        );
406
-        foreach ($server_keys as $key) {
407
-            if (isset($this->server[ $key ])) {
408
-                foreach (array_map('trim', explode(',', $this->server[ $key ])) as $ip) {
409
-                    if ($ip === '127.0.0.1' || filter_var($ip, FILTER_VALIDATE_IP) !== false) {
410
-                        $visitor_ip = $ip;
411
-                    }
412
-                }
413
-            }
414
-        }
415
-        return $visitor_ip;
416
-    }
417
-
418
-
419
-    /**
420
-     * Gets the request's literal URI. Related to `requestUriAfterSiteHomeUri`, see its description for a comparison.
421
-     * @param boolean $relativeToWpRoot If home_url() is "http://mysite.com/wp/", and a request comes to
422
-     *                                  "http://mysite.com/wp/wp-json", setting $relativeToWpRoot=true will return
423
-     *                                  "/wp-json", whereas $relativeToWpRoot=false will return "/wp/wp-json/".
424
-     * @return string
425
-     */
426
-    public function requestUri($relativeToWpRoot = false)
427
-    {
428
-        $request_uri = filter_input(
429
-            INPUT_SERVER,
430
-            'REQUEST_URI',
431
-            FILTER_SANITIZE_URL,
432
-            FILTER_NULL_ON_FAILURE
433
-        );
434
-        if (empty($request_uri)) {
435
-            // fallback sanitization if the above fails
436
-            $request_uri = wp_sanitize_redirect($this->server['REQUEST_URI']);
437
-        }
438
-        if ($relativeToWpRoot) {
439
-            $home_path = untrailingslashit(
440
-                parse_url(
441
-                    home_url(),
442
-                    PHP_URL_PATH
443
-                )
444
-            );
445
-            $request_uri = str_replace(
446
-                $home_path,
447
-                '',
448
-                $request_uri
449
-            );
450
-        }
451
-        return $request_uri;
452
-    }
453
-
454
-    /**
455
-     * @return string
456
-     */
457
-    public function userAgent()
458
-    {
459
-        return $this->user_agent;
460
-    }
461
-
462
-
463
-    /**
464
-     * @param string $user_agent
465
-     */
466
-    public function setUserAgent($user_agent = '')
467
-    {
468
-        if ($user_agent === '' || ! is_string($user_agent)) {
469
-            $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? (string) esc_attr($_SERVER['HTTP_USER_AGENT']) : '';
470
-        }
471
-        $this->user_agent = $user_agent;
472
-    }
473
-
474
-
475
-    /**
476
-     * @return bool
477
-     */
478
-    public function isBot()
479
-    {
480
-        return $this->is_bot;
481
-    }
482
-
483
-
484
-    /**
485
-     * @param bool $is_bot
486
-     */
487
-    public function setIsBot($is_bot)
488
-    {
489
-        $this->is_bot = filter_var($is_bot, FILTER_VALIDATE_BOOLEAN);
490
-    }
491
-
492
-
493
-    /**
494
-     * @return bool
495
-     */
496
-    public function isActivation()
497
-    {
498
-        return $this->request_type->isActivation();
499
-    }
500
-
501
-
502
-    /**
503
-     * @param $is_activation
504
-     * @return bool
505
-     */
506
-    public function setIsActivation($is_activation)
507
-    {
508
-        return $this->request_type->setIsActivation($is_activation);
509
-    }
510
-
511
-
512
-    /**
513
-     * @return bool
514
-     */
515
-    public function isAdmin()
516
-    {
517
-        return $this->request_type->isAdmin();
518
-    }
519
-
520
-
521
-    /**
522
-     * @return bool
523
-     */
524
-    public function isAdminAjax()
525
-    {
526
-        return $this->request_type->isAdminAjax();
527
-    }
528
-
529
-
530
-    /**
531
-     * @return bool
532
-     */
533
-    public function isAjax()
534
-    {
535
-        return $this->request_type->isAjax();
536
-    }
537
-
538
-
539
-    /**
540
-     * @return bool
541
-     */
542
-    public function isEeAjax()
543
-    {
544
-        return $this->request_type->isEeAjax();
545
-    }
546
-
547
-
548
-    /**
549
-     * @return bool
550
-     */
551
-    public function isOtherAjax()
552
-    {
553
-        return $this->request_type->isOtherAjax();
554
-    }
555
-
556
-
557
-    /**
558
-     * @return bool
559
-     */
560
-    public function isApi()
561
-    {
562
-        return $this->request_type->isApi();
563
-    }
564
-
565
-
566
-    /**
567
-     * @return bool
568
-     */
569
-    public function isCli()
570
-    {
571
-        return $this->request_type->isCli();
572
-    }
573
-
574
-
575
-    /**
576
-     * @return bool
577
-     */
578
-    public function isCron()
579
-    {
580
-        return $this->request_type->isCron();
581
-    }
582
-
583
-
584
-    /**
585
-     * @return bool
586
-     */
587
-    public function isFeed()
588
-    {
589
-        return $this->request_type->isFeed();
590
-    }
591
-
592
-
593
-    /**
594
-     * @return bool
595
-     */
596
-    public function isFrontend()
597
-    {
598
-        return $this->request_type->isFrontend();
599
-    }
600
-
601
-
602
-    /**
603
-     * @return bool
604
-     */
605
-    public function isFrontAjax()
606
-    {
607
-        return $this->request_type->isFrontAjax();
608
-    }
609
-
610
-
611
-    /**
612
-     * @return bool
613
-     */
614
-    public function isIframe()
615
-    {
616
-        return $this->request_type->isIframe();
617
-    }
618
-
619
-
620
-    /**
621
-     * @return bool
622
-     */
623
-    public function isWordPressApi()
624
-    {
625
-        return $this->request_type->isWordPressApi();
626
-    }
627
-
628
-
629
-
630
-    /**
631
-     * @return bool
632
-     */
633
-    public function isWordPressHeartbeat()
634
-    {
635
-        return $this->request_type->isWordPressHeartbeat();
636
-    }
637
-
638
-
639
-
640
-    /**
641
-     * @return bool
642
-     */
643
-    public function isWordPressScrape()
644
-    {
645
-        return $this->request_type->isWordPressScrape();
646
-    }
647
-
648
-
649
-    /**
650
-     * @return string
651
-     */
652
-    public function slug()
653
-    {
654
-        return $this->request_type->slug();
655
-    }
20
+	/**
21
+	 * $_GET parameters
22
+	 *
23
+	 * @var array $get
24
+	 */
25
+	private $get;
26
+
27
+	/**
28
+	 * $_POST parameters
29
+	 *
30
+	 * @var array $post
31
+	 */
32
+	private $post;
33
+
34
+	/**
35
+	 * $_COOKIE parameters
36
+	 *
37
+	 * @var array $cookie
38
+	 */
39
+	private $cookie;
40
+
41
+	/**
42
+	 * $_SERVER parameters
43
+	 *
44
+	 * @var array $server
45
+	 */
46
+	private $server;
47
+
48
+	/**
49
+	 * $_FILES parameters
50
+	 *
51
+	 * @var array $files
52
+	 */
53
+	private $files;
54
+
55
+	/**
56
+	 * $_REQUEST parameters
57
+	 *
58
+	 * @var array $request
59
+	 */
60
+	private $request;
61
+
62
+	/**
63
+	 * @var RequestTypeContextCheckerInterface
64
+	 */
65
+	private $request_type;
66
+
67
+	/**
68
+	 * IP address for request
69
+	 *
70
+	 * @var string $ip_address
71
+	 */
72
+	private $ip_address;
73
+
74
+	/**
75
+	 * @var string $user_agent
76
+	 */
77
+	private $user_agent;
78
+
79
+	/**
80
+	 * true if current user appears to be some kind of bot
81
+	 *
82
+	 * @var bool $is_bot
83
+	 */
84
+	private $is_bot;
85
+
86
+
87
+	/**
88
+	 * @param array $get
89
+	 * @param array $post
90
+	 * @param array $cookie
91
+	 * @param array $server
92
+	 * @param array $files
93
+	 */
94
+	public function __construct(array $get, array $post, array $cookie, array $server, array $files = array())
95
+	{
96
+		// grab request vars
97
+		$this->get = $get;
98
+		$this->post = $post;
99
+		$this->cookie = $cookie;
100
+		$this->server = $server;
101
+		$this->files = $files;
102
+		$this->request = array_merge($this->get, $this->post);
103
+		$this->ip_address = $this->visitorIp();
104
+	}
105
+
106
+
107
+	/**
108
+	 * @param RequestTypeContextCheckerInterface $type
109
+	 */
110
+	public function setRequestTypeContextChecker(RequestTypeContextCheckerInterface $type)
111
+	{
112
+		$this->request_type = $type;
113
+	}
114
+
115
+
116
+	/**
117
+	 * @return array
118
+	 */
119
+	public function getParams()
120
+	{
121
+		return $this->get;
122
+	}
123
+
124
+
125
+	/**
126
+	 * @return array
127
+	 */
128
+	public function postParams()
129
+	{
130
+		return $this->post;
131
+	}
132
+
133
+
134
+	/**
135
+	 * @return array
136
+	 */
137
+	public function cookieParams()
138
+	{
139
+		return $this->cookie;
140
+	}
141
+
142
+
143
+	/**
144
+	 * @return array
145
+	 */
146
+	public function serverParams()
147
+	{
148
+		return $this->server;
149
+	}
150
+
151
+
152
+	/**
153
+	 * @return array
154
+	 */
155
+	public function filesParams()
156
+	{
157
+		return $this->files;
158
+	}
159
+
160
+
161
+	/**
162
+	 * returns contents of $_REQUEST
163
+	 *
164
+	 * @return array
165
+	 */
166
+	public function requestParams()
167
+	{
168
+		return $this->request;
169
+	}
170
+
171
+
172
+	/**
173
+	 * @param      $key
174
+	 * @param      $value
175
+	 * @param bool $override_ee
176
+	 * @return    void
177
+	 */
178
+	public function setRequestParam($key, $value, $override_ee = false)
179
+	{
180
+		// don't allow "ee" to be overwritten unless explicitly instructed to do so
181
+		if ($key !== 'ee'
182
+			|| ($key === 'ee' && empty($this->request['ee']))
183
+			|| ($key === 'ee' && ! empty($this->request['ee']) && $override_ee)
184
+		) {
185
+			$this->request[ $key ] = $value;
186
+		}
187
+	}
188
+
189
+
190
+	/**
191
+	 * returns   the value for a request param if the given key exists
192
+	 *
193
+	 * @param       $key
194
+	 * @param null  $default
195
+	 * @return mixed
196
+	 */
197
+	public function getRequestParam($key, $default = null)
198
+	{
199
+		return $this->requestParameterDrillDown($key, $default, 'get');
200
+	}
201
+
202
+
203
+	/**
204
+	 * check if param exists
205
+	 *
206
+	 * @param       $key
207
+	 * @return bool
208
+	 */
209
+	public function requestParamIsSet($key)
210
+	{
211
+		return $this->requestParameterDrillDown($key);
212
+	}
213
+
214
+
215
+	/**
216
+	 * check if a request parameter exists whose key that matches the supplied wildcard pattern
217
+	 * and return the value for the first match found
218
+	 * wildcards can be either of the following:
219
+	 *      ? to represent a single character of any type
220
+	 *      * to represent one or more characters of any type
221
+	 *
222
+	 * @param string     $pattern
223
+	 * @param null|mixed $default
224
+	 * @return mixed
225
+	 */
226
+	public function getMatch($pattern, $default = null)
227
+	{
228
+		return $this->requestParameterDrillDown($pattern, $default, 'match');
229
+	}
230
+
231
+
232
+	/**
233
+	 * check if a request parameter exists whose key matches the supplied wildcard pattern
234
+	 * wildcards can be either of the following:
235
+	 *      ? to represent a single character of any type
236
+	 *      * to represent one or more characters of any type
237
+	 * returns true if a match is found or false if not
238
+	 *
239
+	 * @param string $pattern
240
+	 * @return bool
241
+	 */
242
+	public function matches($pattern)
243
+	{
244
+		return $this->requestParameterDrillDown($pattern, null, 'match') !== null;
245
+	}
246
+
247
+
248
+	/**
249
+	 * @see https://stackoverflow.com/questions/6163055/php-string-matching-with-wildcard
250
+	 * @param string $pattern               A string including wildcards to be converted to a regex pattern
251
+	 *                                      and used to search through the current request's parameter keys
252
+	 * @param array  $request_params        The array of request parameters to search through
253
+	 * @param mixed  $default               [optional] The value to be returned if no match is found.
254
+	 *                                      Default is null
255
+	 * @param string $return                [optional] Controls what kind of value is returned.
256
+	 *                                      Options are:
257
+	 *                                      'bool' will return true or false if match is found or not
258
+	 *                                      'key' will return the first key found that matches the supplied pattern
259
+	 *                                      'value' will return the value for the first request parameter
260
+	 *                                      whose key matches the supplied pattern
261
+	 *                                      Default is 'value'
262
+	 * @return boolean|string
263
+	 */
264
+	private function match($pattern, array $request_params, $default = null, $return = 'value')
265
+	{
266
+		$return = in_array($return, array('bool', 'key', 'value'), true)
267
+			? $return
268
+			: 'is_set';
269
+		// replace wildcard chars with regex chars
270
+		$pattern = str_replace(
271
+			array("\*", "\?"),
272
+			array('.*', '.'),
273
+			preg_quote($pattern, '/')
274
+		);
275
+		foreach ($request_params as $key => $request_param) {
276
+			if (preg_match('/^' . $pattern . '$/is', $key)) {
277
+				// return value for request param
278
+				if ($return === 'value') {
279
+					return $request_params[ $key ];
280
+				}
281
+				// or actual key or true just to indicate it was found
282
+				return $return === 'key' ? $key : true;
283
+			}
284
+		}
285
+		// match not found so return default value or false
286
+		return $return === 'value' ? $default : false;
287
+	}
288
+
289
+
290
+	/**
291
+	 * the supplied key can be a simple string to represent a "top-level" request parameter
292
+	 * or represent a key for a request parameter that is nested deeper within the request parameter array,
293
+	 * by using square brackets to surround keys for deeper array elements.
294
+	 * For example :
295
+	 * if the supplied $key was: "first[second][third]"
296
+	 * then this will attempt to drill down into the request parameter array to find a value.
297
+	 * Given the following request parameters:
298
+	 *  array(
299
+	 *      'first' => array(
300
+	 *          'second' => array(
301
+	 *              'third' => 'has a value'
302
+	 *          )
303
+	 *      )
304
+	 *  )
305
+	 * would return true if default parameters were set
306
+	 *
307
+	 * @param string $callback
308
+	 * @param        $key
309
+	 * @param null   $default
310
+	 * @param array  $request_params
311
+	 * @return bool|mixed|null
312
+	 */
313
+	private function requestParameterDrillDown(
314
+		$key,
315
+		$default = null,
316
+		$callback = 'is_set',
317
+		array $request_params = array()
318
+	) {
319
+		$callback = in_array($callback, array('is_set', 'get', 'match'), true)
320
+			? $callback
321
+			: 'is_set';
322
+		$request_params = ! empty($request_params)
323
+			? $request_params
324
+			: $this->request;
325
+		// does incoming key represent an array like 'first[second][third]'  ?
326
+		if (strpos($key, '[') !== false) {
327
+			// turn it into an actual array
328
+			$key = str_replace(']', '', $key);
329
+			$keys = explode('[', $key);
330
+			$key = array_shift($keys);
331
+			if ($callback === 'match') {
332
+				$real_key = $this->match($key, $request_params, $default, 'key');
333
+				$key = $real_key ? $real_key : $key;
334
+			}
335
+			// check if top level key exists
336
+			if (isset($request_params[ $key ])) {
337
+				// build a new key to pass along like: 'second[third]'
338
+				// or just 'second' depending on depth of keys
339
+				$key_string = array_shift($keys);
340
+				if (! empty($keys)) {
341
+					$key_string .= '[' . implode('][', $keys) . ']';
342
+				}
343
+				return $this->requestParameterDrillDown(
344
+					$key_string,
345
+					$default,
346
+					$callback,
347
+					$request_params[ $key ]
348
+				);
349
+			}
350
+		}
351
+		if ($callback === 'is_set') {
352
+			return isset($request_params[ $key ]);
353
+		}
354
+		if ($callback === 'match') {
355
+			return $this->match($key, $request_params, $default);
356
+		}
357
+		return isset($request_params[ $key ])
358
+			? $request_params[ $key ]
359
+			: $default;
360
+	}
361
+
362
+
363
+	/**
364
+	 * remove param
365
+	 *
366
+	 * @param      $key
367
+	 * @param bool $unset_from_global_too
368
+	 */
369
+	public function unSetRequestParam($key, $unset_from_global_too = false)
370
+	{
371
+		unset($this->request[ $key ]);
372
+		if ($unset_from_global_too) {
373
+			unset($_REQUEST[ $key ]);
374
+		}
375
+	}
376
+
377
+
378
+	/**
379
+	 * @return string
380
+	 */
381
+	public function ipAddress()
382
+	{
383
+		return $this->ip_address;
384
+	}
385
+
386
+
387
+	/**
388
+	 * attempt to get IP address of current visitor from server
389
+	 * plz see: http://stackoverflow.com/a/2031935/1475279
390
+	 *
391
+	 * @access public
392
+	 * @return string
393
+	 */
394
+	private function visitorIp()
395
+	{
396
+		$visitor_ip = '0.0.0.0';
397
+		$server_keys = array(
398
+			'HTTP_CLIENT_IP',
399
+			'HTTP_X_FORWARDED_FOR',
400
+			'HTTP_X_FORWARDED',
401
+			'HTTP_X_CLUSTER_CLIENT_IP',
402
+			'HTTP_FORWARDED_FOR',
403
+			'HTTP_FORWARDED',
404
+			'REMOTE_ADDR',
405
+		);
406
+		foreach ($server_keys as $key) {
407
+			if (isset($this->server[ $key ])) {
408
+				foreach (array_map('trim', explode(',', $this->server[ $key ])) as $ip) {
409
+					if ($ip === '127.0.0.1' || filter_var($ip, FILTER_VALIDATE_IP) !== false) {
410
+						$visitor_ip = $ip;
411
+					}
412
+				}
413
+			}
414
+		}
415
+		return $visitor_ip;
416
+	}
417
+
418
+
419
+	/**
420
+	 * Gets the request's literal URI. Related to `requestUriAfterSiteHomeUri`, see its description for a comparison.
421
+	 * @param boolean $relativeToWpRoot If home_url() is "http://mysite.com/wp/", and a request comes to
422
+	 *                                  "http://mysite.com/wp/wp-json", setting $relativeToWpRoot=true will return
423
+	 *                                  "/wp-json", whereas $relativeToWpRoot=false will return "/wp/wp-json/".
424
+	 * @return string
425
+	 */
426
+	public function requestUri($relativeToWpRoot = false)
427
+	{
428
+		$request_uri = filter_input(
429
+			INPUT_SERVER,
430
+			'REQUEST_URI',
431
+			FILTER_SANITIZE_URL,
432
+			FILTER_NULL_ON_FAILURE
433
+		);
434
+		if (empty($request_uri)) {
435
+			// fallback sanitization if the above fails
436
+			$request_uri = wp_sanitize_redirect($this->server['REQUEST_URI']);
437
+		}
438
+		if ($relativeToWpRoot) {
439
+			$home_path = untrailingslashit(
440
+				parse_url(
441
+					home_url(),
442
+					PHP_URL_PATH
443
+				)
444
+			);
445
+			$request_uri = str_replace(
446
+				$home_path,
447
+				'',
448
+				$request_uri
449
+			);
450
+		}
451
+		return $request_uri;
452
+	}
453
+
454
+	/**
455
+	 * @return string
456
+	 */
457
+	public function userAgent()
458
+	{
459
+		return $this->user_agent;
460
+	}
461
+
462
+
463
+	/**
464
+	 * @param string $user_agent
465
+	 */
466
+	public function setUserAgent($user_agent = '')
467
+	{
468
+		if ($user_agent === '' || ! is_string($user_agent)) {
469
+			$user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? (string) esc_attr($_SERVER['HTTP_USER_AGENT']) : '';
470
+		}
471
+		$this->user_agent = $user_agent;
472
+	}
473
+
474
+
475
+	/**
476
+	 * @return bool
477
+	 */
478
+	public function isBot()
479
+	{
480
+		return $this->is_bot;
481
+	}
482
+
483
+
484
+	/**
485
+	 * @param bool $is_bot
486
+	 */
487
+	public function setIsBot($is_bot)
488
+	{
489
+		$this->is_bot = filter_var($is_bot, FILTER_VALIDATE_BOOLEAN);
490
+	}
491
+
492
+
493
+	/**
494
+	 * @return bool
495
+	 */
496
+	public function isActivation()
497
+	{
498
+		return $this->request_type->isActivation();
499
+	}
500
+
501
+
502
+	/**
503
+	 * @param $is_activation
504
+	 * @return bool
505
+	 */
506
+	public function setIsActivation($is_activation)
507
+	{
508
+		return $this->request_type->setIsActivation($is_activation);
509
+	}
510
+
511
+
512
+	/**
513
+	 * @return bool
514
+	 */
515
+	public function isAdmin()
516
+	{
517
+		return $this->request_type->isAdmin();
518
+	}
519
+
520
+
521
+	/**
522
+	 * @return bool
523
+	 */
524
+	public function isAdminAjax()
525
+	{
526
+		return $this->request_type->isAdminAjax();
527
+	}
528
+
529
+
530
+	/**
531
+	 * @return bool
532
+	 */
533
+	public function isAjax()
534
+	{
535
+		return $this->request_type->isAjax();
536
+	}
537
+
538
+
539
+	/**
540
+	 * @return bool
541
+	 */
542
+	public function isEeAjax()
543
+	{
544
+		return $this->request_type->isEeAjax();
545
+	}
546
+
547
+
548
+	/**
549
+	 * @return bool
550
+	 */
551
+	public function isOtherAjax()
552
+	{
553
+		return $this->request_type->isOtherAjax();
554
+	}
555
+
556
+
557
+	/**
558
+	 * @return bool
559
+	 */
560
+	public function isApi()
561
+	{
562
+		return $this->request_type->isApi();
563
+	}
564
+
565
+
566
+	/**
567
+	 * @return bool
568
+	 */
569
+	public function isCli()
570
+	{
571
+		return $this->request_type->isCli();
572
+	}
573
+
574
+
575
+	/**
576
+	 * @return bool
577
+	 */
578
+	public function isCron()
579
+	{
580
+		return $this->request_type->isCron();
581
+	}
582
+
583
+
584
+	/**
585
+	 * @return bool
586
+	 */
587
+	public function isFeed()
588
+	{
589
+		return $this->request_type->isFeed();
590
+	}
591
+
592
+
593
+	/**
594
+	 * @return bool
595
+	 */
596
+	public function isFrontend()
597
+	{
598
+		return $this->request_type->isFrontend();
599
+	}
600
+
601
+
602
+	/**
603
+	 * @return bool
604
+	 */
605
+	public function isFrontAjax()
606
+	{
607
+		return $this->request_type->isFrontAjax();
608
+	}
609
+
610
+
611
+	/**
612
+	 * @return bool
613
+	 */
614
+	public function isIframe()
615
+	{
616
+		return $this->request_type->isIframe();
617
+	}
618
+
619
+
620
+	/**
621
+	 * @return bool
622
+	 */
623
+	public function isWordPressApi()
624
+	{
625
+		return $this->request_type->isWordPressApi();
626
+	}
627
+
628
+
629
+
630
+	/**
631
+	 * @return bool
632
+	 */
633
+	public function isWordPressHeartbeat()
634
+	{
635
+		return $this->request_type->isWordPressHeartbeat();
636
+	}
637
+
638
+
639
+
640
+	/**
641
+	 * @return bool
642
+	 */
643
+	public function isWordPressScrape()
644
+	{
645
+		return $this->request_type->isWordPressScrape();
646
+	}
647
+
648
+
649
+	/**
650
+	 * @return string
651
+	 */
652
+	public function slug()
653
+	{
654
+		return $this->request_type->slug();
655
+	}
656 656
 }
Please login to merge, or discard this patch.
core/services/address/formatters/MultiLineAddressFormatter.php 2 patches
Indentation   +35 added lines, -35 removed lines patch added patch discarded remove patch
@@ -15,39 +15,39 @@
 block discarded – undo
15 15
 {
16 16
 
17 17
 
18
-    /**
19
-     * @param string $address
20
-     * @param string $address2
21
-     * @param string $city
22
-     * @param string $state
23
-     * @param string $zip
24
-     * @param string $country
25
-     * @param string $CNT_ISO
26
-     * @return string
27
-     */
28
-    public function format($address, $address2, $city, $state, $zip, $country, $CNT_ISO)
29
-    {
30
-        $address_formats = apply_filters(
31
-            'FHEE__EE_MultiLine_Address_Formatter__address_formats',
32
-            array(
33
-                'CA' => "{address}%{address2}%{city}%{state}%{country}%{zip}",
34
-                'GB' => "{address}%{address2}%{city}%{state}%{zip}%{country}",
35
-                'US' => "{address}%{address2}%{city}%{state}%{zip}%{country}",
36
-                'ZZ' => "{address}%{address2}%{city}%{state}%{zip}%{country}",
37
-            )
38
-        );
39
-        // if the incoming country has a set format, use that, else use the default
40
-        $formatted_address = isset($address_formats[ $CNT_ISO ]) ? $address_formats[ $CNT_ISO ]
41
-            : $address_formats['ZZ'];
42
-        return $this->parse_formatted_address(
43
-            $address,
44
-            $address2,
45
-            $city,
46
-            $state,
47
-            $zip,
48
-            $country,
49
-            $formatted_address,
50
-            '<br />'
51
-        );
52
-    }
18
+	/**
19
+	 * @param string $address
20
+	 * @param string $address2
21
+	 * @param string $city
22
+	 * @param string $state
23
+	 * @param string $zip
24
+	 * @param string $country
25
+	 * @param string $CNT_ISO
26
+	 * @return string
27
+	 */
28
+	public function format($address, $address2, $city, $state, $zip, $country, $CNT_ISO)
29
+	{
30
+		$address_formats = apply_filters(
31
+			'FHEE__EE_MultiLine_Address_Formatter__address_formats',
32
+			array(
33
+				'CA' => "{address}%{address2}%{city}%{state}%{country}%{zip}",
34
+				'GB' => "{address}%{address2}%{city}%{state}%{zip}%{country}",
35
+				'US' => "{address}%{address2}%{city}%{state}%{zip}%{country}",
36
+				'ZZ' => "{address}%{address2}%{city}%{state}%{zip}%{country}",
37
+			)
38
+		);
39
+		// if the incoming country has a set format, use that, else use the default
40
+		$formatted_address = isset($address_formats[ $CNT_ISO ]) ? $address_formats[ $CNT_ISO ]
41
+			: $address_formats['ZZ'];
42
+		return $this->parse_formatted_address(
43
+			$address,
44
+			$address2,
45
+			$city,
46
+			$state,
47
+			$zip,
48
+			$country,
49
+			$formatted_address,
50
+			'<br />'
51
+		);
52
+	}
53 53
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -37,7 +37,7 @@
 block discarded – undo
37 37
             )
38 38
         );
39 39
         // if the incoming country has a set format, use that, else use the default
40
-        $formatted_address = isset($address_formats[ $CNT_ISO ]) ? $address_formats[ $CNT_ISO ]
40
+        $formatted_address = isset($address_formats[$CNT_ISO]) ? $address_formats[$CNT_ISO]
41 41
             : $address_formats['ZZ'];
42 42
         return $this->parse_formatted_address(
43 43
             $address,
Please login to merge, or discard this patch.
core/services/address/formatters/InlineAddressFormatter.php 2 patches
Indentation   +35 added lines, -35 removed lines patch added patch discarded remove patch
@@ -14,39 +14,39 @@
 block discarded – undo
14 14
 class InlineAddressFormatter extends AddressFormatter implements \EEI_Address_Formatter
15 15
 {
16 16
 
17
-    /**
18
-     * @param string $address
19
-     * @param string $address2
20
-     * @param string $city
21
-     * @param string $state
22
-     * @param string $zip
23
-     * @param string $country
24
-     * @param string $CNT_ISO
25
-     * @return string
26
-     */
27
-    public function format($address, $address2, $city, $state, $zip, $country, $CNT_ISO)
28
-    {
29
-        $address_formats = apply_filters(
30
-            'FHEE__EE_Inline_Address_Formatter__address_formats',
31
-            array(
32
-                'CA'  => "{address}%{address2}%{city}%{state}%{country}%{zip}",
33
-                'GB'  => "{address}%{address2}%{city}%{state}%{zip}%{country}",
34
-                'US'  => "{address}%{address2}%{city}%{state}%{zip}%{country}",
35
-                'ZZZ' => "{address}%{address2}%{city}%{state}%{zip}%{country}",
36
-            )
37
-        );
38
-        // if the incoming country has a set format, use that, else use the default
39
-        $formatted_address = isset($address_formats[ $CNT_ISO ]) ? $address_formats[ $CNT_ISO ]
40
-            : $address_formats['ZZZ'];
41
-        return $this->parse_formatted_address(
42
-            $address,
43
-            $address2,
44
-            $city,
45
-            $state,
46
-            $zip,
47
-            $country,
48
-            $formatted_address,
49
-            ', '
50
-        );
51
-    }
17
+	/**
18
+	 * @param string $address
19
+	 * @param string $address2
20
+	 * @param string $city
21
+	 * @param string $state
22
+	 * @param string $zip
23
+	 * @param string $country
24
+	 * @param string $CNT_ISO
25
+	 * @return string
26
+	 */
27
+	public function format($address, $address2, $city, $state, $zip, $country, $CNT_ISO)
28
+	{
29
+		$address_formats = apply_filters(
30
+			'FHEE__EE_Inline_Address_Formatter__address_formats',
31
+			array(
32
+				'CA'  => "{address}%{address2}%{city}%{state}%{country}%{zip}",
33
+				'GB'  => "{address}%{address2}%{city}%{state}%{zip}%{country}",
34
+				'US'  => "{address}%{address2}%{city}%{state}%{zip}%{country}",
35
+				'ZZZ' => "{address}%{address2}%{city}%{state}%{zip}%{country}",
36
+			)
37
+		);
38
+		// if the incoming country has a set format, use that, else use the default
39
+		$formatted_address = isset($address_formats[ $CNT_ISO ]) ? $address_formats[ $CNT_ISO ]
40
+			: $address_formats['ZZZ'];
41
+		return $this->parse_formatted_address(
42
+			$address,
43
+			$address2,
44
+			$city,
45
+			$state,
46
+			$zip,
47
+			$country,
48
+			$formatted_address,
49
+			', '
50
+		);
51
+	}
52 52
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -36,7 +36,7 @@
 block discarded – undo
36 36
             )
37 37
         );
38 38
         // if the incoming country has a set format, use that, else use the default
39
-        $formatted_address = isset($address_formats[ $CNT_ISO ]) ? $address_formats[ $CNT_ISO ]
39
+        $formatted_address = isset($address_formats[$CNT_ISO]) ? $address_formats[$CNT_ISO]
40 40
             : $address_formats['ZZZ'];
41 41
         return $this->parse_formatted_address(
42 42
             $address,
Please login to merge, or discard this patch.
core/services/locators/FileLocator.php 2 patches
Indentation   +73 added lines, -73 removed lines patch added patch discarded remove patch
@@ -17,88 +17,88 @@
 block discarded – undo
17 17
 class FileLocator extends Locator
18 18
 {
19 19
 
20
-    /**
21
-     * @var string $file_mask
22
-     */
23
-    protected $file_mask = '*.php';
20
+	/**
21
+	 * @var string $file_mask
22
+	 */
23
+	protected $file_mask = '*.php';
24 24
 
25
-    /**
26
-     * @var array $filepaths
27
-     */
28
-    protected $filepaths = array();
25
+	/**
26
+	 * @var array $filepaths
27
+	 */
28
+	protected $filepaths = array();
29 29
 
30 30
 
31
-    /**
32
-     * @param string $file_mask
33
-     * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
34
-     */
35
-    public function setFileMask($file_mask)
36
-    {
37
-        if (! is_string($file_mask)) {
38
-            throw new InvalidDataTypeException('$file_mask', $file_mask, 'string');
39
-        }
40
-        $this->file_mask = $file_mask;
41
-    }
31
+	/**
32
+	 * @param string $file_mask
33
+	 * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
34
+	 */
35
+	public function setFileMask($file_mask)
36
+	{
37
+		if (! is_string($file_mask)) {
38
+			throw new InvalidDataTypeException('$file_mask', $file_mask, 'string');
39
+		}
40
+		$this->file_mask = $file_mask;
41
+	}
42 42
 
43 43
 
44
-    /**
45
-     * @access public
46
-     * @return array
47
-     */
48
-    public function getFilePaths()
49
-    {
50
-        return $this->filepaths;
51
-    }
44
+	/**
45
+	 * @access public
46
+	 * @return array
47
+	 */
48
+	public function getFilePaths()
49
+	{
50
+		return $this->filepaths;
51
+	}
52 52
 
53 53
 
54
-    /**
55
-     * @access public
56
-     * @return int
57
-     */
58
-    public function count()
59
-    {
60
-        return count($this->filepaths);
61
-    }
54
+	/**
55
+	 * @access public
56
+	 * @return int
57
+	 */
58
+	public function count()
59
+	{
60
+		return count($this->filepaths);
61
+	}
62 62
 
63 63
 
64
-    /**
65
-     * given a path to a valid directory, or an array of valid paths,
66
-     * will find all files that match the provided mask
67
-     *
68
-     * @access public
69
-     * @param array|string $directory_paths
70
-     * @return \FilesystemIterator
71
-     * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
72
-     */
73
-    public function locate($directory_paths)
74
-    {
75
-        if (! (is_string($directory_paths) || is_array($directory_paths))) {
76
-            throw new InvalidDataTypeException('$directory_paths', $directory_paths, 'string or array');
77
-        }
78
-        foreach ((array) $directory_paths as $directory_path) {
79
-            foreach ($this->findFilesByPath($directory_path) as $key => $file) {
80
-                $this->filepaths[ $key ] = \EEH_File::standardise_directory_separators($file);
81
-            }
82
-        }
83
-        return $this->filepaths;
84
-    }
64
+	/**
65
+	 * given a path to a valid directory, or an array of valid paths,
66
+	 * will find all files that match the provided mask
67
+	 *
68
+	 * @access public
69
+	 * @param array|string $directory_paths
70
+	 * @return \FilesystemIterator
71
+	 * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
72
+	 */
73
+	public function locate($directory_paths)
74
+	{
75
+		if (! (is_string($directory_paths) || is_array($directory_paths))) {
76
+			throw new InvalidDataTypeException('$directory_paths', $directory_paths, 'string or array');
77
+		}
78
+		foreach ((array) $directory_paths as $directory_path) {
79
+			foreach ($this->findFilesByPath($directory_path) as $key => $file) {
80
+				$this->filepaths[ $key ] = \EEH_File::standardise_directory_separators($file);
81
+			}
82
+		}
83
+		return $this->filepaths;
84
+	}
85 85
 
86 86
 
87
-    /**
88
-     * given a path to a valid directory, will find all files that match the provided mask
89
-     *
90
-     * @access protected
91
-     * @param string $directory_path
92
-     * @return \FilesystemIterator
93
-     */
94
-    protected function findFilesByPath($directory_path = '')
95
-    {
96
-        $iterator = new GlobIterator(
97
-            \EEH_File::end_with_directory_separator($directory_path) . $this->file_mask
98
-        );
99
-        foreach ($this->flags as $flag) {
100
-            $iterator->setFlags($flag);
101
-        }
102
-        return $iterator;
103
-    }
87
+	/**
88
+	 * given a path to a valid directory, will find all files that match the provided mask
89
+	 *
90
+	 * @access protected
91
+	 * @param string $directory_path
92
+	 * @return \FilesystemIterator
93
+	 */
94
+	protected function findFilesByPath($directory_path = '')
95
+	{
96
+		$iterator = new GlobIterator(
97
+			\EEH_File::end_with_directory_separator($directory_path) . $this->file_mask
98
+		);
99
+		foreach ($this->flags as $flag) {
100
+			$iterator->setFlags($flag);
101
+		}
102
+		return $iterator;
103
+	}
104 104
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -34,7 +34,7 @@  discard block
 block discarded – undo
34 34
      */
35 35
     public function setFileMask($file_mask)
36 36
     {
37
-        if (! is_string($file_mask)) {
37
+        if ( ! is_string($file_mask)) {
38 38
             throw new InvalidDataTypeException('$file_mask', $file_mask, 'string');
39 39
         }
40 40
         $this->file_mask = $file_mask;
@@ -72,12 +72,12 @@  discard block
 block discarded – undo
72 72
      */
73 73
     public function locate($directory_paths)
74 74
     {
75
-        if (! (is_string($directory_paths) || is_array($directory_paths))) {
75
+        if ( ! (is_string($directory_paths) || is_array($directory_paths))) {
76 76
             throw new InvalidDataTypeException('$directory_paths', $directory_paths, 'string or array');
77 77
         }
78 78
         foreach ((array) $directory_paths as $directory_path) {
79 79
             foreach ($this->findFilesByPath($directory_path) as $key => $file) {
80
-                $this->filepaths[ $key ] = \EEH_File::standardise_directory_separators($file);
80
+                $this->filepaths[$key] = \EEH_File::standardise_directory_separators($file);
81 81
             }
82 82
         }
83 83
         return $this->filepaths;
@@ -94,7 +94,7 @@  discard block
 block discarded – undo
94 94
     protected function findFilesByPath($directory_path = '')
95 95
     {
96 96
         $iterator = new GlobIterator(
97
-            \EEH_File::end_with_directory_separator($directory_path) . $this->file_mask
97
+            \EEH_File::end_with_directory_separator($directory_path).$this->file_mask
98 98
         );
99 99
         foreach ($this->flags as $flag) {
100 100
             $iterator->setFlags($flag);
Please login to merge, or discard this patch.
core/services/database/TableManager.php 2 patches
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -65,7 +65,7 @@  discard block
 block discarded – undo
65 65
         global $wpdb;
66 66
         $full_table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
67 67
         $columns = $this->getTableColumns($table_name);
68
-        if (! in_array($column_name, $columns)) {
68
+        if ( ! in_array($column_name, $columns)) {
69 69
             $alter_query = "ALTER TABLE {$full_table_name} ADD {$column_name} {$column_info}";
70 70
             return $wpdb->query($alter_query);
71 71
         }
@@ -86,7 +86,7 @@  discard block
 block discarded – undo
86 86
         global $wpdb;
87 87
         $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
88 88
         $field_array = array();
89
-        if (! empty($table_name)) {
89
+        if ( ! empty($table_name)) {
90 90
             $columns = $wpdb->get_results("SHOW COLUMNS FROM {$table_name} ");
91 91
             if ($columns !== false) {
92 92
                 foreach ($columns as $column) {
@@ -132,14 +132,14 @@  discard block
 block discarded – undo
132 132
         foreach ($table_names as $table_name) {
133 133
             $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
134 134
             if ($this->getTableAnalysis()->tableExists($table_name)) {
135
-                $tables_to_delete[ $table_name ] = $table_name;
135
+                $tables_to_delete[$table_name] = $table_name;
136 136
             }
137 137
         }
138
-        if (! empty($tables_to_delete)) {
138
+        if ( ! empty($tables_to_delete)) {
139 139
             global $wpdb;
140 140
             // make sure we only have a unique strings in the array.
141 141
             $tables_to_delete = array_unique($tables_to_delete);
142
-            $wpdb->query('DROP TABLE ' . implode(', ', $tables_to_delete));
142
+            $wpdb->query('DROP TABLE '.implode(', ', $tables_to_delete));
143 143
         }
144 144
         return $tables_to_delete;
145 145
     }
@@ -189,7 +189,7 @@  discard block
 block discarded – undo
189 189
             $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
190 190
             /** @var \wpdb $wpdb */
191 191
             global $wpdb;
192
-            $SQL = "CREATE TABLE {$table_name} ( {$create_sql} ) ENGINE={$engine} " . $wpdb->get_charset_collate();
192
+            $SQL = "CREATE TABLE {$table_name} ( {$create_sql} ) ENGINE={$engine} ".$wpdb->get_charset_collate();
193 193
 
194 194
             // get $wpdb to echo errors, but buffer them. This way at least WE know an error
195 195
             // happened. And then we can choose to tell the end user
@@ -201,7 +201,7 @@  discard block
 block discarded – undo
201 201
             ob_end_clean();
202 202
             $wpdb->show_errors($old_show_errors_policy);
203 203
             $wpdb->suppress_errors($old_error_suppression_policy);
204
-            if (! empty($output)) {
204
+            if ( ! empty($output)) {
205 205
                 throw new \EE_Error($output);
206 206
             }
207 207
         } else {
@@ -242,7 +242,7 @@  discard block
 block discarded – undo
242 242
         if ($column_name === null) {
243 243
             $column_name = $index_name;
244 244
         }
245
-        if (! $this->getTableAnalysis()->tableExists($table_name)) {
245
+        if ( ! $this->getTableAnalysis()->tableExists($table_name)) {
246 246
             return false;
247 247
         }
248 248
         $index_entries = $this->getTableAnalysis()->showIndexes($table_name, $index_name);
Please login to merge, or discard this patch.
Indentation   +231 added lines, -231 removed lines patch added patch discarded remove patch
@@ -13,254 +13,254 @@
 block discarded – undo
13 13
 class TableManager extends \EE_Base
14 14
 {
15 15
 
16
-    /**
17
-     * @var TableAnalysis $table_analysis
18
-     */
19
-    private $table_analysis;
16
+	/**
17
+	 * @var TableAnalysis $table_analysis
18
+	 */
19
+	private $table_analysis;
20 20
 
21 21
 
22
-    /**
23
-     * TableManager constructor.
24
-     *
25
-     * @param TableAnalysis $TableAnalysis
26
-     */
27
-    public function __construct(TableAnalysis $TableAnalysis)
28
-    {
29
-        $this->table_analysis = $TableAnalysis;
30
-    }
22
+	/**
23
+	 * TableManager constructor.
24
+	 *
25
+	 * @param TableAnalysis $TableAnalysis
26
+	 */
27
+	public function __construct(TableAnalysis $TableAnalysis)
28
+	{
29
+		$this->table_analysis = $TableAnalysis;
30
+	}
31 31
 
32 32
 
33
-    /**
34
-     * Gets the injected table analyzer, or throws an exception
35
-     *
36
-     * @return TableAnalysis
37
-     * @throws \EE_Error
38
-     */
39
-    protected function getTableAnalysis()
40
-    {
41
-        if ($this->table_analysis instanceof TableAnalysis) {
42
-            return $this->table_analysis;
43
-        } else {
44
-            throw new \EE_Error(
45
-                sprintf(
46
-                    __('Table analysis class on class %1$s is not set properly.', 'event_espresso'),
47
-                    get_class($this)
48
-                )
49
-            );
50
-        }
51
-    }
33
+	/**
34
+	 * Gets the injected table analyzer, or throws an exception
35
+	 *
36
+	 * @return TableAnalysis
37
+	 * @throws \EE_Error
38
+	 */
39
+	protected function getTableAnalysis()
40
+	{
41
+		if ($this->table_analysis instanceof TableAnalysis) {
42
+			return $this->table_analysis;
43
+		} else {
44
+			throw new \EE_Error(
45
+				sprintf(
46
+					__('Table analysis class on class %1$s is not set properly.', 'event_espresso'),
47
+					get_class($this)
48
+				)
49
+			);
50
+		}
51
+	}
52 52
 
53 53
 
54
-    /**
55
-     * @param string $table_name which can optionally start with $wpdb->prefix or not
56
-     * @param string $column_name
57
-     * @param string $column_info
58
-     * @return bool|false|int
59
-     */
60
-    public function addColumn($table_name, $column_name, $column_info = 'INT UNSIGNED NOT NULL')
61
-    {
62
-        if (apply_filters('FHEE__EEH_Activation__add_column_if_it_doesnt_exist__short_circuit', false)) {
63
-            return false;
64
-        }
65
-        global $wpdb;
66
-        $full_table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
67
-        $columns = $this->getTableColumns($table_name);
68
-        if (! in_array($column_name, $columns)) {
69
-            $alter_query = "ALTER TABLE {$full_table_name} ADD {$column_name} {$column_info}";
70
-            return $wpdb->query($alter_query);
71
-        }
72
-        return true;
73
-    }
54
+	/**
55
+	 * @param string $table_name which can optionally start with $wpdb->prefix or not
56
+	 * @param string $column_name
57
+	 * @param string $column_info
58
+	 * @return bool|false|int
59
+	 */
60
+	public function addColumn($table_name, $column_name, $column_info = 'INT UNSIGNED NOT NULL')
61
+	{
62
+		if (apply_filters('FHEE__EEH_Activation__add_column_if_it_doesnt_exist__short_circuit', false)) {
63
+			return false;
64
+		}
65
+		global $wpdb;
66
+		$full_table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
67
+		$columns = $this->getTableColumns($table_name);
68
+		if (! in_array($column_name, $columns)) {
69
+			$alter_query = "ALTER TABLE {$full_table_name} ADD {$column_name} {$column_info}";
70
+			return $wpdb->query($alter_query);
71
+		}
72
+		return true;
73
+	}
74 74
 
75 75
 
76
-    /**
77
-     * Gets the name of all columns on the  table. $table_name can
78
-     * optionally start with $wpdb->prefix or not
79
-     *
80
-     * @global \wpdb $wpdb
81
-     * @param string $table_name
82
-     * @return array
83
-     */
84
-    public function getTableColumns($table_name)
85
-    {
86
-        global $wpdb;
87
-        $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
88
-        $field_array = array();
89
-        if (! empty($table_name)) {
90
-            $columns = $wpdb->get_results("SHOW COLUMNS FROM {$table_name} ");
91
-            if ($columns !== false) {
92
-                foreach ($columns as $column) {
93
-                    $field_array[] = $column->Field;
94
-                }
95
-            }
96
-        }
97
-        return $field_array;
98
-    }
76
+	/**
77
+	 * Gets the name of all columns on the  table. $table_name can
78
+	 * optionally start with $wpdb->prefix or not
79
+	 *
80
+	 * @global \wpdb $wpdb
81
+	 * @param string $table_name
82
+	 * @return array
83
+	 */
84
+	public function getTableColumns($table_name)
85
+	{
86
+		global $wpdb;
87
+		$table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
88
+		$field_array = array();
89
+		if (! empty($table_name)) {
90
+			$columns = $wpdb->get_results("SHOW COLUMNS FROM {$table_name} ");
91
+			if ($columns !== false) {
92
+				foreach ($columns as $column) {
93
+					$field_array[] = $column->Field;
94
+				}
95
+			}
96
+		}
97
+		return $field_array;
98
+	}
99 99
 
100 100
 
101
-    /**
102
-     * Drops the specified table from the database. $table_name can
103
-     * optionally start with $wpdb->prefix or not
104
-     *
105
-     * @global \wpdb $wpdb
106
-     * @param string $table_name
107
-     * @return int
108
-     */
109
-    public function dropTable($table_name)
110
-    {
111
-        global $wpdb;
112
-        if ($this->getTableAnalysis()->tableExists($table_name)) {
113
-            $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
114
-            return $wpdb->query("DROP TABLE IF EXISTS {$table_name}");
115
-        }
116
-        return 0;
117
-    }
101
+	/**
102
+	 * Drops the specified table from the database. $table_name can
103
+	 * optionally start with $wpdb->prefix or not
104
+	 *
105
+	 * @global \wpdb $wpdb
106
+	 * @param string $table_name
107
+	 * @return int
108
+	 */
109
+	public function dropTable($table_name)
110
+	{
111
+		global $wpdb;
112
+		if ($this->getTableAnalysis()->tableExists($table_name)) {
113
+			$table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
114
+			return $wpdb->query("DROP TABLE IF EXISTS {$table_name}");
115
+		}
116
+		return 0;
117
+	}
118 118
 
119 119
 
120
-    /**
121
-     * Drops all the tables mentioned in a single MYSQL query. Double-checks
122
-     * each table name provided has a wpdb prefix attached, and that it exists.
123
-     * Returns the list actually deleted
124
-     *
125
-     * @global WPDB $wpdb
126
-     * @param array $table_names
127
-     * @return array of table names which we deleted
128
-     */
129
-    public function dropTables($table_names)
130
-    {
131
-        $tables_to_delete = array();
132
-        foreach ($table_names as $table_name) {
133
-            $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
134
-            if ($this->getTableAnalysis()->tableExists($table_name)) {
135
-                $tables_to_delete[ $table_name ] = $table_name;
136
-            }
137
-        }
138
-        if (! empty($tables_to_delete)) {
139
-            global $wpdb;
140
-            // make sure we only have a unique strings in the array.
141
-            $tables_to_delete = array_unique($tables_to_delete);
142
-            $wpdb->query('DROP TABLE ' . implode(', ', $tables_to_delete));
143
-        }
144
-        return $tables_to_delete;
145
-    }
120
+	/**
121
+	 * Drops all the tables mentioned in a single MYSQL query. Double-checks
122
+	 * each table name provided has a wpdb prefix attached, and that it exists.
123
+	 * Returns the list actually deleted
124
+	 *
125
+	 * @global WPDB $wpdb
126
+	 * @param array $table_names
127
+	 * @return array of table names which we deleted
128
+	 */
129
+	public function dropTables($table_names)
130
+	{
131
+		$tables_to_delete = array();
132
+		foreach ($table_names as $table_name) {
133
+			$table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
134
+			if ($this->getTableAnalysis()->tableExists($table_name)) {
135
+				$tables_to_delete[ $table_name ] = $table_name;
136
+			}
137
+		}
138
+		if (! empty($tables_to_delete)) {
139
+			global $wpdb;
140
+			// make sure we only have a unique strings in the array.
141
+			$tables_to_delete = array_unique($tables_to_delete);
142
+			$wpdb->query('DROP TABLE ' . implode(', ', $tables_to_delete));
143
+		}
144
+		return $tables_to_delete;
145
+	}
146 146
 
147 147
 
148
-    /**
149
-     * Drops the specified index from the specified table. $table_name can
150
-     * optionally start with $wpdb->prefix or not
151
-     *
152
-     * @global \wpdb $wpdb
153
-     * @param string $table_name
154
-     * @param string $index_name
155
-     * @return int the number of indexes dropped. False if there was a datbase error
156
-     */
157
-    public function dropIndex($table_name, $index_name)
158
-    {
159
-        if (apply_filters('FHEE__EEH_Activation__drop_index__short_circuit', false)) {
160
-            return 0;
161
-        }
162
-        global $wpdb;
163
-        $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
164
-        $index_exists_query = "SHOW INDEX FROM {$table_name} WHERE key_name = '{$index_name}'";
165
-        if ($this->getTableAnalysis()->tableExists($table_name)
166
-            && $wpdb->get_var($index_exists_query)
167
-               === $table_name // using get_var with the $index_exists_query returns the table's name
168
-        ) {
169
-            return $wpdb->query("ALTER TABLE {$table_name} DROP INDEX {$index_name}");
170
-        }
171
-        return 0;
172
-    }
148
+	/**
149
+	 * Drops the specified index from the specified table. $table_name can
150
+	 * optionally start with $wpdb->prefix or not
151
+	 *
152
+	 * @global \wpdb $wpdb
153
+	 * @param string $table_name
154
+	 * @param string $index_name
155
+	 * @return int the number of indexes dropped. False if there was a datbase error
156
+	 */
157
+	public function dropIndex($table_name, $index_name)
158
+	{
159
+		if (apply_filters('FHEE__EEH_Activation__drop_index__short_circuit', false)) {
160
+			return 0;
161
+		}
162
+		global $wpdb;
163
+		$table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
164
+		$index_exists_query = "SHOW INDEX FROM {$table_name} WHERE key_name = '{$index_name}'";
165
+		if ($this->getTableAnalysis()->tableExists($table_name)
166
+			&& $wpdb->get_var($index_exists_query)
167
+			   === $table_name // using get_var with the $index_exists_query returns the table's name
168
+		) {
169
+			return $wpdb->query("ALTER TABLE {$table_name} DROP INDEX {$index_name}");
170
+		}
171
+		return 0;
172
+	}
173 173
 
174 174
 
175
-    /**
176
-     * Just creates the requested table. $table_name can
177
-     * optionally start with $wpdb->prefix or not
178
-     *
179
-     * @param string $table_name
180
-     * @param string $create_sql defining the table's columns and indexes
181
-     * @param string $engine     (no need to specify "ENGINE=", that's implied)
182
-     * @return void
183
-     * @throws \EE_Error
184
-     */
185
-    public function createTable($table_name, $create_sql, $engine = 'MyISAM')
186
-    {
187
-        $engine = apply_filters(
188
-            'FHEE__EventEspresso_core_services_database_TableManager__createTable__engine',
189
-            $engine,
190
-            $table_name,
191
-            $create_sql
192
-        );
193
-        // does $sql contain valid column information? ( LPT: https://regex101.com/ is great for working out regex patterns )
194
-        if (preg_match('((((.*?))(,\s))+)', $create_sql, $valid_column_data)) {
195
-            $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
196
-            /** @var \wpdb $wpdb */
197
-            global $wpdb;
198
-            $SQL = "CREATE TABLE {$table_name} ( {$create_sql} ) ENGINE={$engine} " . $wpdb->get_charset_collate();
175
+	/**
176
+	 * Just creates the requested table. $table_name can
177
+	 * optionally start with $wpdb->prefix or not
178
+	 *
179
+	 * @param string $table_name
180
+	 * @param string $create_sql defining the table's columns and indexes
181
+	 * @param string $engine     (no need to specify "ENGINE=", that's implied)
182
+	 * @return void
183
+	 * @throws \EE_Error
184
+	 */
185
+	public function createTable($table_name, $create_sql, $engine = 'MyISAM')
186
+	{
187
+		$engine = apply_filters(
188
+			'FHEE__EventEspresso_core_services_database_TableManager__createTable__engine',
189
+			$engine,
190
+			$table_name,
191
+			$create_sql
192
+		);
193
+		// does $sql contain valid column information? ( LPT: https://regex101.com/ is great for working out regex patterns )
194
+		if (preg_match('((((.*?))(,\s))+)', $create_sql, $valid_column_data)) {
195
+			$table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
196
+			/** @var \wpdb $wpdb */
197
+			global $wpdb;
198
+			$SQL = "CREATE TABLE {$table_name} ( {$create_sql} ) ENGINE={$engine} " . $wpdb->get_charset_collate();
199 199
 
200
-            // get $wpdb to echo errors, but buffer them. This way at least WE know an error
201
-            // happened. And then we can choose to tell the end user
202
-            $old_show_errors_policy = $wpdb->show_errors(true);
203
-            $old_error_suppression_policy = $wpdb->suppress_errors(false);
204
-            ob_start();
205
-            dbDelta($SQL);
206
-            $output = ob_get_contents();
207
-            ob_end_clean();
208
-            $wpdb->show_errors($old_show_errors_policy);
209
-            $wpdb->suppress_errors($old_error_suppression_policy);
210
-            if (! empty($output)) {
211
-                throw new \EE_Error($output);
212
-            }
213
-        } else {
214
-            throw new \EE_Error(
215
-                sprintf(
216
-                    __(
217
-                        'The following table creation SQL does not contain valid information about the table columns: %1$s %2$s',
218
-                        'event_espresso'
219
-                    ),
220
-                    '<br />',
221
-                    $create_sql
222
-                )
223
-            );
224
-        }
225
-    }
200
+			// get $wpdb to echo errors, but buffer them. This way at least WE know an error
201
+			// happened. And then we can choose to tell the end user
202
+			$old_show_errors_policy = $wpdb->show_errors(true);
203
+			$old_error_suppression_policy = $wpdb->suppress_errors(false);
204
+			ob_start();
205
+			dbDelta($SQL);
206
+			$output = ob_get_contents();
207
+			ob_end_clean();
208
+			$wpdb->show_errors($old_show_errors_policy);
209
+			$wpdb->suppress_errors($old_error_suppression_policy);
210
+			if (! empty($output)) {
211
+				throw new \EE_Error($output);
212
+			}
213
+		} else {
214
+			throw new \EE_Error(
215
+				sprintf(
216
+					__(
217
+						'The following table creation SQL does not contain valid information about the table columns: %1$s %2$s',
218
+						'event_espresso'
219
+					),
220
+					'<br />',
221
+					$create_sql
222
+				)
223
+			);
224
+		}
225
+	}
226 226
 
227 227
 
228
-    /**
229
-     * Drops the specified index if it's size differs from $desired_index_size.
230
-     * WordPress' dbdelta method doesn't automatically change index sizes, so this
231
-     * method can be used to only drop the index if needed, and afterwards dbdelta can be used as normal.
232
-     * If the table doesn't exist, or it exists but the index does not, or returns false
233
-     *
234
-     * @param string     $table_name
235
-     * @param string     $index_name
236
-     * @param string     $column_name        if none is provided, we assume the column name matches the index (often
237
-     *                                       true in EE)
238
-     * @param string|int $desired_index_size defaults to TableAnalysis::index_col_size, the max for utf8mb4.
239
-     * @return bool whether an index was dropped or not
240
-     * @throws /EE_Error if table analysis object isn't defined
241
-     */
242
-    public function dropIndexIfSizeNot(
243
-        $table_name,
244
-        $index_name,
245
-        $column_name = null,
246
-        $desired_index_size = TableAnalysis::INDEX_COLUMN_SIZE
247
-    ) {
248
-        if ($column_name === null) {
249
-            $column_name = $index_name;
250
-        }
251
-        if (! $this->getTableAnalysis()->tableExists($table_name)) {
252
-            return false;
253
-        }
254
-        $index_entries = $this->getTableAnalysis()->showIndexes($table_name, $index_name);
255
-        if (empty($index_entries)) {
256
-            return false;
257
-        }
258
-        foreach ($index_entries as $index_entry) {
259
-            if ($column_name === $index_entry->Column_name
260
-                && (string) $desired_index_size !== $index_entry->Sub_part) {
261
-                return $this->dropIndex($table_name, $index_name);
262
-            }
263
-        }
264
-        return false;
265
-    }
228
+	/**
229
+	 * Drops the specified index if it's size differs from $desired_index_size.
230
+	 * WordPress' dbdelta method doesn't automatically change index sizes, so this
231
+	 * method can be used to only drop the index if needed, and afterwards dbdelta can be used as normal.
232
+	 * If the table doesn't exist, or it exists but the index does not, or returns false
233
+	 *
234
+	 * @param string     $table_name
235
+	 * @param string     $index_name
236
+	 * @param string     $column_name        if none is provided, we assume the column name matches the index (often
237
+	 *                                       true in EE)
238
+	 * @param string|int $desired_index_size defaults to TableAnalysis::index_col_size, the max for utf8mb4.
239
+	 * @return bool whether an index was dropped or not
240
+	 * @throws /EE_Error if table analysis object isn't defined
241
+	 */
242
+	public function dropIndexIfSizeNot(
243
+		$table_name,
244
+		$index_name,
245
+		$column_name = null,
246
+		$desired_index_size = TableAnalysis::INDEX_COLUMN_SIZE
247
+	) {
248
+		if ($column_name === null) {
249
+			$column_name = $index_name;
250
+		}
251
+		if (! $this->getTableAnalysis()->tableExists($table_name)) {
252
+			return false;
253
+		}
254
+		$index_entries = $this->getTableAnalysis()->showIndexes($table_name, $index_name);
255
+		if (empty($index_entries)) {
256
+			return false;
257
+		}
258
+		foreach ($index_entries as $index_entry) {
259
+			if ($column_name === $index_entry->Column_name
260
+				&& (string) $desired_index_size !== $index_entry->Sub_part) {
261
+				return $this->dropIndex($table_name, $index_name);
262
+			}
263
+		}
264
+		return false;
265
+	}
266 266
 }
Please login to merge, or discard this patch.
core/services/commands/CommandHandlerManager.php 2 patches
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -74,7 +74,7 @@  discard block
 block discarded – undo
74 74
         if (empty($command)) {
75 75
             throw new InvalidCommandHandlerException($command);
76 76
         }
77
-        $this->command_handlers[ $command ] = $command_handler;
77
+        $this->command_handlers[$command] = $command_handler;
78 78
     }
79 79
 
80 80
 
@@ -96,14 +96,14 @@  discard block
 block discarded – undo
96 96
         $handler = null;
97 97
         // has a command handler already been set for this class ?
98 98
         // if not, can we find one via the FQCN ?
99
-        if (isset($this->command_handlers[ $command_name ])) {
100
-            $handler = $this->command_handlers[ $command_name ];
99
+        if (isset($this->command_handlers[$command_name])) {
100
+            $handler = $this->command_handlers[$command_name];
101 101
         } elseif (class_exists($command_handler)) {
102 102
             $handler = $this->loader->getShared($command_handler);
103 103
         }
104 104
         // if Handler requires an instance of the CommandBus, but that has not yet been set
105 105
         if ($handler instanceof CompositeCommandHandler && ! $handler->commandBus() instanceof CommandBusInterface) {
106
-            if (! $command_bus instanceof CommandBusInterface) {
106
+            if ( ! $command_bus instanceof CommandBusInterface) {
107 107
                 throw new DomainException(
108 108
                     esc_html__(
109 109
                         'CompositeCommandHandler classes require an instance of the CommandBus.',
Please login to merge, or discard this patch.
Indentation   +100 added lines, -100 removed lines patch added patch discarded remove patch
@@ -18,83 +18,83 @@  discard block
 block discarded – undo
18 18
 class CommandHandlerManager implements CommandHandlerManagerInterface
19 19
 {
20 20
 
21
-    /**
22
-     * @var CommandHandlerInterface[] $command_handlers
23
-     */
24
-    protected $command_handlers;
21
+	/**
22
+	 * @var CommandHandlerInterface[] $command_handlers
23
+	 */
24
+	protected $command_handlers;
25 25
 
26
-    /**
27
-     * @type LoaderInterface $loader
28
-     */
29
-    private $loader;
26
+	/**
27
+	 * @type LoaderInterface $loader
28
+	 */
29
+	private $loader;
30 30
 
31 31
 
32
-    /**
33
-     * CommandHandlerManager constructor
34
-     *
35
-     * @param LoaderInterface $loader
36
-     */
37
-    public function __construct(LoaderInterface $loader)
38
-    {
39
-        $this->loader = $loader;
40
-    }
32
+	/**
33
+	 * CommandHandlerManager constructor
34
+	 *
35
+	 * @param LoaderInterface $loader
36
+	 */
37
+	public function __construct(LoaderInterface $loader)
38
+	{
39
+		$this->loader = $loader;
40
+	}
41 41
 
42 42
 
43
-    /**
44
-     * By default, Commands and CommandHandlers would normally
45
-     * reside in the same folder under the same namespace,
46
-     * and the names of the two classes would only differ in that
47
-     * one ends in "Command" and the other ends in "CommandHandler".
48
-     * However, if you wanted to utilize a CommandHandler from somewhere else,
49
-     * then this method allows you to add that CommandHandler and specify the FQCN
50
-     * (Fully Qualified ClassName) for the Command class that it should be used for.
51
-     * For example:
52
-     *      by default the "Vendor\some\namespace\DoSomethingCommand"
53
-     *      would resolve to using "Vendor\some\namespace\DoSomethingCommandHandler"
54
-     *      but if you wanted to instead process that commend using:
55
-     *      "Vendor\a\totally\different\namespace\for\DoSomethingCommandHandler"
56
-     *      then the following code:
57
-     *      $CommandHandlerManager = $this->loader->getShared( 'CommandHandlerManagerInterface' );
58
-     *      $CommandHandlerManager->addCommandHandler(
59
-     *          new Vendor\a\totally\different\namespace\for\DoSomethingCommandHandler(),
60
-     *          'Vendor\some\namespace\DoSomethingCommand'
61
-     *      );
62
-     *      would result in the alternate CommandHandler being used to process that Command
63
-     *
64
-     * !!! IMPORTANT !!!
65
-     * If overriding the default CommandHandler for a Command,
66
-     * be sure to also override CommandHandler::verify(),
67
-     * or else an Exception will be thrown when the CommandBus
68
-     * attempts to verify that the incoming Command matches the Handler
69
-     *
70
-     * @param CommandHandlerInterface $command_handler
71
-     * @param string                  $fqcn_for_command Fully Qualified ClassName for Command
72
-     * @return void
73
-     * @throws InvalidCommandHandlerException
74
-     */
75
-    public function addCommandHandler(CommandHandlerInterface $command_handler, $fqcn_for_command = '')
76
-    {
77
-        $command = ! empty($fqcn_for_command)
78
-            ? $fqcn_for_command
79
-            : str_replace('CommandHandler', 'Command', get_class($command_handler));
80
-        if (empty($command)) {
81
-            throw new InvalidCommandHandlerException($command);
82
-        }
83
-        $this->command_handlers[ $command ] = $command_handler;
84
-    }
43
+	/**
44
+	 * By default, Commands and CommandHandlers would normally
45
+	 * reside in the same folder under the same namespace,
46
+	 * and the names of the two classes would only differ in that
47
+	 * one ends in "Command" and the other ends in "CommandHandler".
48
+	 * However, if you wanted to utilize a CommandHandler from somewhere else,
49
+	 * then this method allows you to add that CommandHandler and specify the FQCN
50
+	 * (Fully Qualified ClassName) for the Command class that it should be used for.
51
+	 * For example:
52
+	 *      by default the "Vendor\some\namespace\DoSomethingCommand"
53
+	 *      would resolve to using "Vendor\some\namespace\DoSomethingCommandHandler"
54
+	 *      but if you wanted to instead process that commend using:
55
+	 *      "Vendor\a\totally\different\namespace\for\DoSomethingCommandHandler"
56
+	 *      then the following code:
57
+	 *      $CommandHandlerManager = $this->loader->getShared( 'CommandHandlerManagerInterface' );
58
+	 *      $CommandHandlerManager->addCommandHandler(
59
+	 *          new Vendor\a\totally\different\namespace\for\DoSomethingCommandHandler(),
60
+	 *          'Vendor\some\namespace\DoSomethingCommand'
61
+	 *      );
62
+	 *      would result in the alternate CommandHandler being used to process that Command
63
+	 *
64
+	 * !!! IMPORTANT !!!
65
+	 * If overriding the default CommandHandler for a Command,
66
+	 * be sure to also override CommandHandler::verify(),
67
+	 * or else an Exception will be thrown when the CommandBus
68
+	 * attempts to verify that the incoming Command matches the Handler
69
+	 *
70
+	 * @param CommandHandlerInterface $command_handler
71
+	 * @param string                  $fqcn_for_command Fully Qualified ClassName for Command
72
+	 * @return void
73
+	 * @throws InvalidCommandHandlerException
74
+	 */
75
+	public function addCommandHandler(CommandHandlerInterface $command_handler, $fqcn_for_command = '')
76
+	{
77
+		$command = ! empty($fqcn_for_command)
78
+			? $fqcn_for_command
79
+			: str_replace('CommandHandler', 'Command', get_class($command_handler));
80
+		if (empty($command)) {
81
+			throw new InvalidCommandHandlerException($command);
82
+		}
83
+		$this->command_handlers[ $command ] = $command_handler;
84
+	}
85 85
 
86 86
 
87
-    /**
88
-     * @param CommandInterface    $command
89
-     * @param CommandBusInterface $command_bus
90
-     * @return mixed
91
-     * @throws DomainException
92
-     * @throws CommandHandlerNotFoundException
93
-     */
94
-    public function getCommandHandler(CommandInterface $command, CommandBusInterface $command_bus = null)
95
-    {
96
-        $command_name = get_class($command);
97
-        /*
87
+	/**
88
+	 * @param CommandInterface    $command
89
+	 * @param CommandBusInterface $command_bus
90
+	 * @return mixed
91
+	 * @throws DomainException
92
+	 * @throws CommandHandlerNotFoundException
93
+	 */
94
+	public function getCommandHandler(CommandInterface $command, CommandBusInterface $command_bus = null)
95
+	{
96
+		$command_name = get_class($command);
97
+		/*
98 98
          * Filters the Fully Qualified Class Name for the Command Handler
99 99
          * that will be used to handle the incoming Command
100 100
          *
@@ -107,34 +107,34 @@  discard block
 block discarded – undo
107 107
          * @param string "CommandHandler::class" Fully Qualified Class Name for the Command Handler
108 108
          * @param CommandInterface $command the actual Command instance
109 109
          */
110
-        $command_handler = apply_filters(
111
-            'FHEE__EventEspresso_core_services_commands_CommandHandlerManager__getCommandHandler__command_handler',
112
-            str_replace('Command', 'CommandHandler', $command_name),
113
-            $command
114
-        );
115
-        $handler = null;
116
-        // has a command handler already been set for this class ?
117
-        // if not, can we find one via the FQCN ?
118
-        if (isset($this->command_handlers[ $command_name ])) {
119
-            $handler = $this->command_handlers[ $command_name ];
120
-        } elseif (class_exists($command_handler)) {
121
-            $handler = $this->loader->getShared($command_handler);
122
-        }
123
-        // if Handler requires an instance of the CommandBus, but that has not yet been set
124
-        if ($handler instanceof CompositeCommandHandler && ! $handler->commandBus() instanceof CommandBusInterface) {
125
-            if (! $command_bus instanceof CommandBusInterface) {
126
-                throw new DomainException(
127
-                    esc_html__(
128
-                        'CompositeCommandHandler classes require an instance of the CommandBus.',
129
-                        'event_espresso'
130
-                    )
131
-                );
132
-            }
133
-            $handler->setCommandBus($command_bus);
134
-        }
135
-        if ($handler instanceof CommandHandlerInterface) {
136
-            return $handler;
137
-        }
138
-        throw new CommandHandlerNotFoundException($command_handler);
139
-    }
110
+		$command_handler = apply_filters(
111
+			'FHEE__EventEspresso_core_services_commands_CommandHandlerManager__getCommandHandler__command_handler',
112
+			str_replace('Command', 'CommandHandler', $command_name),
113
+			$command
114
+		);
115
+		$handler = null;
116
+		// has a command handler already been set for this class ?
117
+		// if not, can we find one via the FQCN ?
118
+		if (isset($this->command_handlers[ $command_name ])) {
119
+			$handler = $this->command_handlers[ $command_name ];
120
+		} elseif (class_exists($command_handler)) {
121
+			$handler = $this->loader->getShared($command_handler);
122
+		}
123
+		// if Handler requires an instance of the CommandBus, but that has not yet been set
124
+		if ($handler instanceof CompositeCommandHandler && ! $handler->commandBus() instanceof CommandBusInterface) {
125
+			if (! $command_bus instanceof CommandBusInterface) {
126
+				throw new DomainException(
127
+					esc_html__(
128
+						'CompositeCommandHandler classes require an instance of the CommandBus.',
129
+						'event_espresso'
130
+					)
131
+				);
132
+			}
133
+			$handler->setCommandBus($command_bus);
134
+		}
135
+		if ($handler instanceof CommandHandlerInterface) {
136
+			return $handler;
137
+		}
138
+		throw new CommandHandlerNotFoundException($command_handler);
139
+	}
140 140
 }
Please login to merge, or discard this patch.