Completed
Branch FET/asset-manager (433489)
by
unknown
32:42 queued 18:11
created
core/services/request/Request.php 2 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.
Indentation   +573 added lines, -573 removed lines patch added patch discarded remove patch
@@ -17,577 +17,577 @@
 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
-     * $_REQUEST parameters
50
-     *
51
-     * @var array $request
52
-     */
53
-    private $request;
54
-
55
-    /**
56
-     * @var RequestTypeContextCheckerInterface
57
-     */
58
-    private $request_type;
59
-
60
-    /**
61
-     * IP address for request
62
-     *
63
-     * @var string $ip_address
64
-     */
65
-    private $ip_address;
66
-
67
-    /**
68
-     * @var string $user_agent
69
-     */
70
-    private $user_agent;
71
-
72
-    /**
73
-     * true if current user appears to be some kind of bot
74
-     *
75
-     * @var bool $is_bot
76
-     */
77
-    private $is_bot;
78
-
79
-
80
-    /**
81
-     * @param array $get
82
-     * @param array $post
83
-     * @param array $cookie
84
-     * @param array $server
85
-     */
86
-    public function __construct(array $get, array $post, array $cookie, array $server)
87
-    {
88
-        // grab request vars
89
-        $this->get = $get;
90
-        $this->post = $post;
91
-        $this->cookie = $cookie;
92
-        $this->server = $server;
93
-        $this->request = array_merge($this->get, $this->post);
94
-        $this->ip_address = $this->visitorIp();
95
-    }
96
-
97
-
98
-    /**
99
-     * @param RequestTypeContextCheckerInterface $type
100
-     */
101
-    public function setRequestTypeContextChecker(RequestTypeContextCheckerInterface $type)
102
-    {
103
-        $this->request_type = $type;
104
-    }
105
-
106
-
107
-    /**
108
-     * @return array
109
-     */
110
-    public function getParams()
111
-    {
112
-        return $this->get;
113
-    }
114
-
115
-
116
-    /**
117
-     * @return array
118
-     */
119
-    public function postParams()
120
-    {
121
-        return $this->post;
122
-    }
123
-
124
-
125
-    /**
126
-     * @return array
127
-     */
128
-    public function cookieParams()
129
-    {
130
-        return $this->cookie;
131
-    }
132
-
133
-
134
-    /**
135
-     * @return array
136
-     */
137
-    public function serverParams()
138
-    {
139
-        return $this->server;
140
-    }
141
-
142
-
143
-    /**
144
-     * returns contents of $_REQUEST
145
-     *
146
-     * @return array
147
-     */
148
-    public function requestParams()
149
-    {
150
-        return $this->request;
151
-    }
152
-
153
-
154
-    /**
155
-     * @param      $key
156
-     * @param      $value
157
-     * @param bool $override_ee
158
-     * @return    void
159
-     */
160
-    public function setRequestParam($key, $value, $override_ee = false)
161
-    {
162
-        // don't allow "ee" to be overwritten unless explicitly instructed to do so
163
-        if ($key !== 'ee'
164
-            || ($key === 'ee' && empty($this->request['ee']))
165
-            || ($key === 'ee' && ! empty($this->request['ee']) && $override_ee)
166
-        ) {
167
-            $this->request[ $key ] = $value;
168
-        }
169
-    }
170
-
171
-
172
-    /**
173
-     * returns   the value for a request param if the given key exists
174
-     *
175
-     * @param       $key
176
-     * @param null  $default
177
-     * @return mixed
178
-     */
179
-    public function getRequestParam($key, $default = null)
180
-    {
181
-        return $this->requestParameterDrillDown($key, $default, 'get');
182
-    }
183
-
184
-
185
-    /**
186
-     * check if param exists
187
-     *
188
-     * @param       $key
189
-     * @return bool
190
-     */
191
-    public function requestParamIsSet($key)
192
-    {
193
-        return $this->requestParameterDrillDown($key);
194
-    }
195
-
196
-
197
-    /**
198
-     * check if a request parameter exists whose key that matches the supplied wildcard pattern
199
-     * and return the value for the first match found
200
-     * wildcards can be either of the following:
201
-     *      ? to represent a single character of any type
202
-     *      * to represent one or more characters of any type
203
-     *
204
-     * @param string     $pattern
205
-     * @param null|mixed $default
206
-     * @return false|int
207
-     */
208
-    public function getMatch($pattern, $default = null)
209
-    {
210
-        return $this->requestParameterDrillDown($pattern, $default, 'match');
211
-    }
212
-
213
-
214
-    /**
215
-     * check if a request parameter exists whose key matches the supplied wildcard pattern
216
-     * wildcards can be either of the following:
217
-     *      ? to represent a single character of any type
218
-     *      * to represent one or more characters of any type
219
-     * returns true if a match is found or false if not
220
-     *
221
-     * @param string $pattern
222
-     * @return false|int
223
-     */
224
-    public function matches($pattern)
225
-    {
226
-        return $this->requestParameterDrillDown($pattern, null, 'match') !== null;
227
-    }
228
-
229
-
230
-    /**
231
-     * @see https://stackoverflow.com/questions/6163055/php-string-matching-with-wildcard
232
-     * @param string $pattern               A string including wildcards to be converted to a regex pattern
233
-     *                                      and used to search through the current request's parameter keys
234
-     * @param array  $request_params        The array of request parameters to search through
235
-     * @param mixed  $default               [optional] The value to be returned if no match is found.
236
-     *                                      Default is null
237
-     * @param string $return                [optional] Controls what kind of value is returned.
238
-     *                                      Options are:
239
-     *                                      'bool' will return true or false if match is found or not
240
-     *                                      'key' will return the first key found that matches the supplied pattern
241
-     *                                      'value' will return the value for the first request parameter
242
-     *                                      whose key matches the supplied pattern
243
-     *                                      Default is 'value'
244
-     * @return boolean|string
245
-     */
246
-    private function match($pattern, array $request_params, $default = null, $return = 'value')
247
-    {
248
-        $return = in_array($return, array('bool', 'key', 'value'), true)
249
-            ? $return
250
-            : 'is_set';
251
-        // replace wildcard chars with regex chars
252
-        $pattern = str_replace(
253
-            array("\*", "\?"),
254
-            array('.*', '.'),
255
-            preg_quote($pattern, '/')
256
-        );
257
-        foreach ($request_params as $key => $request_param) {
258
-            if (preg_match('/^' . $pattern . '$/is', $key)) {
259
-                // return value for request param
260
-                if ($return === 'value') {
261
-                    return $request_params[ $key ];
262
-                }
263
-                // or actual key or true just to indicate it was found
264
-                return $return === 'key' ? $key : true;
265
-            }
266
-        }
267
-        // match not found so return default value or false
268
-        return $return === 'value' ? $default : false;
269
-    }
270
-
271
-
272
-    /**
273
-     * the supplied key can be a simple string to represent a "top-level" request parameter
274
-     * or represent a key for a request parameter that is nested deeper within the request parameter array,
275
-     * by using square brackets to surround keys for deeper array elements.
276
-     * For example :
277
-     * if the supplied $key was: "first[second][third]"
278
-     * then this will attempt to drill down into the request parameter array to find a value.
279
-     * Given the following request parameters:
280
-     *  array(
281
-     *      'first' => array(
282
-     *          'second' => array(
283
-     *              'third' => 'has a value'
284
-     *          )
285
-     *      )
286
-     *  )
287
-     * would return true if default parameters were set
288
-     *
289
-     * @param string $callback
290
-     * @param        $key
291
-     * @param null   $default
292
-     * @param array  $request_params
293
-     * @return bool|mixed|null
294
-     */
295
-    private function requestParameterDrillDown(
296
-        $key,
297
-        $default = null,
298
-        $callback = 'is_set',
299
-        array $request_params = array()
300
-    ) {
301
-        $callback = in_array($callback, array('is_set', 'get', 'match'), true)
302
-            ? $callback
303
-            : 'is_set';
304
-        $request_params = ! empty($request_params)
305
-            ? $request_params
306
-            : $this->request;
307
-        // does incoming key represent an array like 'first[second][third]'  ?
308
-        if (strpos($key, '[') !== false) {
309
-            // turn it into an actual array
310
-            $key = str_replace(']', '', $key);
311
-            $keys = explode('[', $key);
312
-            $key = array_shift($keys);
313
-            if ($callback === 'match') {
314
-                $real_key = $this->match($key, $request_params, $default, 'key');
315
-                $key = $real_key ? $real_key : $key;
316
-            }
317
-            // check if top level key exists
318
-            if (isset($request_params[ $key ])) {
319
-                // build a new key to pass along like: 'second[third]'
320
-                // or just 'second' depending on depth of keys
321
-                $key_string = array_shift($keys);
322
-                if (! empty($keys)) {
323
-                    $key_string .= '[' . implode('][', $keys) . ']';
324
-                }
325
-                return $this->requestParameterDrillDown(
326
-                    $key_string,
327
-                    $default,
328
-                    $callback,
329
-                    $request_params[ $key ]
330
-                );
331
-            }
332
-        }
333
-        if ($callback === 'is_set') {
334
-            return isset($request_params[ $key ]);
335
-        }
336
-        if ($callback === 'match') {
337
-            return $this->match($key, $request_params, $default);
338
-        }
339
-        return isset($request_params[ $key ])
340
-            ? $request_params[ $key ]
341
-            : $default;
342
-    }
343
-
344
-
345
-    /**
346
-     * remove param
347
-     *
348
-     * @param      $key
349
-     * @param bool $unset_from_global_too
350
-     */
351
-    public function unSetRequestParam($key, $unset_from_global_too = false)
352
-    {
353
-        unset($this->request[ $key ]);
354
-        if ($unset_from_global_too) {
355
-            unset($_REQUEST[ $key ]);
356
-        }
357
-    }
358
-
359
-
360
-    /**
361
-     * @return string
362
-     */
363
-    public function ipAddress()
364
-    {
365
-        return $this->ip_address;
366
-    }
367
-
368
-
369
-    /**
370
-     * attempt to get IP address of current visitor from server
371
-     * plz see: http://stackoverflow.com/a/2031935/1475279
372
-     *
373
-     * @access public
374
-     * @return string
375
-     */
376
-    private function visitorIp()
377
-    {
378
-        $visitor_ip = '0.0.0.0';
379
-        $server_keys = array(
380
-            'HTTP_CLIENT_IP',
381
-            'HTTP_X_FORWARDED_FOR',
382
-            'HTTP_X_FORWARDED',
383
-            'HTTP_X_CLUSTER_CLIENT_IP',
384
-            'HTTP_FORWARDED_FOR',
385
-            'HTTP_FORWARDED',
386
-            'REMOTE_ADDR',
387
-        );
388
-        foreach ($server_keys as $key) {
389
-            if (isset($this->server[ $key ])) {
390
-                foreach (array_map('trim', explode(',', $this->server[ $key ])) as $ip) {
391
-                    if ($ip === '127.0.0.1' || filter_var($ip, FILTER_VALIDATE_IP) !== false) {
392
-                        $visitor_ip = $ip;
393
-                    }
394
-                }
395
-            }
396
-        }
397
-        return $visitor_ip;
398
-    }
399
-
400
-
401
-    /**
402
-     * @return string
403
-     */
404
-    public function requestUri()
405
-    {
406
-        $request_uri = filter_input(
407
-            INPUT_SERVER,
408
-            'REQUEST_URI',
409
-            FILTER_SANITIZE_URL,
410
-            FILTER_NULL_ON_FAILURE
411
-        );
412
-        if (empty($request_uri)) {
413
-            // fallback sanitization if the above fails
414
-            $request_uri = wp_sanitize_redirect($this->server['REQUEST_URI']);
415
-        }
416
-        return $request_uri;
417
-    }
418
-
419
-
420
-    /**
421
-     * @return string
422
-     */
423
-    public function userAgent()
424
-    {
425
-        return $this->user_agent;
426
-    }
427
-
428
-
429
-    /**
430
-     * @param string $user_agent
431
-     */
432
-    public function setUserAgent($user_agent = '')
433
-    {
434
-        if ($user_agent === '' || ! is_string($user_agent)) {
435
-            $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? (string) esc_attr($_SERVER['HTTP_USER_AGENT']) : '';
436
-        }
437
-        $this->user_agent = $user_agent;
438
-    }
439
-
440
-
441
-    /**
442
-     * @return bool
443
-     */
444
-    public function isBot()
445
-    {
446
-        return $this->is_bot;
447
-    }
448
-
449
-
450
-    /**
451
-     * @param bool $is_bot
452
-     */
453
-    public function setIsBot($is_bot)
454
-    {
455
-        $this->is_bot = filter_var($is_bot, FILTER_VALIDATE_BOOLEAN);
456
-    }
457
-
458
-
459
-    /**
460
-     * @return bool
461
-     */
462
-    public function isActivation()
463
-    {
464
-        return $this->request_type->isActivation();
465
-    }
466
-
467
-
468
-    /**
469
-     * @param $is_activation
470
-     * @return bool
471
-     */
472
-    public function setIsActivation($is_activation)
473
-    {
474
-        return $this->request_type->setIsActivation($is_activation);
475
-    }
476
-
477
-
478
-    /**
479
-     * @return bool
480
-     */
481
-    public function isAdmin()
482
-    {
483
-        return $this->request_type->isAdmin();
484
-    }
485
-
486
-
487
-    /**
488
-     * @return bool
489
-     */
490
-    public function isAdminAjax()
491
-    {
492
-        return $this->request_type->isAdminAjax();
493
-    }
494
-
495
-
496
-    /**
497
-     * @return bool
498
-     */
499
-    public function isAjax()
500
-    {
501
-        return $this->request_type->isAjax();
502
-    }
503
-
504
-
505
-    /**
506
-     * @return bool
507
-     */
508
-    public function isEeAjax()
509
-    {
510
-        return $this->request_type->isEeAjax();
511
-    }
512
-
513
-
514
-    /**
515
-     * @return bool
516
-     */
517
-    public function isOtherAjax()
518
-    {
519
-        return $this->request_type->isOtherAjax();
520
-    }
521
-
522
-
523
-    /**
524
-     * @return bool
525
-     */
526
-    public function isApi()
527
-    {
528
-        return $this->request_type->isApi();
529
-    }
530
-
531
-
532
-    /**
533
-     * @return bool
534
-     */
535
-    public function isCli()
536
-    {
537
-        return $this->request_type->isCli();
538
-    }
539
-
540
-
541
-    /**
542
-     * @return bool
543
-     */
544
-    public function isCron()
545
-    {
546
-        return $this->request_type->isCron();
547
-    }
548
-
549
-
550
-    /**
551
-     * @return bool
552
-     */
553
-    public function isFeed()
554
-    {
555
-        return $this->request_type->isFeed();
556
-    }
557
-
558
-
559
-    /**
560
-     * @return bool
561
-     */
562
-    public function isFrontend()
563
-    {
564
-        return $this->request_type->isFrontend();
565
-    }
566
-
567
-
568
-    /**
569
-     * @return bool
570
-     */
571
-    public function isFrontAjax()
572
-    {
573
-        return $this->request_type->isFrontAjax();
574
-    }
575
-
576
-
577
-    /**
578
-     * @return bool
579
-     */
580
-    public function isIframe()
581
-    {
582
-        return $this->request_type->isIframe();
583
-    }
584
-
585
-
586
-    /**
587
-     * @return string
588
-     */
589
-    public function slug()
590
-    {
591
-        return $this->request_type->slug();
592
-    }
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
+	 * $_REQUEST parameters
50
+	 *
51
+	 * @var array $request
52
+	 */
53
+	private $request;
54
+
55
+	/**
56
+	 * @var RequestTypeContextCheckerInterface
57
+	 */
58
+	private $request_type;
59
+
60
+	/**
61
+	 * IP address for request
62
+	 *
63
+	 * @var string $ip_address
64
+	 */
65
+	private $ip_address;
66
+
67
+	/**
68
+	 * @var string $user_agent
69
+	 */
70
+	private $user_agent;
71
+
72
+	/**
73
+	 * true if current user appears to be some kind of bot
74
+	 *
75
+	 * @var bool $is_bot
76
+	 */
77
+	private $is_bot;
78
+
79
+
80
+	/**
81
+	 * @param array $get
82
+	 * @param array $post
83
+	 * @param array $cookie
84
+	 * @param array $server
85
+	 */
86
+	public function __construct(array $get, array $post, array $cookie, array $server)
87
+	{
88
+		// grab request vars
89
+		$this->get = $get;
90
+		$this->post = $post;
91
+		$this->cookie = $cookie;
92
+		$this->server = $server;
93
+		$this->request = array_merge($this->get, $this->post);
94
+		$this->ip_address = $this->visitorIp();
95
+	}
96
+
97
+
98
+	/**
99
+	 * @param RequestTypeContextCheckerInterface $type
100
+	 */
101
+	public function setRequestTypeContextChecker(RequestTypeContextCheckerInterface $type)
102
+	{
103
+		$this->request_type = $type;
104
+	}
105
+
106
+
107
+	/**
108
+	 * @return array
109
+	 */
110
+	public function getParams()
111
+	{
112
+		return $this->get;
113
+	}
114
+
115
+
116
+	/**
117
+	 * @return array
118
+	 */
119
+	public function postParams()
120
+	{
121
+		return $this->post;
122
+	}
123
+
124
+
125
+	/**
126
+	 * @return array
127
+	 */
128
+	public function cookieParams()
129
+	{
130
+		return $this->cookie;
131
+	}
132
+
133
+
134
+	/**
135
+	 * @return array
136
+	 */
137
+	public function serverParams()
138
+	{
139
+		return $this->server;
140
+	}
141
+
142
+
143
+	/**
144
+	 * returns contents of $_REQUEST
145
+	 *
146
+	 * @return array
147
+	 */
148
+	public function requestParams()
149
+	{
150
+		return $this->request;
151
+	}
152
+
153
+
154
+	/**
155
+	 * @param      $key
156
+	 * @param      $value
157
+	 * @param bool $override_ee
158
+	 * @return    void
159
+	 */
160
+	public function setRequestParam($key, $value, $override_ee = false)
161
+	{
162
+		// don't allow "ee" to be overwritten unless explicitly instructed to do so
163
+		if ($key !== 'ee'
164
+			|| ($key === 'ee' && empty($this->request['ee']))
165
+			|| ($key === 'ee' && ! empty($this->request['ee']) && $override_ee)
166
+		) {
167
+			$this->request[ $key ] = $value;
168
+		}
169
+	}
170
+
171
+
172
+	/**
173
+	 * returns   the value for a request param if the given key exists
174
+	 *
175
+	 * @param       $key
176
+	 * @param null  $default
177
+	 * @return mixed
178
+	 */
179
+	public function getRequestParam($key, $default = null)
180
+	{
181
+		return $this->requestParameterDrillDown($key, $default, 'get');
182
+	}
183
+
184
+
185
+	/**
186
+	 * check if param exists
187
+	 *
188
+	 * @param       $key
189
+	 * @return bool
190
+	 */
191
+	public function requestParamIsSet($key)
192
+	{
193
+		return $this->requestParameterDrillDown($key);
194
+	}
195
+
196
+
197
+	/**
198
+	 * check if a request parameter exists whose key that matches the supplied wildcard pattern
199
+	 * and return the value for the first match found
200
+	 * wildcards can be either of the following:
201
+	 *      ? to represent a single character of any type
202
+	 *      * to represent one or more characters of any type
203
+	 *
204
+	 * @param string     $pattern
205
+	 * @param null|mixed $default
206
+	 * @return false|int
207
+	 */
208
+	public function getMatch($pattern, $default = null)
209
+	{
210
+		return $this->requestParameterDrillDown($pattern, $default, 'match');
211
+	}
212
+
213
+
214
+	/**
215
+	 * check if a request parameter exists whose key matches the supplied wildcard pattern
216
+	 * wildcards can be either of the following:
217
+	 *      ? to represent a single character of any type
218
+	 *      * to represent one or more characters of any type
219
+	 * returns true if a match is found or false if not
220
+	 *
221
+	 * @param string $pattern
222
+	 * @return false|int
223
+	 */
224
+	public function matches($pattern)
225
+	{
226
+		return $this->requestParameterDrillDown($pattern, null, 'match') !== null;
227
+	}
228
+
229
+
230
+	/**
231
+	 * @see https://stackoverflow.com/questions/6163055/php-string-matching-with-wildcard
232
+	 * @param string $pattern               A string including wildcards to be converted to a regex pattern
233
+	 *                                      and used to search through the current request's parameter keys
234
+	 * @param array  $request_params        The array of request parameters to search through
235
+	 * @param mixed  $default               [optional] The value to be returned if no match is found.
236
+	 *                                      Default is null
237
+	 * @param string $return                [optional] Controls what kind of value is returned.
238
+	 *                                      Options are:
239
+	 *                                      'bool' will return true or false if match is found or not
240
+	 *                                      'key' will return the first key found that matches the supplied pattern
241
+	 *                                      'value' will return the value for the first request parameter
242
+	 *                                      whose key matches the supplied pattern
243
+	 *                                      Default is 'value'
244
+	 * @return boolean|string
245
+	 */
246
+	private function match($pattern, array $request_params, $default = null, $return = 'value')
247
+	{
248
+		$return = in_array($return, array('bool', 'key', 'value'), true)
249
+			? $return
250
+			: 'is_set';
251
+		// replace wildcard chars with regex chars
252
+		$pattern = str_replace(
253
+			array("\*", "\?"),
254
+			array('.*', '.'),
255
+			preg_quote($pattern, '/')
256
+		);
257
+		foreach ($request_params as $key => $request_param) {
258
+			if (preg_match('/^' . $pattern . '$/is', $key)) {
259
+				// return value for request param
260
+				if ($return === 'value') {
261
+					return $request_params[ $key ];
262
+				}
263
+				// or actual key or true just to indicate it was found
264
+				return $return === 'key' ? $key : true;
265
+			}
266
+		}
267
+		// match not found so return default value or false
268
+		return $return === 'value' ? $default : false;
269
+	}
270
+
271
+
272
+	/**
273
+	 * the supplied key can be a simple string to represent a "top-level" request parameter
274
+	 * or represent a key for a request parameter that is nested deeper within the request parameter array,
275
+	 * by using square brackets to surround keys for deeper array elements.
276
+	 * For example :
277
+	 * if the supplied $key was: "first[second][third]"
278
+	 * then this will attempt to drill down into the request parameter array to find a value.
279
+	 * Given the following request parameters:
280
+	 *  array(
281
+	 *      'first' => array(
282
+	 *          'second' => array(
283
+	 *              'third' => 'has a value'
284
+	 *          )
285
+	 *      )
286
+	 *  )
287
+	 * would return true if default parameters were set
288
+	 *
289
+	 * @param string $callback
290
+	 * @param        $key
291
+	 * @param null   $default
292
+	 * @param array  $request_params
293
+	 * @return bool|mixed|null
294
+	 */
295
+	private function requestParameterDrillDown(
296
+		$key,
297
+		$default = null,
298
+		$callback = 'is_set',
299
+		array $request_params = array()
300
+	) {
301
+		$callback = in_array($callback, array('is_set', 'get', 'match'), true)
302
+			? $callback
303
+			: 'is_set';
304
+		$request_params = ! empty($request_params)
305
+			? $request_params
306
+			: $this->request;
307
+		// does incoming key represent an array like 'first[second][third]'  ?
308
+		if (strpos($key, '[') !== false) {
309
+			// turn it into an actual array
310
+			$key = str_replace(']', '', $key);
311
+			$keys = explode('[', $key);
312
+			$key = array_shift($keys);
313
+			if ($callback === 'match') {
314
+				$real_key = $this->match($key, $request_params, $default, 'key');
315
+				$key = $real_key ? $real_key : $key;
316
+			}
317
+			// check if top level key exists
318
+			if (isset($request_params[ $key ])) {
319
+				// build a new key to pass along like: 'second[third]'
320
+				// or just 'second' depending on depth of keys
321
+				$key_string = array_shift($keys);
322
+				if (! empty($keys)) {
323
+					$key_string .= '[' . implode('][', $keys) . ']';
324
+				}
325
+				return $this->requestParameterDrillDown(
326
+					$key_string,
327
+					$default,
328
+					$callback,
329
+					$request_params[ $key ]
330
+				);
331
+			}
332
+		}
333
+		if ($callback === 'is_set') {
334
+			return isset($request_params[ $key ]);
335
+		}
336
+		if ($callback === 'match') {
337
+			return $this->match($key, $request_params, $default);
338
+		}
339
+		return isset($request_params[ $key ])
340
+			? $request_params[ $key ]
341
+			: $default;
342
+	}
343
+
344
+
345
+	/**
346
+	 * remove param
347
+	 *
348
+	 * @param      $key
349
+	 * @param bool $unset_from_global_too
350
+	 */
351
+	public function unSetRequestParam($key, $unset_from_global_too = false)
352
+	{
353
+		unset($this->request[ $key ]);
354
+		if ($unset_from_global_too) {
355
+			unset($_REQUEST[ $key ]);
356
+		}
357
+	}
358
+
359
+
360
+	/**
361
+	 * @return string
362
+	 */
363
+	public function ipAddress()
364
+	{
365
+		return $this->ip_address;
366
+	}
367
+
368
+
369
+	/**
370
+	 * attempt to get IP address of current visitor from server
371
+	 * plz see: http://stackoverflow.com/a/2031935/1475279
372
+	 *
373
+	 * @access public
374
+	 * @return string
375
+	 */
376
+	private function visitorIp()
377
+	{
378
+		$visitor_ip = '0.0.0.0';
379
+		$server_keys = array(
380
+			'HTTP_CLIENT_IP',
381
+			'HTTP_X_FORWARDED_FOR',
382
+			'HTTP_X_FORWARDED',
383
+			'HTTP_X_CLUSTER_CLIENT_IP',
384
+			'HTTP_FORWARDED_FOR',
385
+			'HTTP_FORWARDED',
386
+			'REMOTE_ADDR',
387
+		);
388
+		foreach ($server_keys as $key) {
389
+			if (isset($this->server[ $key ])) {
390
+				foreach (array_map('trim', explode(',', $this->server[ $key ])) as $ip) {
391
+					if ($ip === '127.0.0.1' || filter_var($ip, FILTER_VALIDATE_IP) !== false) {
392
+						$visitor_ip = $ip;
393
+					}
394
+				}
395
+			}
396
+		}
397
+		return $visitor_ip;
398
+	}
399
+
400
+
401
+	/**
402
+	 * @return string
403
+	 */
404
+	public function requestUri()
405
+	{
406
+		$request_uri = filter_input(
407
+			INPUT_SERVER,
408
+			'REQUEST_URI',
409
+			FILTER_SANITIZE_URL,
410
+			FILTER_NULL_ON_FAILURE
411
+		);
412
+		if (empty($request_uri)) {
413
+			// fallback sanitization if the above fails
414
+			$request_uri = wp_sanitize_redirect($this->server['REQUEST_URI']);
415
+		}
416
+		return $request_uri;
417
+	}
418
+
419
+
420
+	/**
421
+	 * @return string
422
+	 */
423
+	public function userAgent()
424
+	{
425
+		return $this->user_agent;
426
+	}
427
+
428
+
429
+	/**
430
+	 * @param string $user_agent
431
+	 */
432
+	public function setUserAgent($user_agent = '')
433
+	{
434
+		if ($user_agent === '' || ! is_string($user_agent)) {
435
+			$user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? (string) esc_attr($_SERVER['HTTP_USER_AGENT']) : '';
436
+		}
437
+		$this->user_agent = $user_agent;
438
+	}
439
+
440
+
441
+	/**
442
+	 * @return bool
443
+	 */
444
+	public function isBot()
445
+	{
446
+		return $this->is_bot;
447
+	}
448
+
449
+
450
+	/**
451
+	 * @param bool $is_bot
452
+	 */
453
+	public function setIsBot($is_bot)
454
+	{
455
+		$this->is_bot = filter_var($is_bot, FILTER_VALIDATE_BOOLEAN);
456
+	}
457
+
458
+
459
+	/**
460
+	 * @return bool
461
+	 */
462
+	public function isActivation()
463
+	{
464
+		return $this->request_type->isActivation();
465
+	}
466
+
467
+
468
+	/**
469
+	 * @param $is_activation
470
+	 * @return bool
471
+	 */
472
+	public function setIsActivation($is_activation)
473
+	{
474
+		return $this->request_type->setIsActivation($is_activation);
475
+	}
476
+
477
+
478
+	/**
479
+	 * @return bool
480
+	 */
481
+	public function isAdmin()
482
+	{
483
+		return $this->request_type->isAdmin();
484
+	}
485
+
486
+
487
+	/**
488
+	 * @return bool
489
+	 */
490
+	public function isAdminAjax()
491
+	{
492
+		return $this->request_type->isAdminAjax();
493
+	}
494
+
495
+
496
+	/**
497
+	 * @return bool
498
+	 */
499
+	public function isAjax()
500
+	{
501
+		return $this->request_type->isAjax();
502
+	}
503
+
504
+
505
+	/**
506
+	 * @return bool
507
+	 */
508
+	public function isEeAjax()
509
+	{
510
+		return $this->request_type->isEeAjax();
511
+	}
512
+
513
+
514
+	/**
515
+	 * @return bool
516
+	 */
517
+	public function isOtherAjax()
518
+	{
519
+		return $this->request_type->isOtherAjax();
520
+	}
521
+
522
+
523
+	/**
524
+	 * @return bool
525
+	 */
526
+	public function isApi()
527
+	{
528
+		return $this->request_type->isApi();
529
+	}
530
+
531
+
532
+	/**
533
+	 * @return bool
534
+	 */
535
+	public function isCli()
536
+	{
537
+		return $this->request_type->isCli();
538
+	}
539
+
540
+
541
+	/**
542
+	 * @return bool
543
+	 */
544
+	public function isCron()
545
+	{
546
+		return $this->request_type->isCron();
547
+	}
548
+
549
+
550
+	/**
551
+	 * @return bool
552
+	 */
553
+	public function isFeed()
554
+	{
555
+		return $this->request_type->isFeed();
556
+	}
557
+
558
+
559
+	/**
560
+	 * @return bool
561
+	 */
562
+	public function isFrontend()
563
+	{
564
+		return $this->request_type->isFrontend();
565
+	}
566
+
567
+
568
+	/**
569
+	 * @return bool
570
+	 */
571
+	public function isFrontAjax()
572
+	{
573
+		return $this->request_type->isFrontAjax();
574
+	}
575
+
576
+
577
+	/**
578
+	 * @return bool
579
+	 */
580
+	public function isIframe()
581
+	{
582
+		return $this->request_type->isIframe();
583
+	}
584
+
585
+
586
+	/**
587
+	 * @return string
588
+	 */
589
+	public function slug()
590
+	{
591
+		return $this->request_type->slug();
592
+	}
593 593
 }
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/notifications/PersistentAdminNoticeManager.php 2 patches
Indentation   +371 added lines, -371 removed lines patch added patch discarded remove patch
@@ -30,375 +30,375 @@
 block discarded – undo
30 30
 class PersistentAdminNoticeManager
31 31
 {
32 32
 
33
-    const WP_OPTION_KEY = 'ee_pers_admin_notices';
34
-
35
-    /**
36
-     * @var Collection|PersistentAdminNotice[] $notice_collection
37
-     */
38
-    private $notice_collection;
39
-
40
-    /**
41
-     * if AJAX is not enabled, then the return URL will be used for redirecting back to the admin page where the
42
-     * persistent admin notice was displayed, and ultimately dismissed from.
43
-     *
44
-     * @var string $return_url
45
-     */
46
-    private $return_url;
47
-
48
-    /**
49
-     * @var CapabilitiesChecker $capabilities_checker
50
-     */
51
-    private $capabilities_checker;
52
-
53
-    /**
54
-     * @var EE_Request $request
55
-     */
56
-    private $request;
57
-
58
-
59
-    /**
60
-     * PersistentAdminNoticeManager constructor
61
-     *
62
-     * @param string              $return_url where to  redirect to after dismissing notices
63
-     * @param CapabilitiesChecker $capabilities_checker
64
-     * @param EE_Request          $request
65
-     * @throws InvalidDataTypeException
66
-     */
67
-    public function __construct($return_url = '', CapabilitiesChecker $capabilities_checker, EE_Request $request)
68
-    {
69
-        $this->setReturnUrl($return_url);
70
-        $this->capabilities_checker = $capabilities_checker;
71
-        $this->request = $request;
72
-        // setup up notices at priority 9 because `EE_Admin::display_admin_notices()` runs at priority 10,
73
-        // and we want to retrieve and generate any nag notices at the last possible moment
74
-        add_action('admin_notices', array($this, 'displayNotices'), 9);
75
-        add_action('network_admin_notices', array($this, 'displayNotices'), 9);
76
-        add_action('wp_ajax_dismiss_ee_nag_notice', array($this, 'dismissNotice'));
77
-        add_action('shutdown', array($this, 'registerAndSaveNotices'), 998);
78
-    }
79
-
80
-
81
-    /**
82
-     * @param string $return_url
83
-     * @throws InvalidDataTypeException
84
-     */
85
-    public function setReturnUrl($return_url)
86
-    {
87
-        if (! is_string($return_url)) {
88
-            throw new InvalidDataTypeException('$return_url', $return_url, 'string');
89
-        }
90
-        $this->return_url = $return_url;
91
-    }
92
-
93
-
94
-    /**
95
-     * @return Collection
96
-     * @throws InvalidEntityException
97
-     * @throws InvalidInterfaceException
98
-     * @throws InvalidDataTypeException
99
-     * @throws DomainException
100
-     */
101
-    protected function getPersistentAdminNoticeCollection()
102
-    {
103
-        if (! $this->notice_collection instanceof Collection) {
104
-            $this->notice_collection = new Collection(
105
-                'EventEspresso\core\domain\entities\notifications\PersistentAdminNotice'
106
-            );
107
-            $this->retrieveStoredNotices();
108
-            $this->registerNotices();
109
-        }
110
-        return $this->notice_collection;
111
-    }
112
-
113
-
114
-    /**
115
-     * generates PersistentAdminNotice objects for all non-dismissed notices saved to the db
116
-     *
117
-     * @return void
118
-     * @throws InvalidEntityException
119
-     * @throws DomainException
120
-     * @throws InvalidDataTypeException
121
-     */
122
-    protected function retrieveStoredNotices()
123
-    {
124
-        $persistent_admin_notices = get_option(PersistentAdminNoticeManager::WP_OPTION_KEY, array());
125
-        // \EEH_Debug_Tools::printr($persistent_admin_notices, '$persistent_admin_notices', __FILE__, __LINE__);
126
-        if (! empty($persistent_admin_notices)) {
127
-            foreach ($persistent_admin_notices as $name => $details) {
128
-                if (is_array($details)) {
129
-                    if (! isset(
130
-                        $details['message'],
131
-                        $details['capability'],
132
-                        $details['cap_context'],
133
-                        $details['dismissed']
134
-                    )) {
135
-                        throw new DomainException(
136
-                            sprintf(
137
-                                esc_html__(
138
-                                    'The "%1$s" PersistentAdminNotice could not be retrieved from the database.',
139
-                                    'event_espresso'
140
-                                ),
141
-                                $name
142
-                            )
143
-                        );
144
-                    }
145
-                    // new format for nag notices
146
-                    $this->notice_collection->add(
147
-                        new PersistentAdminNotice(
148
-                            $name,
149
-                            $details['message'],
150
-                            false,
151
-                            $details['capability'],
152
-                            $details['cap_context'],
153
-                            $details['dismissed']
154
-                        ),
155
-                        $name
156
-                    );
157
-                } else {
158
-                    try {
159
-                        // old nag notices, that we want to convert to the new format
160
-                        $this->notice_collection->add(
161
-                            new PersistentAdminNotice(
162
-                                $name,
163
-                                (string) $details,
164
-                                false,
165
-                                '',
166
-                                '',
167
-                                empty($details)
168
-                            ),
169
-                            $name
170
-                        );
171
-                    } catch (Exception $e) {
172
-                        EE_Error::add_error($e->getMessage(), __FILE__, __FUNCTION__, __LINE__);
173
-                    }
174
-                }
175
-                // each notice will self register when the action hook in registerNotices is triggered
176
-            }
177
-        }
178
-    }
179
-
180
-
181
-    /**
182
-     * exposes the Persistent Admin Notice Collection via an action
183
-     * so that PersistentAdminNotice objects can be added and/or removed
184
-     * without compromising the actual collection like a filter would
185
-     */
186
-    protected function registerNotices()
187
-    {
188
-        do_action(
189
-            'AHEE__EventEspresso_core_services_notifications_PersistentAdminNoticeManager__registerNotices',
190
-            $this->notice_collection
191
-        );
192
-    }
193
-
194
-
195
-    /**
196
-     * @throws DomainException
197
-     * @throws InvalidClassException
198
-     * @throws InvalidDataTypeException
199
-     * @throws InvalidInterfaceException
200
-     * @throws InvalidEntityException
201
-     */
202
-    public function displayNotices()
203
-    {
204
-        $this->notice_collection = $this->getPersistentAdminNoticeCollection();
205
-        if ($this->notice_collection->hasObjects()) {
206
-            $enqueue_assets = false;
207
-            // and display notices
208
-            foreach ($this->notice_collection as $persistent_admin_notice) {
209
-                /** @var PersistentAdminNotice $persistent_admin_notice */
210
-                // don't display notices that have already been dismissed
211
-                if ($persistent_admin_notice->getDismissed()) {
212
-                    continue;
213
-                }
214
-                try {
215
-                    $this->capabilities_checker->processCapCheck(
216
-                        $persistent_admin_notice->getCapCheck()
217
-                    );
218
-                } catch (InsufficientPermissionsException $e) {
219
-                    // user does not have required cap, so skip to next notice
220
-                    // and just eat the exception - nom nom nom nom
221
-                    continue;
222
-                }
223
-                if ($persistent_admin_notice->getMessage() === '') {
224
-                    continue;
225
-                }
226
-                $this->displayPersistentAdminNotice($persistent_admin_notice);
227
-                $enqueue_assets = true;
228
-            }
229
-            if ($enqueue_assets) {
230
-                $this->enqueueAssets();
231
-            }
232
-        }
233
-    }
234
-
235
-
236
-    /**
237
-     * does what it's named
238
-     *
239
-     * @return void
240
-     */
241
-    public function enqueueAssets()
242
-    {
243
-        wp_register_script(
244
-            'espresso_core',
245
-            EE_GLOBAL_ASSETS_URL . 'scripts/espresso_core.js',
246
-            array('jquery'),
247
-            EVENT_ESPRESSO_VERSION,
248
-            true
249
-        );
250
-        wp_register_script(
251
-            'ee_error_js',
252
-            EE_GLOBAL_ASSETS_URL . 'scripts/EE_Error.js',
253
-            array('espresso_core'),
254
-            EVENT_ESPRESSO_VERSION,
255
-            true
256
-        );
257
-        wp_localize_script(
258
-            'ee_error_js',
259
-            'ee_dismiss',
260
-            array(
261
-                'return_url'    => urlencode($this->return_url),
262
-                'ajax_url'      => WP_AJAX_URL,
263
-                'unknown_error' => esc_html__(
264
-                    'An unknown error has occurred on the server while attempting to dismiss this notice.',
265
-                    'event_espresso'
266
-                ),
267
-            )
268
-        );
269
-        wp_enqueue_script('ee_error_js');
270
-    }
271
-
272
-
273
-    /**
274
-     * displayPersistentAdminNoticeHtml
275
-     *
276
-     * @param  PersistentAdminNotice $persistent_admin_notice
277
-     */
278
-    protected function displayPersistentAdminNotice(PersistentAdminNotice $persistent_admin_notice)
279
-    {
280
-        // used in template
281
-        $persistent_admin_notice_name = $persistent_admin_notice->getName();
282
-        $persistent_admin_notice_message = $persistent_admin_notice->getMessage();
283
-        require EE_TEMPLATES . DS . 'notifications' . DS . 'persistent_admin_notice.template.php';
284
-    }
285
-
286
-
287
-    /**
288
-     * dismissNotice
289
-     *
290
-     * @param string $pan_name the name, or key of the Persistent Admin Notice to be dismissed
291
-     * @param bool   $purge    if true, then delete it from the db
292
-     * @param bool   $return   forget all of this AJAX or redirect nonsense, and just return
293
-     * @return void
294
-     * @throws InvalidEntityException
295
-     * @throws InvalidInterfaceException
296
-     * @throws InvalidDataTypeException
297
-     * @throws DomainException
298
-     */
299
-    public function dismissNotice($pan_name = '', $purge = false, $return = false)
300
-    {
301
-        $pan_name = $this->request->get('ee_nag_notice', $pan_name);
302
-        $this->notice_collection = $this->getPersistentAdminNoticeCollection();
303
-        if (! empty($pan_name) && $this->notice_collection->has($pan_name)) {
304
-            /** @var PersistentAdminNotice $persistent_admin_notice */
305
-            $persistent_admin_notice = $this->notice_collection->get($pan_name);
306
-            $persistent_admin_notice->setDismissed(true);
307
-            $persistent_admin_notice->setPurge($purge);
308
-            $this->saveNotices();
309
-        }
310
-        if ($return) {
311
-            return;
312
-        }
313
-        if ($this->request->ajax) {
314
-            // grab any notices and concatenate into string
315
-            echo wp_json_encode(
316
-                array(
317
-                    'errors' => implode('<br />', EE_Error::get_notices(false)),
318
-                )
319
-            );
320
-            exit();
321
-        }
322
-        // save errors to a transient to be displayed on next request (after redirect)
323
-        EE_Error::get_notices(false, true);
324
-        wp_safe_redirect(
325
-            urldecode(
326
-                $this->request->get('return_url', '')
327
-            )
328
-        );
329
-    }
330
-
331
-
332
-    /**
333
-     * saveNotices
334
-     *
335
-     * @throws DomainException
336
-     * @throws InvalidDataTypeException
337
-     * @throws InvalidInterfaceException
338
-     * @throws InvalidEntityException
339
-     */
340
-    public function saveNotices()
341
-    {
342
-        $this->notice_collection = $this->getPersistentAdminNoticeCollection();
343
-        if ($this->notice_collection->hasObjects()) {
344
-            $persistent_admin_notices = get_option(PersistentAdminNoticeManager::WP_OPTION_KEY, array());
345
-            // maybe initialize persistent_admin_notices
346
-            if (empty($persistent_admin_notices)) {
347
-                add_option(PersistentAdminNoticeManager::WP_OPTION_KEY, array(), '', 'no');
348
-            }
349
-            foreach ($this->notice_collection as $persistent_admin_notice) {
350
-                // are we deleting this notice ?
351
-                if ($persistent_admin_notice->getPurge()) {
352
-                    unset($persistent_admin_notices[ $persistent_admin_notice->getName() ]);
353
-                } else {
354
-                    /** @var PersistentAdminNotice $persistent_admin_notice */
355
-                    $persistent_admin_notices[ $persistent_admin_notice->getName() ] = array(
356
-                        'message'     => $persistent_admin_notice->getMessage(),
357
-                        'capability'  => $persistent_admin_notice->getCapability(),
358
-                        'cap_context' => $persistent_admin_notice->getCapContext(),
359
-                        'dismissed'   => $persistent_admin_notice->getDismissed(),
360
-                    );
361
-                }
362
-            }
363
-            update_option(PersistentAdminNoticeManager::WP_OPTION_KEY, $persistent_admin_notices);
364
-        }
365
-    }
366
-
367
-
368
-    /**
369
-     * @throws DomainException
370
-     * @throws InvalidDataTypeException
371
-     * @throws InvalidEntityException
372
-     * @throws InvalidInterfaceException
373
-     */
374
-    public function registerAndSaveNotices()
375
-    {
376
-        $this->getPersistentAdminNoticeCollection();
377
-        $this->registerNotices();
378
-        $this->saveNotices();
379
-        add_filter(
380
-            'PersistentAdminNoticeManager__registerAndSaveNotices__complete',
381
-            '__return_true'
382
-        );
383
-    }
384
-
385
-
386
-    /**
387
-     * @throws DomainException
388
-     * @throws InvalidDataTypeException
389
-     * @throws InvalidEntityException
390
-     * @throws InvalidInterfaceException
391
-     * @throws InvalidArgumentException
392
-     */
393
-    public static function loadRegisterAndSaveNotices()
394
-    {
395
-        /** @var PersistentAdminNoticeManager $persistent_admin_notice_manager */
396
-        $persistent_admin_notice_manager = LoaderFactory::getLoader()->getShared(
397
-            'EventEspresso\core\services\notifications\PersistentAdminNoticeManager'
398
-        );
399
-        // if shutdown has already run, then call registerAndSaveNotices() manually
400
-        if (did_action('shutdown')) {
401
-            $persistent_admin_notice_manager->registerAndSaveNotices();
402
-        }
403
-    }
33
+	const WP_OPTION_KEY = 'ee_pers_admin_notices';
34
+
35
+	/**
36
+	 * @var Collection|PersistentAdminNotice[] $notice_collection
37
+	 */
38
+	private $notice_collection;
39
+
40
+	/**
41
+	 * if AJAX is not enabled, then the return URL will be used for redirecting back to the admin page where the
42
+	 * persistent admin notice was displayed, and ultimately dismissed from.
43
+	 *
44
+	 * @var string $return_url
45
+	 */
46
+	private $return_url;
47
+
48
+	/**
49
+	 * @var CapabilitiesChecker $capabilities_checker
50
+	 */
51
+	private $capabilities_checker;
52
+
53
+	/**
54
+	 * @var EE_Request $request
55
+	 */
56
+	private $request;
57
+
58
+
59
+	/**
60
+	 * PersistentAdminNoticeManager constructor
61
+	 *
62
+	 * @param string              $return_url where to  redirect to after dismissing notices
63
+	 * @param CapabilitiesChecker $capabilities_checker
64
+	 * @param EE_Request          $request
65
+	 * @throws InvalidDataTypeException
66
+	 */
67
+	public function __construct($return_url = '', CapabilitiesChecker $capabilities_checker, EE_Request $request)
68
+	{
69
+		$this->setReturnUrl($return_url);
70
+		$this->capabilities_checker = $capabilities_checker;
71
+		$this->request = $request;
72
+		// setup up notices at priority 9 because `EE_Admin::display_admin_notices()` runs at priority 10,
73
+		// and we want to retrieve and generate any nag notices at the last possible moment
74
+		add_action('admin_notices', array($this, 'displayNotices'), 9);
75
+		add_action('network_admin_notices', array($this, 'displayNotices'), 9);
76
+		add_action('wp_ajax_dismiss_ee_nag_notice', array($this, 'dismissNotice'));
77
+		add_action('shutdown', array($this, 'registerAndSaveNotices'), 998);
78
+	}
79
+
80
+
81
+	/**
82
+	 * @param string $return_url
83
+	 * @throws InvalidDataTypeException
84
+	 */
85
+	public function setReturnUrl($return_url)
86
+	{
87
+		if (! is_string($return_url)) {
88
+			throw new InvalidDataTypeException('$return_url', $return_url, 'string');
89
+		}
90
+		$this->return_url = $return_url;
91
+	}
92
+
93
+
94
+	/**
95
+	 * @return Collection
96
+	 * @throws InvalidEntityException
97
+	 * @throws InvalidInterfaceException
98
+	 * @throws InvalidDataTypeException
99
+	 * @throws DomainException
100
+	 */
101
+	protected function getPersistentAdminNoticeCollection()
102
+	{
103
+		if (! $this->notice_collection instanceof Collection) {
104
+			$this->notice_collection = new Collection(
105
+				'EventEspresso\core\domain\entities\notifications\PersistentAdminNotice'
106
+			);
107
+			$this->retrieveStoredNotices();
108
+			$this->registerNotices();
109
+		}
110
+		return $this->notice_collection;
111
+	}
112
+
113
+
114
+	/**
115
+	 * generates PersistentAdminNotice objects for all non-dismissed notices saved to the db
116
+	 *
117
+	 * @return void
118
+	 * @throws InvalidEntityException
119
+	 * @throws DomainException
120
+	 * @throws InvalidDataTypeException
121
+	 */
122
+	protected function retrieveStoredNotices()
123
+	{
124
+		$persistent_admin_notices = get_option(PersistentAdminNoticeManager::WP_OPTION_KEY, array());
125
+		// \EEH_Debug_Tools::printr($persistent_admin_notices, '$persistent_admin_notices', __FILE__, __LINE__);
126
+		if (! empty($persistent_admin_notices)) {
127
+			foreach ($persistent_admin_notices as $name => $details) {
128
+				if (is_array($details)) {
129
+					if (! isset(
130
+						$details['message'],
131
+						$details['capability'],
132
+						$details['cap_context'],
133
+						$details['dismissed']
134
+					)) {
135
+						throw new DomainException(
136
+							sprintf(
137
+								esc_html__(
138
+									'The "%1$s" PersistentAdminNotice could not be retrieved from the database.',
139
+									'event_espresso'
140
+								),
141
+								$name
142
+							)
143
+						);
144
+					}
145
+					// new format for nag notices
146
+					$this->notice_collection->add(
147
+						new PersistentAdminNotice(
148
+							$name,
149
+							$details['message'],
150
+							false,
151
+							$details['capability'],
152
+							$details['cap_context'],
153
+							$details['dismissed']
154
+						),
155
+						$name
156
+					);
157
+				} else {
158
+					try {
159
+						// old nag notices, that we want to convert to the new format
160
+						$this->notice_collection->add(
161
+							new PersistentAdminNotice(
162
+								$name,
163
+								(string) $details,
164
+								false,
165
+								'',
166
+								'',
167
+								empty($details)
168
+							),
169
+							$name
170
+						);
171
+					} catch (Exception $e) {
172
+						EE_Error::add_error($e->getMessage(), __FILE__, __FUNCTION__, __LINE__);
173
+					}
174
+				}
175
+				// each notice will self register when the action hook in registerNotices is triggered
176
+			}
177
+		}
178
+	}
179
+
180
+
181
+	/**
182
+	 * exposes the Persistent Admin Notice Collection via an action
183
+	 * so that PersistentAdminNotice objects can be added and/or removed
184
+	 * without compromising the actual collection like a filter would
185
+	 */
186
+	protected function registerNotices()
187
+	{
188
+		do_action(
189
+			'AHEE__EventEspresso_core_services_notifications_PersistentAdminNoticeManager__registerNotices',
190
+			$this->notice_collection
191
+		);
192
+	}
193
+
194
+
195
+	/**
196
+	 * @throws DomainException
197
+	 * @throws InvalidClassException
198
+	 * @throws InvalidDataTypeException
199
+	 * @throws InvalidInterfaceException
200
+	 * @throws InvalidEntityException
201
+	 */
202
+	public function displayNotices()
203
+	{
204
+		$this->notice_collection = $this->getPersistentAdminNoticeCollection();
205
+		if ($this->notice_collection->hasObjects()) {
206
+			$enqueue_assets = false;
207
+			// and display notices
208
+			foreach ($this->notice_collection as $persistent_admin_notice) {
209
+				/** @var PersistentAdminNotice $persistent_admin_notice */
210
+				// don't display notices that have already been dismissed
211
+				if ($persistent_admin_notice->getDismissed()) {
212
+					continue;
213
+				}
214
+				try {
215
+					$this->capabilities_checker->processCapCheck(
216
+						$persistent_admin_notice->getCapCheck()
217
+					);
218
+				} catch (InsufficientPermissionsException $e) {
219
+					// user does not have required cap, so skip to next notice
220
+					// and just eat the exception - nom nom nom nom
221
+					continue;
222
+				}
223
+				if ($persistent_admin_notice->getMessage() === '') {
224
+					continue;
225
+				}
226
+				$this->displayPersistentAdminNotice($persistent_admin_notice);
227
+				$enqueue_assets = true;
228
+			}
229
+			if ($enqueue_assets) {
230
+				$this->enqueueAssets();
231
+			}
232
+		}
233
+	}
234
+
235
+
236
+	/**
237
+	 * does what it's named
238
+	 *
239
+	 * @return void
240
+	 */
241
+	public function enqueueAssets()
242
+	{
243
+		wp_register_script(
244
+			'espresso_core',
245
+			EE_GLOBAL_ASSETS_URL . 'scripts/espresso_core.js',
246
+			array('jquery'),
247
+			EVENT_ESPRESSO_VERSION,
248
+			true
249
+		);
250
+		wp_register_script(
251
+			'ee_error_js',
252
+			EE_GLOBAL_ASSETS_URL . 'scripts/EE_Error.js',
253
+			array('espresso_core'),
254
+			EVENT_ESPRESSO_VERSION,
255
+			true
256
+		);
257
+		wp_localize_script(
258
+			'ee_error_js',
259
+			'ee_dismiss',
260
+			array(
261
+				'return_url'    => urlencode($this->return_url),
262
+				'ajax_url'      => WP_AJAX_URL,
263
+				'unknown_error' => esc_html__(
264
+					'An unknown error has occurred on the server while attempting to dismiss this notice.',
265
+					'event_espresso'
266
+				),
267
+			)
268
+		);
269
+		wp_enqueue_script('ee_error_js');
270
+	}
271
+
272
+
273
+	/**
274
+	 * displayPersistentAdminNoticeHtml
275
+	 *
276
+	 * @param  PersistentAdminNotice $persistent_admin_notice
277
+	 */
278
+	protected function displayPersistentAdminNotice(PersistentAdminNotice $persistent_admin_notice)
279
+	{
280
+		// used in template
281
+		$persistent_admin_notice_name = $persistent_admin_notice->getName();
282
+		$persistent_admin_notice_message = $persistent_admin_notice->getMessage();
283
+		require EE_TEMPLATES . DS . 'notifications' . DS . 'persistent_admin_notice.template.php';
284
+	}
285
+
286
+
287
+	/**
288
+	 * dismissNotice
289
+	 *
290
+	 * @param string $pan_name the name, or key of the Persistent Admin Notice to be dismissed
291
+	 * @param bool   $purge    if true, then delete it from the db
292
+	 * @param bool   $return   forget all of this AJAX or redirect nonsense, and just return
293
+	 * @return void
294
+	 * @throws InvalidEntityException
295
+	 * @throws InvalidInterfaceException
296
+	 * @throws InvalidDataTypeException
297
+	 * @throws DomainException
298
+	 */
299
+	public function dismissNotice($pan_name = '', $purge = false, $return = false)
300
+	{
301
+		$pan_name = $this->request->get('ee_nag_notice', $pan_name);
302
+		$this->notice_collection = $this->getPersistentAdminNoticeCollection();
303
+		if (! empty($pan_name) && $this->notice_collection->has($pan_name)) {
304
+			/** @var PersistentAdminNotice $persistent_admin_notice */
305
+			$persistent_admin_notice = $this->notice_collection->get($pan_name);
306
+			$persistent_admin_notice->setDismissed(true);
307
+			$persistent_admin_notice->setPurge($purge);
308
+			$this->saveNotices();
309
+		}
310
+		if ($return) {
311
+			return;
312
+		}
313
+		if ($this->request->ajax) {
314
+			// grab any notices and concatenate into string
315
+			echo wp_json_encode(
316
+				array(
317
+					'errors' => implode('<br />', EE_Error::get_notices(false)),
318
+				)
319
+			);
320
+			exit();
321
+		}
322
+		// save errors to a transient to be displayed on next request (after redirect)
323
+		EE_Error::get_notices(false, true);
324
+		wp_safe_redirect(
325
+			urldecode(
326
+				$this->request->get('return_url', '')
327
+			)
328
+		);
329
+	}
330
+
331
+
332
+	/**
333
+	 * saveNotices
334
+	 *
335
+	 * @throws DomainException
336
+	 * @throws InvalidDataTypeException
337
+	 * @throws InvalidInterfaceException
338
+	 * @throws InvalidEntityException
339
+	 */
340
+	public function saveNotices()
341
+	{
342
+		$this->notice_collection = $this->getPersistentAdminNoticeCollection();
343
+		if ($this->notice_collection->hasObjects()) {
344
+			$persistent_admin_notices = get_option(PersistentAdminNoticeManager::WP_OPTION_KEY, array());
345
+			// maybe initialize persistent_admin_notices
346
+			if (empty($persistent_admin_notices)) {
347
+				add_option(PersistentAdminNoticeManager::WP_OPTION_KEY, array(), '', 'no');
348
+			}
349
+			foreach ($this->notice_collection as $persistent_admin_notice) {
350
+				// are we deleting this notice ?
351
+				if ($persistent_admin_notice->getPurge()) {
352
+					unset($persistent_admin_notices[ $persistent_admin_notice->getName() ]);
353
+				} else {
354
+					/** @var PersistentAdminNotice $persistent_admin_notice */
355
+					$persistent_admin_notices[ $persistent_admin_notice->getName() ] = array(
356
+						'message'     => $persistent_admin_notice->getMessage(),
357
+						'capability'  => $persistent_admin_notice->getCapability(),
358
+						'cap_context' => $persistent_admin_notice->getCapContext(),
359
+						'dismissed'   => $persistent_admin_notice->getDismissed(),
360
+					);
361
+				}
362
+			}
363
+			update_option(PersistentAdminNoticeManager::WP_OPTION_KEY, $persistent_admin_notices);
364
+		}
365
+	}
366
+
367
+
368
+	/**
369
+	 * @throws DomainException
370
+	 * @throws InvalidDataTypeException
371
+	 * @throws InvalidEntityException
372
+	 * @throws InvalidInterfaceException
373
+	 */
374
+	public function registerAndSaveNotices()
375
+	{
376
+		$this->getPersistentAdminNoticeCollection();
377
+		$this->registerNotices();
378
+		$this->saveNotices();
379
+		add_filter(
380
+			'PersistentAdminNoticeManager__registerAndSaveNotices__complete',
381
+			'__return_true'
382
+		);
383
+	}
384
+
385
+
386
+	/**
387
+	 * @throws DomainException
388
+	 * @throws InvalidDataTypeException
389
+	 * @throws InvalidEntityException
390
+	 * @throws InvalidInterfaceException
391
+	 * @throws InvalidArgumentException
392
+	 */
393
+	public static function loadRegisterAndSaveNotices()
394
+	{
395
+		/** @var PersistentAdminNoticeManager $persistent_admin_notice_manager */
396
+		$persistent_admin_notice_manager = LoaderFactory::getLoader()->getShared(
397
+			'EventEspresso\core\services\notifications\PersistentAdminNoticeManager'
398
+		);
399
+		// if shutdown has already run, then call registerAndSaveNotices() manually
400
+		if (did_action('shutdown')) {
401
+			$persistent_admin_notice_manager->registerAndSaveNotices();
402
+		}
403
+	}
404 404
 }
Please login to merge, or discard this patch.
Spacing   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -84,7 +84,7 @@  discard block
 block discarded – undo
84 84
      */
85 85
     public function setReturnUrl($return_url)
86 86
     {
87
-        if (! is_string($return_url)) {
87
+        if ( ! is_string($return_url)) {
88 88
             throw new InvalidDataTypeException('$return_url', $return_url, 'string');
89 89
         }
90 90
         $this->return_url = $return_url;
@@ -100,7 +100,7 @@  discard block
 block discarded – undo
100 100
      */
101 101
     protected function getPersistentAdminNoticeCollection()
102 102
     {
103
-        if (! $this->notice_collection instanceof Collection) {
103
+        if ( ! $this->notice_collection instanceof Collection) {
104 104
             $this->notice_collection = new Collection(
105 105
                 'EventEspresso\core\domain\entities\notifications\PersistentAdminNotice'
106 106
             );
@@ -123,10 +123,10 @@  discard block
 block discarded – undo
123 123
     {
124 124
         $persistent_admin_notices = get_option(PersistentAdminNoticeManager::WP_OPTION_KEY, array());
125 125
         // \EEH_Debug_Tools::printr($persistent_admin_notices, '$persistent_admin_notices', __FILE__, __LINE__);
126
-        if (! empty($persistent_admin_notices)) {
126
+        if ( ! empty($persistent_admin_notices)) {
127 127
             foreach ($persistent_admin_notices as $name => $details) {
128 128
                 if (is_array($details)) {
129
-                    if (! isset(
129
+                    if ( ! isset(
130 130
                         $details['message'],
131 131
                         $details['capability'],
132 132
                         $details['cap_context'],
@@ -242,14 +242,14 @@  discard block
 block discarded – undo
242 242
     {
243 243
         wp_register_script(
244 244
             'espresso_core',
245
-            EE_GLOBAL_ASSETS_URL . 'scripts/espresso_core.js',
245
+            EE_GLOBAL_ASSETS_URL.'scripts/espresso_core.js',
246 246
             array('jquery'),
247 247
             EVENT_ESPRESSO_VERSION,
248 248
             true
249 249
         );
250 250
         wp_register_script(
251 251
             'ee_error_js',
252
-            EE_GLOBAL_ASSETS_URL . 'scripts/EE_Error.js',
252
+            EE_GLOBAL_ASSETS_URL.'scripts/EE_Error.js',
253 253
             array('espresso_core'),
254 254
             EVENT_ESPRESSO_VERSION,
255 255
             true
@@ -280,7 +280,7 @@  discard block
 block discarded – undo
280 280
         // used in template
281 281
         $persistent_admin_notice_name = $persistent_admin_notice->getName();
282 282
         $persistent_admin_notice_message = $persistent_admin_notice->getMessage();
283
-        require EE_TEMPLATES . DS . 'notifications' . DS . 'persistent_admin_notice.template.php';
283
+        require EE_TEMPLATES.DS.'notifications'.DS.'persistent_admin_notice.template.php';
284 284
     }
285 285
 
286 286
 
@@ -300,7 +300,7 @@  discard block
 block discarded – undo
300 300
     {
301 301
         $pan_name = $this->request->get('ee_nag_notice', $pan_name);
302 302
         $this->notice_collection = $this->getPersistentAdminNoticeCollection();
303
-        if (! empty($pan_name) && $this->notice_collection->has($pan_name)) {
303
+        if ( ! empty($pan_name) && $this->notice_collection->has($pan_name)) {
304 304
             /** @var PersistentAdminNotice $persistent_admin_notice */
305 305
             $persistent_admin_notice = $this->notice_collection->get($pan_name);
306 306
             $persistent_admin_notice->setDismissed(true);
@@ -349,10 +349,10 @@  discard block
 block discarded – undo
349 349
             foreach ($this->notice_collection as $persistent_admin_notice) {
350 350
                 // are we deleting this notice ?
351 351
                 if ($persistent_admin_notice->getPurge()) {
352
-                    unset($persistent_admin_notices[ $persistent_admin_notice->getName() ]);
352
+                    unset($persistent_admin_notices[$persistent_admin_notice->getName()]);
353 353
                 } else {
354 354
                     /** @var PersistentAdminNotice $persistent_admin_notice */
355
-                    $persistent_admin_notices[ $persistent_admin_notice->getName() ] = array(
355
+                    $persistent_admin_notices[$persistent_admin_notice->getName()] = array(
356 356
                         'message'     => $persistent_admin_notice->getMessage(),
357 357
                         'capability'  => $persistent_admin_notice->getCapability(),
358 358
                         'cap_context' => $persistent_admin_notice->getCapContext(),
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
Indentation   +225 added lines, -225 removed lines patch added patch discarded remove patch
@@ -13,248 +13,248 @@
 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
-        // does $sql contain valid column information? ( LPT: https://regex101.com/ is great for working out regex patterns )
188
-        if (preg_match('((((.*?))(,\s))+)', $create_sql, $valid_column_data)) {
189
-            $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
190
-            /** @var \wpdb $wpdb */
191
-            global $wpdb;
192
-            $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
+		// does $sql contain valid column information? ( LPT: https://regex101.com/ is great for working out regex patterns )
188
+		if (preg_match('((((.*?))(,\s))+)', $create_sql, $valid_column_data)) {
189
+			$table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
190
+			/** @var \wpdb $wpdb */
191
+			global $wpdb;
192
+			$SQL = "CREATE TABLE {$table_name} ( {$create_sql} ) ENGINE={$engine} " . $wpdb->get_charset_collate();
193 193
 
194
-            // get $wpdb to echo errors, but buffer them. This way at least WE know an error
195
-            // happened. And then we can choose to tell the end user
196
-            $old_show_errors_policy = $wpdb->show_errors(true);
197
-            $old_error_suppression_policy = $wpdb->suppress_errors(false);
198
-            ob_start();
199
-            dbDelta($SQL);
200
-            $output = ob_get_contents();
201
-            ob_end_clean();
202
-            $wpdb->show_errors($old_show_errors_policy);
203
-            $wpdb->suppress_errors($old_error_suppression_policy);
204
-            if (! empty($output)) {
205
-                throw new \EE_Error($output);
206
-            }
207
-        } else {
208
-            throw new \EE_Error(
209
-                sprintf(
210
-                    __(
211
-                        'The following table creation SQL does not contain valid information about the table columns: %1$s %2$s',
212
-                        'event_espresso'
213
-                    ),
214
-                    '<br />',
215
-                    $create_sql
216
-                )
217
-            );
218
-        }
219
-    }
194
+			// get $wpdb to echo errors, but buffer them. This way at least WE know an error
195
+			// happened. And then we can choose to tell the end user
196
+			$old_show_errors_policy = $wpdb->show_errors(true);
197
+			$old_error_suppression_policy = $wpdb->suppress_errors(false);
198
+			ob_start();
199
+			dbDelta($SQL);
200
+			$output = ob_get_contents();
201
+			ob_end_clean();
202
+			$wpdb->show_errors($old_show_errors_policy);
203
+			$wpdb->suppress_errors($old_error_suppression_policy);
204
+			if (! empty($output)) {
205
+				throw new \EE_Error($output);
206
+			}
207
+		} else {
208
+			throw new \EE_Error(
209
+				sprintf(
210
+					__(
211
+						'The following table creation SQL does not contain valid information about the table columns: %1$s %2$s',
212
+						'event_espresso'
213
+					),
214
+					'<br />',
215
+					$create_sql
216
+				)
217
+			);
218
+		}
219
+	}
220 220
 
221 221
 
222
-    /**
223
-     * Drops the specified index if it's size differs from $desired_index_size.
224
-     * WordPress' dbdelta method doesn't automatically change index sizes, so this
225
-     * method can be used to only drop the index if needed, and afterwards dbdelta can be used as normal.
226
-     * If the table doesn't exist, or it exists but the index does not, or returns false
227
-     *
228
-     * @param string     $table_name
229
-     * @param string     $index_name
230
-     * @param string     $column_name        if none is provided, we assume the column name matches the index (often
231
-     *                                       true in EE)
232
-     * @param string|int $desired_index_size defaults to TableAnalysis::index_col_size, the max for utf8mb4.
233
-     * @return bool whether an index was dropped or not
234
-     * @throws /EE_Error if table analysis object isn't defined
235
-     */
236
-    public function dropIndexIfSizeNot(
237
-        $table_name,
238
-        $index_name,
239
-        $column_name = null,
240
-        $desired_index_size = TableAnalysis::INDEX_COLUMN_SIZE
241
-    ) {
242
-        if ($column_name === null) {
243
-            $column_name = $index_name;
244
-        }
245
-        if (! $this->getTableAnalysis()->tableExists($table_name)) {
246
-            return false;
247
-        }
248
-        $index_entries = $this->getTableAnalysis()->showIndexes($table_name, $index_name);
249
-        if (empty($index_entries)) {
250
-            return false;
251
-        }
252
-        foreach ($index_entries as $index_entry) {
253
-            if ($column_name === $index_entry->Column_name
254
-                && (string) $desired_index_size !== $index_entry->Sub_part) {
255
-                return $this->dropIndex($table_name, $index_name);
256
-            }
257
-        }
258
-        return false;
259
-    }
222
+	/**
223
+	 * Drops the specified index if it's size differs from $desired_index_size.
224
+	 * WordPress' dbdelta method doesn't automatically change index sizes, so this
225
+	 * method can be used to only drop the index if needed, and afterwards dbdelta can be used as normal.
226
+	 * If the table doesn't exist, or it exists but the index does not, or returns false
227
+	 *
228
+	 * @param string     $table_name
229
+	 * @param string     $index_name
230
+	 * @param string     $column_name        if none is provided, we assume the column name matches the index (often
231
+	 *                                       true in EE)
232
+	 * @param string|int $desired_index_size defaults to TableAnalysis::index_col_size, the max for utf8mb4.
233
+	 * @return bool whether an index was dropped or not
234
+	 * @throws /EE_Error if table analysis object isn't defined
235
+	 */
236
+	public function dropIndexIfSizeNot(
237
+		$table_name,
238
+		$index_name,
239
+		$column_name = null,
240
+		$desired_index_size = TableAnalysis::INDEX_COLUMN_SIZE
241
+	) {
242
+		if ($column_name === null) {
243
+			$column_name = $index_name;
244
+		}
245
+		if (! $this->getTableAnalysis()->tableExists($table_name)) {
246
+			return false;
247
+		}
248
+		$index_entries = $this->getTableAnalysis()->showIndexes($table_name, $index_name);
249
+		if (empty($index_entries)) {
250
+			return false;
251
+		}
252
+		foreach ($index_entries as $index_entry) {
253
+			if ($column_name === $index_entry->Column_name
254
+				&& (string) $desired_index_size !== $index_entry->Sub_part) {
255
+				return $this->dropIndex($table_name, $index_name);
256
+			}
257
+		}
258
+		return false;
259
+	}
260 260
 }
Please login to merge, or discard this patch.
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.
core/services/commands/CommandHandlerManager.php 2 patches
Indentation   +93 added lines, -93 removed lines patch added patch discarded remove patch
@@ -18,104 +18,104 @@
 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
-     * @param CommandHandlerInterface $command_handler
65
-     * @param string                  $fqcn_for_command Fully Qualified ClassName for Command
66
-     * @return void
67
-     * @throws InvalidCommandHandlerException
68
-     */
69
-    public function addCommandHandler(CommandHandlerInterface $command_handler, $fqcn_for_command = '')
70
-    {
71
-        $command = ! empty($fqcn_for_command)
72
-            ? $fqcn_for_command
73
-            : str_replace('CommandHandler', 'Command', get_class($command_handler));
74
-        if (empty($command)) {
75
-            throw new InvalidCommandHandlerException($command);
76
-        }
77
-        $this->command_handlers[ $command ] = $command_handler;
78
-    }
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
+	 * @param CommandHandlerInterface $command_handler
65
+	 * @param string                  $fqcn_for_command Fully Qualified ClassName for Command
66
+	 * @return void
67
+	 * @throws InvalidCommandHandlerException
68
+	 */
69
+	public function addCommandHandler(CommandHandlerInterface $command_handler, $fqcn_for_command = '')
70
+	{
71
+		$command = ! empty($fqcn_for_command)
72
+			? $fqcn_for_command
73
+			: str_replace('CommandHandler', 'Command', get_class($command_handler));
74
+		if (empty($command)) {
75
+			throw new InvalidCommandHandlerException($command);
76
+		}
77
+		$this->command_handlers[ $command ] = $command_handler;
78
+	}
79 79
 
80 80
 
81
-    /**
82
-     * @param CommandInterface    $command
83
-     * @param CommandBusInterface $command_bus
84
-     * @return mixed
85
-     * @throws DomainException
86
-     * @throws CommandHandlerNotFoundException
87
-     */
88
-    public function getCommandHandler(CommandInterface $command, CommandBusInterface $command_bus = null)
89
-    {
90
-        $command_name = get_class($command);
91
-        $command_handler = apply_filters(
92
-            'FHEE__EventEspresso_core_services_commands_CommandHandlerManager__getCommandHandler__command_handler',
93
-            str_replace('Command', 'CommandHandler', $command_name),
94
-            $command
95
-        );
96
-        $handler = null;
97
-        // has a command handler already been set for this class ?
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 ];
101
-        } elseif (class_exists($command_handler)) {
102
-            $handler = $this->loader->getShared($command_handler);
103
-        }
104
-        // if Handler requires an instance of the CommandBus, but that has not yet been set
105
-        if ($handler instanceof CompositeCommandHandler && ! $handler->commandBus() instanceof CommandBusInterface) {
106
-            if (! $command_bus instanceof CommandBusInterface) {
107
-                throw new DomainException(
108
-                    esc_html__(
109
-                        'CompositeCommandHandler classes require an instance of the CommandBus.',
110
-                        'event_espresso'
111
-                    )
112
-                );
113
-            }
114
-            $handler->setCommandBus($command_bus);
115
-        }
116
-        if ($handler instanceof CommandHandlerInterface) {
117
-            return $handler;
118
-        }
119
-        throw new CommandHandlerNotFoundException($command_handler);
120
-    }
81
+	/**
82
+	 * @param CommandInterface    $command
83
+	 * @param CommandBusInterface $command_bus
84
+	 * @return mixed
85
+	 * @throws DomainException
86
+	 * @throws CommandHandlerNotFoundException
87
+	 */
88
+	public function getCommandHandler(CommandInterface $command, CommandBusInterface $command_bus = null)
89
+	{
90
+		$command_name = get_class($command);
91
+		$command_handler = apply_filters(
92
+			'FHEE__EventEspresso_core_services_commands_CommandHandlerManager__getCommandHandler__command_handler',
93
+			str_replace('Command', 'CommandHandler', $command_name),
94
+			$command
95
+		);
96
+		$handler = null;
97
+		// has a command handler already been set for this class ?
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 ];
101
+		} elseif (class_exists($command_handler)) {
102
+			$handler = $this->loader->getShared($command_handler);
103
+		}
104
+		// if Handler requires an instance of the CommandBus, but that has not yet been set
105
+		if ($handler instanceof CompositeCommandHandler && ! $handler->commandBus() instanceof CommandBusInterface) {
106
+			if (! $command_bus instanceof CommandBusInterface) {
107
+				throw new DomainException(
108
+					esc_html__(
109
+						'CompositeCommandHandler classes require an instance of the CommandBus.',
110
+						'event_espresso'
111
+					)
112
+				);
113
+			}
114
+			$handler->setCommandBus($command_bus);
115
+		}
116
+		if ($handler instanceof CommandHandlerInterface) {
117
+			return $handler;
118
+		}
119
+		throw new CommandHandlerNotFoundException($command_handler);
120
+	}
121 121
 }
Please login to merge, or discard this patch.
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.
core/services/notices/Notice.php 2 patches
Indentation   +249 added lines, -249 removed lines patch added patch discarded remove patch
@@ -14,253 +14,253 @@
 block discarded – undo
14 14
 class Notice implements NoticeInterface
15 15
 {
16 16
 
17
-    const ERROR = 'error';
18
-
19
-    const SUCCESS = 'success';
20
-
21
-    const ATTENTION = 'attention'; // alias for warning
22
-
23
-    const INFORMATION = 'information';
24
-
25
-    /**
26
-     * @var string $type
27
-     */
28
-    private $type;
29
-
30
-
31
-    /**
32
-     * @var string $message
33
-     */
34
-    private $message;
35
-
36
-
37
-    /**
38
-     * @var string $file
39
-     */
40
-    private $file;
41
-
42
-
43
-    /**
44
-     * @var string $func
45
-     */
46
-    private $func;
47
-
48
-
49
-    /**
50
-     * @var string $line
51
-     */
52
-    private $line;
53
-
54
-
55
-    /**
56
-     * @var boolean $dismissible
57
-     */
58
-    private $dismissible;
59
-
60
-
61
-    /**
62
-     * Notice constructor.
63
-     *
64
-     * @param string $type
65
-     * @param string $message
66
-     * @param bool   $dismissible
67
-     * @param string $file
68
-     * @param string $func
69
-     * @param string $line
70
-     * @throws InvalidDataTypeException
71
-     */
72
-    public function __construct($type, $message, $dismissible = true, $file = '', $func = '', $line = '')
73
-    {
74
-        $this->setType($type);
75
-        $this->setMessage($message);
76
-        $this->setDismissible($dismissible);
77
-        $this->setFile($file);
78
-        $this->setFunc($func);
79
-        $this->setLine($line);
80
-    }
81
-
82
-
83
-    /**
84
-     * @return array
85
-     */
86
-    private function types()
87
-    {
88
-        return (array) apply_filters(
89
-            'FHEE__EventEspresso_core_services_notices_Notice__types',
90
-            array(
91
-                Notice::ERROR,
92
-                Notice::SUCCESS,
93
-                Notice::ATTENTION,
94
-                Notice::INFORMATION,
95
-            )
96
-        );
97
-    }
98
-
99
-
100
-    /**
101
-     * @return string
102
-     */
103
-    public function type()
104
-    {
105
-        return $this->type;
106
-    }
107
-
108
-
109
-    /**
110
-     * @return string
111
-     */
112
-    public function message()
113
-    {
114
-        return $this->message;
115
-    }
116
-
117
-
118
-    /**
119
-     * @return string
120
-     */
121
-    public function file()
122
-    {
123
-        return $this->file;
124
-    }
125
-
126
-
127
-    /**
128
-     * @return string
129
-     */
130
-    public function func()
131
-    {
132
-        return $this->func;
133
-    }
134
-
135
-
136
-    /**
137
-     * @return string
138
-     */
139
-    public function line()
140
-    {
141
-        return $this->line;
142
-    }
143
-
144
-
145
-    /**
146
-     * @return bool
147
-     */
148
-    public function isDismissible()
149
-    {
150
-        return $this->dismissible;
151
-    }
152
-
153
-
154
-    /**
155
-     * @param string $type
156
-     * @throws InvalidDataTypeException
157
-     */
158
-    private function setType($type)
159
-    {
160
-        if (! in_array($type, $this->types(), true)) {
161
-            throw new InvalidDataTypeException(
162
-                '$type',
163
-                $type,
164
-                $this->invalidTypeMessage()
165
-            );
166
-        }
167
-        $this->type = $type;
168
-    }
169
-
170
-
171
-    /**
172
-     * gets the $invalid_type_message string
173
-     */
174
-    private function invalidTypeMessage()
175
-    {
176
-        return apply_filters(
177
-            'FHEE__EventEspresso_core_services_notices_Notice__invalidTypeMessage',
178
-            sprintf(
179
-                esc_html__(
180
-                    ' one of the following notice types was expected: %1$s %2$s',
181
-                    'event_espresso'
182
-                ),
183
-                '<br />',
184
-                var_export($this->types(), true)
185
-            )
186
-        );
187
-    }
188
-
189
-
190
-    /**
191
-     * @param string $message
192
-     * @throws InvalidDataTypeException
193
-     */
194
-    private function setMessage($message)
195
-    {
196
-        if (empty($message) || ! is_string($message)) {
197
-            throw new InvalidDataTypeException(
198
-                '$message',
199
-                $message,
200
-                esc_html__('non empty string', 'event_espresso')
201
-            );
202
-        }
203
-        $this->message = $message;
204
-    }
205
-
206
-
207
-    /**
208
-     * @param string $file
209
-     * @throws InvalidDataTypeException
210
-     */
211
-    private function setFile($file)
212
-    {
213
-        if ($this->type === Notice::ERROR && (empty($file) || ! is_string($file))) {
214
-            throw new InvalidDataTypeException(
215
-                '$file',
216
-                $file,
217
-                esc_html__('non empty string', 'event_espresso')
218
-            );
219
-        }
220
-        $this->file = $file;
221
-    }
222
-
223
-
224
-    /**
225
-     * @param string $func
226
-     * @throws InvalidDataTypeException
227
-     */
228
-    private function setFunc($func)
229
-    {
230
-        if ($this->type === Notice::ERROR && (empty($func) || ! is_string($func))) {
231
-            throw new InvalidDataTypeException(
232
-                '$func',
233
-                $func,
234
-                esc_html__('non empty string', 'event_espresso')
235
-            );
236
-        }
237
-        $this->func = $func;
238
-    }
239
-
240
-
241
-    /**
242
-     * @param int $line
243
-     * @throws InvalidDataTypeException
244
-     */
245
-    private function setLine($line)
246
-    {
247
-        $line = absint($line);
248
-        if ($this->type === Notice::ERROR && $line === 0) {
249
-            throw new InvalidDataTypeException(
250
-                '$line',
251
-                $line,
252
-                esc_html__('integer', 'event_espresso')
253
-            );
254
-        }
255
-        $this->line = $line;
256
-    }
257
-
258
-
259
-    /**
260
-     * @param boolean $dismissible
261
-     */
262
-    private function setDismissible($dismissible = true)
263
-    {
264
-        $this->dismissible = filter_var($dismissible, FILTER_VALIDATE_BOOLEAN);
265
-    }
17
+	const ERROR = 'error';
18
+
19
+	const SUCCESS = 'success';
20
+
21
+	const ATTENTION = 'attention'; // alias for warning
22
+
23
+	const INFORMATION = 'information';
24
+
25
+	/**
26
+	 * @var string $type
27
+	 */
28
+	private $type;
29
+
30
+
31
+	/**
32
+	 * @var string $message
33
+	 */
34
+	private $message;
35
+
36
+
37
+	/**
38
+	 * @var string $file
39
+	 */
40
+	private $file;
41
+
42
+
43
+	/**
44
+	 * @var string $func
45
+	 */
46
+	private $func;
47
+
48
+
49
+	/**
50
+	 * @var string $line
51
+	 */
52
+	private $line;
53
+
54
+
55
+	/**
56
+	 * @var boolean $dismissible
57
+	 */
58
+	private $dismissible;
59
+
60
+
61
+	/**
62
+	 * Notice constructor.
63
+	 *
64
+	 * @param string $type
65
+	 * @param string $message
66
+	 * @param bool   $dismissible
67
+	 * @param string $file
68
+	 * @param string $func
69
+	 * @param string $line
70
+	 * @throws InvalidDataTypeException
71
+	 */
72
+	public function __construct($type, $message, $dismissible = true, $file = '', $func = '', $line = '')
73
+	{
74
+		$this->setType($type);
75
+		$this->setMessage($message);
76
+		$this->setDismissible($dismissible);
77
+		$this->setFile($file);
78
+		$this->setFunc($func);
79
+		$this->setLine($line);
80
+	}
81
+
82
+
83
+	/**
84
+	 * @return array
85
+	 */
86
+	private function types()
87
+	{
88
+		return (array) apply_filters(
89
+			'FHEE__EventEspresso_core_services_notices_Notice__types',
90
+			array(
91
+				Notice::ERROR,
92
+				Notice::SUCCESS,
93
+				Notice::ATTENTION,
94
+				Notice::INFORMATION,
95
+			)
96
+		);
97
+	}
98
+
99
+
100
+	/**
101
+	 * @return string
102
+	 */
103
+	public function type()
104
+	{
105
+		return $this->type;
106
+	}
107
+
108
+
109
+	/**
110
+	 * @return string
111
+	 */
112
+	public function message()
113
+	{
114
+		return $this->message;
115
+	}
116
+
117
+
118
+	/**
119
+	 * @return string
120
+	 */
121
+	public function file()
122
+	{
123
+		return $this->file;
124
+	}
125
+
126
+
127
+	/**
128
+	 * @return string
129
+	 */
130
+	public function func()
131
+	{
132
+		return $this->func;
133
+	}
134
+
135
+
136
+	/**
137
+	 * @return string
138
+	 */
139
+	public function line()
140
+	{
141
+		return $this->line;
142
+	}
143
+
144
+
145
+	/**
146
+	 * @return bool
147
+	 */
148
+	public function isDismissible()
149
+	{
150
+		return $this->dismissible;
151
+	}
152
+
153
+
154
+	/**
155
+	 * @param string $type
156
+	 * @throws InvalidDataTypeException
157
+	 */
158
+	private function setType($type)
159
+	{
160
+		if (! in_array($type, $this->types(), true)) {
161
+			throw new InvalidDataTypeException(
162
+				'$type',
163
+				$type,
164
+				$this->invalidTypeMessage()
165
+			);
166
+		}
167
+		$this->type = $type;
168
+	}
169
+
170
+
171
+	/**
172
+	 * gets the $invalid_type_message string
173
+	 */
174
+	private function invalidTypeMessage()
175
+	{
176
+		return apply_filters(
177
+			'FHEE__EventEspresso_core_services_notices_Notice__invalidTypeMessage',
178
+			sprintf(
179
+				esc_html__(
180
+					' one of the following notice types was expected: %1$s %2$s',
181
+					'event_espresso'
182
+				),
183
+				'<br />',
184
+				var_export($this->types(), true)
185
+			)
186
+		);
187
+	}
188
+
189
+
190
+	/**
191
+	 * @param string $message
192
+	 * @throws InvalidDataTypeException
193
+	 */
194
+	private function setMessage($message)
195
+	{
196
+		if (empty($message) || ! is_string($message)) {
197
+			throw new InvalidDataTypeException(
198
+				'$message',
199
+				$message,
200
+				esc_html__('non empty string', 'event_espresso')
201
+			);
202
+		}
203
+		$this->message = $message;
204
+	}
205
+
206
+
207
+	/**
208
+	 * @param string $file
209
+	 * @throws InvalidDataTypeException
210
+	 */
211
+	private function setFile($file)
212
+	{
213
+		if ($this->type === Notice::ERROR && (empty($file) || ! is_string($file))) {
214
+			throw new InvalidDataTypeException(
215
+				'$file',
216
+				$file,
217
+				esc_html__('non empty string', 'event_espresso')
218
+			);
219
+		}
220
+		$this->file = $file;
221
+	}
222
+
223
+
224
+	/**
225
+	 * @param string $func
226
+	 * @throws InvalidDataTypeException
227
+	 */
228
+	private function setFunc($func)
229
+	{
230
+		if ($this->type === Notice::ERROR && (empty($func) || ! is_string($func))) {
231
+			throw new InvalidDataTypeException(
232
+				'$func',
233
+				$func,
234
+				esc_html__('non empty string', 'event_espresso')
235
+			);
236
+		}
237
+		$this->func = $func;
238
+	}
239
+
240
+
241
+	/**
242
+	 * @param int $line
243
+	 * @throws InvalidDataTypeException
244
+	 */
245
+	private function setLine($line)
246
+	{
247
+		$line = absint($line);
248
+		if ($this->type === Notice::ERROR && $line === 0) {
249
+			throw new InvalidDataTypeException(
250
+				'$line',
251
+				$line,
252
+				esc_html__('integer', 'event_espresso')
253
+			);
254
+		}
255
+		$this->line = $line;
256
+	}
257
+
258
+
259
+	/**
260
+	 * @param boolean $dismissible
261
+	 */
262
+	private function setDismissible($dismissible = true)
263
+	{
264
+		$this->dismissible = filter_var($dismissible, FILTER_VALIDATE_BOOLEAN);
265
+	}
266 266
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -157,7 +157,7 @@
 block discarded – undo
157 157
      */
158 158
     private function setType($type)
159 159
     {
160
-        if (! in_array($type, $this->types(), true)) {
160
+        if ( ! in_array($type, $this->types(), true)) {
161 161
             throw new InvalidDataTypeException(
162 162
                 '$type',
163 163
                 $type,
Please login to merge, or discard this patch.
core/libraries/iframe_display/Iframe.php 2 patches
Indentation   +332 added lines, -332 removed lines patch added patch discarded remove patch
@@ -18,371 +18,371 @@
 block discarded – undo
18 18
 class Iframe
19 19
 {
20 20
 
21
-    /*
21
+	/*
22 22
     * HTML for notices and ajax gif
23 23
     * @var string $title
24 24
     */
25
-    protected $title = '';
25
+	protected $title = '';
26 26
 
27
-    /*
27
+	/*
28 28
     * HTML for the content being displayed
29 29
     * @var string $content
30 30
     */
31
-    protected $content = '';
31
+	protected $content = '';
32 32
 
33
-    /*
33
+	/*
34 34
     * whether or not to call wp_head() and wp_footer()
35 35
     * @var boolean $enqueue_wp_assets
36 36
     */
37
-    protected $enqueue_wp_assets = false;
37
+	protected $enqueue_wp_assets = false;
38 38
 
39
-    /*
39
+	/*
40 40
     * an array of CSS URLs
41 41
     * @var array $css
42 42
     */
43
-    protected $css = array();
43
+	protected $css = array();
44 44
 
45
-    /*
45
+	/*
46 46
     * an array of JS URLs to be set in the HTML header.
47 47
     * @var array $header_js
48 48
     */
49
-    protected $header_js = array();
49
+	protected $header_js = array();
50 50
 
51
-    /*
51
+	/*
52 52
     * an array of additional attributes to be added to <script> tags for header JS
53 53
     * @var array $footer_js
54 54
     */
55
-    protected $header_js_attributes = array();
55
+	protected $header_js_attributes = array();
56 56
 
57
-    /*
57
+	/*
58 58
     * an array of JS URLs to be displayed before the HTML </body> tag
59 59
     * @var array $footer_js
60 60
     */
61
-    protected $footer_js = array();
61
+	protected $footer_js = array();
62 62
 
63
-    /*
63
+	/*
64 64
     * an array of additional attributes to be added to <script> tags for footer JS
65 65
     * @var array $footer_js_attributes
66 66
     */
67
-    protected $footer_js_attributes = array();
67
+	protected $footer_js_attributes = array();
68 68
 
69
-    /*
69
+	/*
70 70
     * an array of JSON vars to be set in the HTML header.
71 71
     * @var array $localized_vars
72 72
     */
73
-    protected $localized_vars = array();
74
-
75
-
76
-    /**
77
-     * Iframe constructor
78
-     *
79
-     * @param string $title
80
-     * @param string $content
81
-     * @throws DomainException
82
-     */
83
-    public function __construct($title, $content)
84
-    {
85
-        global $wp_version;
86
-        if (! defined('EE_IFRAME_DIR_URL')) {
87
-            define('EE_IFRAME_DIR_URL', plugin_dir_url(__FILE__));
88
-        }
89
-        $this->setContent($content);
90
-        $this->setTitle($title);
91
-        $this->addStylesheets(
92
-            apply_filters(
93
-                'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__construct__default_css',
94
-                array(
95
-                    'site_theme'       => get_stylesheet_directory_uri() . DS
96
-                                          . 'style.css?ver=' . EVENT_ESPRESSO_VERSION,
97
-                    'dashicons'        => includes_url('css/dashicons.min.css?ver=' . $wp_version),
98
-                    'espresso_default' => EE_GLOBAL_ASSETS_URL
99
-                                          . 'css/espresso_default.css?ver=' . EVENT_ESPRESSO_VERSION,
100
-                ),
101
-                $this
102
-            )
103
-        );
104
-        $this->addScripts(
105
-            apply_filters(
106
-                'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__construct__default_js',
107
-                array(
108
-                    'jquery'        => includes_url('js/jquery/jquery.js?ver=' . $wp_version),
109
-                    'espresso_core' => EE_GLOBAL_ASSETS_URL
110
-                                       . 'scripts/espresso_core.js?ver=' . EVENT_ESPRESSO_VERSION,
111
-                ),
112
-                $this
113
-            )
114
-        );
115
-        if (apply_filters(
116
-            'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__construct__load_default_theme_stylesheet',
117
-            false
118
-        )) {
119
-            $this->addStylesheets(
120
-                apply_filters(
121
-                    'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__construct__default_theme_stylesheet',
122
-                    array('default_theme_stylesheet' => get_stylesheet_uri()),
123
-                    $this
124
-                )
125
-            );
126
-        }
127
-    }
128
-
129
-
130
-    /**
131
-     * @param string $title
132
-     * @throws DomainException
133
-     */
134
-    public function setTitle($title)
135
-    {
136
-        if (empty($title)) {
137
-            throw new DomainException(
138
-                esc_html__('You must provide a page title in order to create an iframe.', 'event_espresso')
139
-            );
140
-        }
141
-        $this->title = $title;
142
-    }
143
-
144
-
145
-    /**
146
-     * @param string $content
147
-     * @throws DomainException
148
-     */
149
-    public function setContent($content)
150
-    {
151
-        if (empty($content)) {
152
-            throw new DomainException(
153
-                esc_html__('You must provide content in order to create an iframe.', 'event_espresso')
154
-            );
155
-        }
156
-        $this->content = $content;
157
-    }
158
-
159
-
160
-    /**
161
-     * @param boolean $enqueue_wp_assets
162
-     */
163
-    public function setEnqueueWpAssets($enqueue_wp_assets)
164
-    {
165
-        $this->enqueue_wp_assets = filter_var($enqueue_wp_assets, FILTER_VALIDATE_BOOLEAN);
166
-    }
167
-
168
-
169
-    /**
170
-     * @param array $stylesheets
171
-     * @throws DomainException
172
-     */
173
-    public function addStylesheets(array $stylesheets)
174
-    {
175
-        if (empty($stylesheets)) {
176
-            throw new DomainException(
177
-                esc_html__(
178
-                    'A non-empty array of URLs, is required to add a CSS stylesheet to an iframe.',
179
-                    'event_espresso'
180
-                )
181
-            );
182
-        }
183
-        foreach ($stylesheets as $handle => $stylesheet) {
184
-            $this->css[ $handle ] = $stylesheet;
185
-        }
186
-    }
187
-
188
-
189
-    /**
190
-     * @param array $scripts
191
-     * @param bool  $add_to_header
192
-     * @throws DomainException
193
-     */
194
-    public function addScripts(array $scripts, $add_to_header = false)
195
-    {
196
-        if (empty($scripts)) {
197
-            throw new DomainException(
198
-                esc_html__(
199
-                    'A non-empty array of URLs, is required to add Javascript to an iframe.',
200
-                    'event_espresso'
201
-                )
202
-            );
203
-        }
204
-        foreach ($scripts as $handle => $script) {
205
-            if ($add_to_header) {
206
-                $this->header_js[ $handle ] = $script;
207
-            } else {
208
-                $this->footer_js[ $handle ] = $script;
209
-            }
210
-        }
211
-    }
212
-
213
-
214
-    /**
215
-     * @param array $script_attributes
216
-     * @param bool  $add_to_header
217
-     * @throws DomainException
218
-     */
219
-    public function addScriptAttributes(array $script_attributes, $add_to_header = false)
220
-    {
221
-        if (empty($script_attributes)) {
222
-            throw new DomainException(
223
-                esc_html__(
224
-                    'A non-empty array of strings, is required to add attributes to iframe Javascript.',
225
-                    'event_espresso'
226
-                )
227
-            );
228
-        }
229
-        foreach ($script_attributes as $handle => $script_attribute) {
230
-            if ($add_to_header) {
231
-                $this->header_js_attributes[ $handle ] = $script_attribute;
232
-            } else {
233
-                $this->footer_js_attributes[ $handle ] = $script_attribute;
234
-            }
235
-        }
236
-    }
237
-
238
-
239
-    /**
240
-     * @param array  $vars
241
-     * @param string $var_name
242
-     * @throws DomainException
243
-     */
244
-    public function addLocalizedVars(array $vars, $var_name = 'eei18n')
245
-    {
246
-        if (empty($vars)) {
247
-            throw new DomainException(
248
-                esc_html__(
249
-                    'A non-empty array of vars, is required to add localized Javascript vars to an iframe.',
250
-                    'event_espresso'
251
-                )
252
-            );
253
-        }
254
-        foreach ($vars as $handle => $var) {
255
-            if ($var_name === 'eei18n') {
256
-                EE_Registry::$i18n_js_strings[ $handle ] = $var;
257
-            } elseif ($var_name === 'eeCAL' && $handle === 'espresso_calendar') {
258
-                $this->localized_vars[ $var_name ] = $var;
259
-            } else {
260
-                if (! isset($this->localized_vars[ $var_name ])) {
261
-                    $this->localized_vars[ $var_name ] = array();
262
-                }
263
-                $this->localized_vars[ $var_name ][ $handle ] = $var;
264
-            }
265
-        }
266
-    }
267
-
268
-
269
-    /**
270
-     * @param string $utm_content
271
-     * @throws DomainException
272
-     */
273
-    public function display($utm_content = '')
274
-    {
275
-        $this->content .= EEH_Template::powered_by_event_espresso(
276
-            '',
277
-            '',
278
-            ! empty($utm_content) ? array('utm_content' => $utm_content) : array()
279
-        );
280
-        EE_System::do_not_cache();
281
-        echo $this->getTemplate();
282
-        exit;
283
-    }
284
-
285
-
286
-    /**
287
-     * @return string
288
-     * @throws DomainException
289
-     */
290
-    public function getTemplate()
291
-    {
292
-        return EEH_Template::display_template(
293
-            __DIR__ . DIRECTORY_SEPARATOR . 'iframe_wrapper.template.php',
294
-            array(
295
-                'title'                => apply_filters(
296
-                    'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__getTemplate__title',
297
-                    $this->title,
298
-                    $this
299
-                ),
300
-                'content'              => apply_filters(
301
-                    'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__getTemplate__content',
302
-                    $this->content,
303
-                    $this
304
-                ),
305
-                'enqueue_wp_assets'    => apply_filters(
306
-                    'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__getTemplate__enqueue_wp_assets',
307
-                    $this->enqueue_wp_assets,
308
-                    $this
309
-                ),
310
-                'css'                  => (array) apply_filters(
311
-                    'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__getTemplate__css_urls',
312
-                    $this->css,
313
-                    $this
314
-                ),
315
-                'header_js'            => (array) apply_filters(
316
-                    'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__getTemplate__header_js_urls',
317
-                    $this->header_js,
318
-                    $this
319
-                ),
320
-                'header_js_attributes' => (array) apply_filters(
321
-                    'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__getTemplate__header_js_attributes',
322
-                    $this->header_js_attributes,
323
-                    $this
324
-                ),
325
-                'footer_js'            => (array) apply_filters(
326
-                    'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__getTemplate__footer_js_urls',
327
-                    $this->footer_js,
328
-                    $this
329
-                ),
330
-                'footer_js_attributes' => (array) apply_filters(
331
-                    'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__getTemplate__footer_js_attributes',
332
-                    $this->footer_js_attributes,
333
-                    $this
334
-                ),
335
-                'eei18n'               => apply_filters(
336
-                    'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__getTemplate__eei18n_js_strings',
337
-                    EE_Registry::localize_i18n_js_strings() . $this->localizeJsonVars(),
338
-                    $this
339
-                ),
340
-                'notices'              => EEH_Template::display_template(
341
-                    EE_TEMPLATES . 'espresso-ajax-notices.template.php',
342
-                    array(),
343
-                    true
344
-                ),
345
-            ),
346
-            true,
347
-            true
348
-        );
349
-    }
350
-
351
-
352
-    /**
353
-     * localizeJsonVars
354
-     *
355
-     * @return string
356
-     */
357
-    public function localizeJsonVars()
358
-    {
359
-        $JSON = '';
360
-        foreach ((array) $this->localized_vars as $var_name => $vars) {
361
-            $this->localized_vars[ $var_name ] = $this->encodeJsonVars($vars);
362
-            $JSON .= "/* <![CDATA[ */ var {$var_name} = ";
363
-            $JSON .= wp_json_encode($this->localized_vars[ $var_name ]);
364
-            $JSON .= '; /* ]]> */';
365
-        }
366
-        return $JSON;
367
-    }
368
-
369
-
370
-    /**
371
-     * @param bool|int|float|string|array $var
372
-     * @return array
373
-     */
374
-    public function encodeJsonVars($var)
375
-    {
376
-        if (is_array($var)) {
377
-            $localized_vars = array();
378
-            foreach ((array) $var as $key => $value) {
379
-                $localized_vars[ $key ] = $this->encodeJsonVars($value);
380
-            }
381
-            return $localized_vars;
382
-        }
383
-        if (is_scalar($var)) {
384
-            return html_entity_decode((string) $var, ENT_QUOTES, 'UTF-8');
385
-        }
386
-        return null;
387
-    }
73
+	protected $localized_vars = array();
74
+
75
+
76
+	/**
77
+	 * Iframe constructor
78
+	 *
79
+	 * @param string $title
80
+	 * @param string $content
81
+	 * @throws DomainException
82
+	 */
83
+	public function __construct($title, $content)
84
+	{
85
+		global $wp_version;
86
+		if (! defined('EE_IFRAME_DIR_URL')) {
87
+			define('EE_IFRAME_DIR_URL', plugin_dir_url(__FILE__));
88
+		}
89
+		$this->setContent($content);
90
+		$this->setTitle($title);
91
+		$this->addStylesheets(
92
+			apply_filters(
93
+				'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__construct__default_css',
94
+				array(
95
+					'site_theme'       => get_stylesheet_directory_uri() . DS
96
+										  . 'style.css?ver=' . EVENT_ESPRESSO_VERSION,
97
+					'dashicons'        => includes_url('css/dashicons.min.css?ver=' . $wp_version),
98
+					'espresso_default' => EE_GLOBAL_ASSETS_URL
99
+										  . 'css/espresso_default.css?ver=' . EVENT_ESPRESSO_VERSION,
100
+				),
101
+				$this
102
+			)
103
+		);
104
+		$this->addScripts(
105
+			apply_filters(
106
+				'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__construct__default_js',
107
+				array(
108
+					'jquery'        => includes_url('js/jquery/jquery.js?ver=' . $wp_version),
109
+					'espresso_core' => EE_GLOBAL_ASSETS_URL
110
+									   . 'scripts/espresso_core.js?ver=' . EVENT_ESPRESSO_VERSION,
111
+				),
112
+				$this
113
+			)
114
+		);
115
+		if (apply_filters(
116
+			'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__construct__load_default_theme_stylesheet',
117
+			false
118
+		)) {
119
+			$this->addStylesheets(
120
+				apply_filters(
121
+					'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__construct__default_theme_stylesheet',
122
+					array('default_theme_stylesheet' => get_stylesheet_uri()),
123
+					$this
124
+				)
125
+			);
126
+		}
127
+	}
128
+
129
+
130
+	/**
131
+	 * @param string $title
132
+	 * @throws DomainException
133
+	 */
134
+	public function setTitle($title)
135
+	{
136
+		if (empty($title)) {
137
+			throw new DomainException(
138
+				esc_html__('You must provide a page title in order to create an iframe.', 'event_espresso')
139
+			);
140
+		}
141
+		$this->title = $title;
142
+	}
143
+
144
+
145
+	/**
146
+	 * @param string $content
147
+	 * @throws DomainException
148
+	 */
149
+	public function setContent($content)
150
+	{
151
+		if (empty($content)) {
152
+			throw new DomainException(
153
+				esc_html__('You must provide content in order to create an iframe.', 'event_espresso')
154
+			);
155
+		}
156
+		$this->content = $content;
157
+	}
158
+
159
+
160
+	/**
161
+	 * @param boolean $enqueue_wp_assets
162
+	 */
163
+	public function setEnqueueWpAssets($enqueue_wp_assets)
164
+	{
165
+		$this->enqueue_wp_assets = filter_var($enqueue_wp_assets, FILTER_VALIDATE_BOOLEAN);
166
+	}
167
+
168
+
169
+	/**
170
+	 * @param array $stylesheets
171
+	 * @throws DomainException
172
+	 */
173
+	public function addStylesheets(array $stylesheets)
174
+	{
175
+		if (empty($stylesheets)) {
176
+			throw new DomainException(
177
+				esc_html__(
178
+					'A non-empty array of URLs, is required to add a CSS stylesheet to an iframe.',
179
+					'event_espresso'
180
+				)
181
+			);
182
+		}
183
+		foreach ($stylesheets as $handle => $stylesheet) {
184
+			$this->css[ $handle ] = $stylesheet;
185
+		}
186
+	}
187
+
188
+
189
+	/**
190
+	 * @param array $scripts
191
+	 * @param bool  $add_to_header
192
+	 * @throws DomainException
193
+	 */
194
+	public function addScripts(array $scripts, $add_to_header = false)
195
+	{
196
+		if (empty($scripts)) {
197
+			throw new DomainException(
198
+				esc_html__(
199
+					'A non-empty array of URLs, is required to add Javascript to an iframe.',
200
+					'event_espresso'
201
+				)
202
+			);
203
+		}
204
+		foreach ($scripts as $handle => $script) {
205
+			if ($add_to_header) {
206
+				$this->header_js[ $handle ] = $script;
207
+			} else {
208
+				$this->footer_js[ $handle ] = $script;
209
+			}
210
+		}
211
+	}
212
+
213
+
214
+	/**
215
+	 * @param array $script_attributes
216
+	 * @param bool  $add_to_header
217
+	 * @throws DomainException
218
+	 */
219
+	public function addScriptAttributes(array $script_attributes, $add_to_header = false)
220
+	{
221
+		if (empty($script_attributes)) {
222
+			throw new DomainException(
223
+				esc_html__(
224
+					'A non-empty array of strings, is required to add attributes to iframe Javascript.',
225
+					'event_espresso'
226
+				)
227
+			);
228
+		}
229
+		foreach ($script_attributes as $handle => $script_attribute) {
230
+			if ($add_to_header) {
231
+				$this->header_js_attributes[ $handle ] = $script_attribute;
232
+			} else {
233
+				$this->footer_js_attributes[ $handle ] = $script_attribute;
234
+			}
235
+		}
236
+	}
237
+
238
+
239
+	/**
240
+	 * @param array  $vars
241
+	 * @param string $var_name
242
+	 * @throws DomainException
243
+	 */
244
+	public function addLocalizedVars(array $vars, $var_name = 'eei18n')
245
+	{
246
+		if (empty($vars)) {
247
+			throw new DomainException(
248
+				esc_html__(
249
+					'A non-empty array of vars, is required to add localized Javascript vars to an iframe.',
250
+					'event_espresso'
251
+				)
252
+			);
253
+		}
254
+		foreach ($vars as $handle => $var) {
255
+			if ($var_name === 'eei18n') {
256
+				EE_Registry::$i18n_js_strings[ $handle ] = $var;
257
+			} elseif ($var_name === 'eeCAL' && $handle === 'espresso_calendar') {
258
+				$this->localized_vars[ $var_name ] = $var;
259
+			} else {
260
+				if (! isset($this->localized_vars[ $var_name ])) {
261
+					$this->localized_vars[ $var_name ] = array();
262
+				}
263
+				$this->localized_vars[ $var_name ][ $handle ] = $var;
264
+			}
265
+		}
266
+	}
267
+
268
+
269
+	/**
270
+	 * @param string $utm_content
271
+	 * @throws DomainException
272
+	 */
273
+	public function display($utm_content = '')
274
+	{
275
+		$this->content .= EEH_Template::powered_by_event_espresso(
276
+			'',
277
+			'',
278
+			! empty($utm_content) ? array('utm_content' => $utm_content) : array()
279
+		);
280
+		EE_System::do_not_cache();
281
+		echo $this->getTemplate();
282
+		exit;
283
+	}
284
+
285
+
286
+	/**
287
+	 * @return string
288
+	 * @throws DomainException
289
+	 */
290
+	public function getTemplate()
291
+	{
292
+		return EEH_Template::display_template(
293
+			__DIR__ . DIRECTORY_SEPARATOR . 'iframe_wrapper.template.php',
294
+			array(
295
+				'title'                => apply_filters(
296
+					'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__getTemplate__title',
297
+					$this->title,
298
+					$this
299
+				),
300
+				'content'              => apply_filters(
301
+					'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__getTemplate__content',
302
+					$this->content,
303
+					$this
304
+				),
305
+				'enqueue_wp_assets'    => apply_filters(
306
+					'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__getTemplate__enqueue_wp_assets',
307
+					$this->enqueue_wp_assets,
308
+					$this
309
+				),
310
+				'css'                  => (array) apply_filters(
311
+					'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__getTemplate__css_urls',
312
+					$this->css,
313
+					$this
314
+				),
315
+				'header_js'            => (array) apply_filters(
316
+					'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__getTemplate__header_js_urls',
317
+					$this->header_js,
318
+					$this
319
+				),
320
+				'header_js_attributes' => (array) apply_filters(
321
+					'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__getTemplate__header_js_attributes',
322
+					$this->header_js_attributes,
323
+					$this
324
+				),
325
+				'footer_js'            => (array) apply_filters(
326
+					'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__getTemplate__footer_js_urls',
327
+					$this->footer_js,
328
+					$this
329
+				),
330
+				'footer_js_attributes' => (array) apply_filters(
331
+					'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__getTemplate__footer_js_attributes',
332
+					$this->footer_js_attributes,
333
+					$this
334
+				),
335
+				'eei18n'               => apply_filters(
336
+					'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__getTemplate__eei18n_js_strings',
337
+					EE_Registry::localize_i18n_js_strings() . $this->localizeJsonVars(),
338
+					$this
339
+				),
340
+				'notices'              => EEH_Template::display_template(
341
+					EE_TEMPLATES . 'espresso-ajax-notices.template.php',
342
+					array(),
343
+					true
344
+				),
345
+			),
346
+			true,
347
+			true
348
+		);
349
+	}
350
+
351
+
352
+	/**
353
+	 * localizeJsonVars
354
+	 *
355
+	 * @return string
356
+	 */
357
+	public function localizeJsonVars()
358
+	{
359
+		$JSON = '';
360
+		foreach ((array) $this->localized_vars as $var_name => $vars) {
361
+			$this->localized_vars[ $var_name ] = $this->encodeJsonVars($vars);
362
+			$JSON .= "/* <![CDATA[ */ var {$var_name} = ";
363
+			$JSON .= wp_json_encode($this->localized_vars[ $var_name ]);
364
+			$JSON .= '; /* ]]> */';
365
+		}
366
+		return $JSON;
367
+	}
368
+
369
+
370
+	/**
371
+	 * @param bool|int|float|string|array $var
372
+	 * @return array
373
+	 */
374
+	public function encodeJsonVars($var)
375
+	{
376
+		if (is_array($var)) {
377
+			$localized_vars = array();
378
+			foreach ((array) $var as $key => $value) {
379
+				$localized_vars[ $key ] = $this->encodeJsonVars($value);
380
+			}
381
+			return $localized_vars;
382
+		}
383
+		if (is_scalar($var)) {
384
+			return html_entity_decode((string) $var, ENT_QUOTES, 'UTF-8');
385
+		}
386
+		return null;
387
+	}
388 388
 }
Please login to merge, or discard this patch.
Spacing   +23 added lines, -23 removed lines patch added patch discarded remove patch
@@ -83,7 +83,7 @@  discard block
 block discarded – undo
83 83
     public function __construct($title, $content)
84 84
     {
85 85
         global $wp_version;
86
-        if (! defined('EE_IFRAME_DIR_URL')) {
86
+        if ( ! defined('EE_IFRAME_DIR_URL')) {
87 87
             define('EE_IFRAME_DIR_URL', plugin_dir_url(__FILE__));
88 88
         }
89 89
         $this->setContent($content);
@@ -92,11 +92,11 @@  discard block
 block discarded – undo
92 92
             apply_filters(
93 93
                 'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__construct__default_css',
94 94
                 array(
95
-                    'site_theme'       => get_stylesheet_directory_uri() . DS
96
-                                          . 'style.css?ver=' . EVENT_ESPRESSO_VERSION,
97
-                    'dashicons'        => includes_url('css/dashicons.min.css?ver=' . $wp_version),
95
+                    'site_theme'       => get_stylesheet_directory_uri().DS
96
+                                          . 'style.css?ver='.EVENT_ESPRESSO_VERSION,
97
+                    'dashicons'        => includes_url('css/dashicons.min.css?ver='.$wp_version),
98 98
                     'espresso_default' => EE_GLOBAL_ASSETS_URL
99
-                                          . 'css/espresso_default.css?ver=' . EVENT_ESPRESSO_VERSION,
99
+                                          . 'css/espresso_default.css?ver='.EVENT_ESPRESSO_VERSION,
100 100
                 ),
101 101
                 $this
102 102
             )
@@ -105,9 +105,9 @@  discard block
 block discarded – undo
105 105
             apply_filters(
106 106
                 'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__construct__default_js',
107 107
                 array(
108
-                    'jquery'        => includes_url('js/jquery/jquery.js?ver=' . $wp_version),
108
+                    'jquery'        => includes_url('js/jquery/jquery.js?ver='.$wp_version),
109 109
                     'espresso_core' => EE_GLOBAL_ASSETS_URL
110
-                                       . 'scripts/espresso_core.js?ver=' . EVENT_ESPRESSO_VERSION,
110
+                                       . 'scripts/espresso_core.js?ver='.EVENT_ESPRESSO_VERSION,
111 111
                 ),
112 112
                 $this
113 113
             )
@@ -181,7 +181,7 @@  discard block
 block discarded – undo
181 181
             );
182 182
         }
183 183
         foreach ($stylesheets as $handle => $stylesheet) {
184
-            $this->css[ $handle ] = $stylesheet;
184
+            $this->css[$handle] = $stylesheet;
185 185
         }
186 186
     }
187 187
 
@@ -203,9 +203,9 @@  discard block
 block discarded – undo
203 203
         }
204 204
         foreach ($scripts as $handle => $script) {
205 205
             if ($add_to_header) {
206
-                $this->header_js[ $handle ] = $script;
206
+                $this->header_js[$handle] = $script;
207 207
             } else {
208
-                $this->footer_js[ $handle ] = $script;
208
+                $this->footer_js[$handle] = $script;
209 209
             }
210 210
         }
211 211
     }
@@ -228,9 +228,9 @@  discard block
 block discarded – undo
228 228
         }
229 229
         foreach ($script_attributes as $handle => $script_attribute) {
230 230
             if ($add_to_header) {
231
-                $this->header_js_attributes[ $handle ] = $script_attribute;
231
+                $this->header_js_attributes[$handle] = $script_attribute;
232 232
             } else {
233
-                $this->footer_js_attributes[ $handle ] = $script_attribute;
233
+                $this->footer_js_attributes[$handle] = $script_attribute;
234 234
             }
235 235
         }
236 236
     }
@@ -253,14 +253,14 @@  discard block
 block discarded – undo
253 253
         }
254 254
         foreach ($vars as $handle => $var) {
255 255
             if ($var_name === 'eei18n') {
256
-                EE_Registry::$i18n_js_strings[ $handle ] = $var;
256
+                EE_Registry::$i18n_js_strings[$handle] = $var;
257 257
             } elseif ($var_name === 'eeCAL' && $handle === 'espresso_calendar') {
258
-                $this->localized_vars[ $var_name ] = $var;
258
+                $this->localized_vars[$var_name] = $var;
259 259
             } else {
260
-                if (! isset($this->localized_vars[ $var_name ])) {
261
-                    $this->localized_vars[ $var_name ] = array();
260
+                if ( ! isset($this->localized_vars[$var_name])) {
261
+                    $this->localized_vars[$var_name] = array();
262 262
                 }
263
-                $this->localized_vars[ $var_name ][ $handle ] = $var;
263
+                $this->localized_vars[$var_name][$handle] = $var;
264 264
             }
265 265
         }
266 266
     }
@@ -290,7 +290,7 @@  discard block
 block discarded – undo
290 290
     public function getTemplate()
291 291
     {
292 292
         return EEH_Template::display_template(
293
-            __DIR__ . DIRECTORY_SEPARATOR . 'iframe_wrapper.template.php',
293
+            __DIR__.DIRECTORY_SEPARATOR.'iframe_wrapper.template.php',
294 294
             array(
295 295
                 'title'                => apply_filters(
296 296
                     'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__getTemplate__title',
@@ -334,11 +334,11 @@  discard block
 block discarded – undo
334 334
                 ),
335 335
                 'eei18n'               => apply_filters(
336 336
                     'FHEE___EventEspresso_core_libraries_iframe_display_Iframe__getTemplate__eei18n_js_strings',
337
-                    EE_Registry::localize_i18n_js_strings() . $this->localizeJsonVars(),
337
+                    EE_Registry::localize_i18n_js_strings().$this->localizeJsonVars(),
338 338
                     $this
339 339
                 ),
340 340
                 'notices'              => EEH_Template::display_template(
341
-                    EE_TEMPLATES . 'espresso-ajax-notices.template.php',
341
+                    EE_TEMPLATES.'espresso-ajax-notices.template.php',
342 342
                     array(),
343 343
                     true
344 344
                 ),
@@ -358,9 +358,9 @@  discard block
 block discarded – undo
358 358
     {
359 359
         $JSON = '';
360 360
         foreach ((array) $this->localized_vars as $var_name => $vars) {
361
-            $this->localized_vars[ $var_name ] = $this->encodeJsonVars($vars);
361
+            $this->localized_vars[$var_name] = $this->encodeJsonVars($vars);
362 362
             $JSON .= "/* <![CDATA[ */ var {$var_name} = ";
363
-            $JSON .= wp_json_encode($this->localized_vars[ $var_name ]);
363
+            $JSON .= wp_json_encode($this->localized_vars[$var_name]);
364 364
             $JSON .= '; /* ]]> */';
365 365
         }
366 366
         return $JSON;
@@ -376,7 +376,7 @@  discard block
 block discarded – undo
376 376
         if (is_array($var)) {
377 377
             $localized_vars = array();
378 378
             foreach ((array) $var as $key => $value) {
379
-                $localized_vars[ $key ] = $this->encodeJsonVars($value);
379
+                $localized_vars[$key] = $this->encodeJsonVars($value);
380 380
             }
381 381
             return $localized_vars;
382 382
         }
Please login to merge, or discard this patch.