Completed
Branch BUG/10297/invoice-payment-meth... (96872c)
by
unknown
60:38 queued 48:52
created
core/libraries/payment_methods/EE_Payment_Method_Manager.lib.php 2 patches
Indentation   +570 added lines, -570 removed lines patch added patch discarded remove patch
@@ -21,576 +21,576 @@
 block discarded – undo
21 21
 class EE_Payment_Method_Manager implements ResettableInterface
22 22
 {
23 23
 
24
-    /**
25
-     * prefix added to all payment method capabilities names
26
-     */
27
-    const   CAPABILITIES_PREFIX= 'ee_payment_method_';
28
-
29
-    /**
30
-     * @var EE_Payment_Method_Manager $_instance
31
-     */
32
-    private static $_instance;
33
-
34
-    /**
35
-     * @var boolean
36
-     */
37
-    protected $payment_method_caps_initialized = false;
38
-
39
-    /**
40
-     * @var array keys are class names without 'EE_PMT_', values are their filepaths
41
-     */
42
-    protected $_payment_method_types = array();
43
-
44
-    /**
45
-     * @var EE_PMT_Base[]
46
-     */
47
-    protected $payment_method_objects = array();
48
-
49
-
50
-
51
-    /**
52
-     * EE_Payment_Method_Manager constructor.
53
-     *
54
-     * @throws EE_Error
55
-     * @throws DomainException
56
-     */
57
-    public function __construct()
58
-    {
59
-        // if in admin lets ensure caps are set.
60
-        if (is_admin()) {
61
-            $this->_register_payment_methods();
62
-            // set them immediately
63
-            $this->initializePaymentMethodCaps();
64
-            // plus any time they get reset
65
-            add_filter(
66
-                'FHEE__EE_Capabilities__addCaps__capabilities_to_add',
67
-                array($this, 'addPaymentMethodCapsDuringReset')
68
-            );
69
-        }
70
-    }
71
-
72
-
73
-
74
-    /**
75
-     * @singleton method used to instantiate class object
76
-     * @return EE_Payment_Method_Manager instance
77
-     * @throws DomainException
78
-     * @throws EE_Error
79
-     */
80
-    public static function instance()
81
-    {
82
-        // check if class object is instantiated, and instantiated properly
83
-        if (! self::$_instance instanceof EE_Payment_Method_Manager) {
84
-            EE_Registry::instance()->load_lib('PMT_Base');
85
-            self::$_instance = new self();
86
-        }
87
-        return self::$_instance;
88
-    }
89
-
90
-
91
-
92
-    /**
93
-     * Resets the instance and returns a new one
94
-     *
95
-     * @return EE_Payment_Method_Manager
96
-     * @throws DomainException
97
-     * @throws EE_Error
98
-     */
99
-    public static function reset()
100
-    {
101
-        self::$_instance = null;
102
-        return self::instance();
103
-    }
104
-
105
-
106
-
107
-    /**
108
-     * If necessary, re-register payment methods
109
-     *
110
-     * @param boolean $force_recheck whether to recheck for payment method types,
111
-     *                               or just re-use the PMTs we found last time we checked during this request (if
112
-     *                               we have not yet checked during this request, then we need to check anyways)
113
-     */
114
-    public function maybe_register_payment_methods($force_recheck = false)
115
-    {
116
-        if (! $this->_payment_method_types || $force_recheck) {
117
-            $this->_register_payment_methods();
118
-        }
119
-    }
120
-
121
-
122
-
123
-    /**
124
-     * register_payment_methods
125
-     *
126
-     * @return array
127
-     */
128
-    protected function _register_payment_methods()
129
-    {
130
-        // grab list of installed modules
131
-        $pm_to_register = glob(EE_PAYMENT_METHODS . '*', GLOB_ONLYDIR);
132
-        // filter list of modules to register
133
-        $pm_to_register = apply_filters(
134
-            'FHEE__EE_Payment_Method_Manager__register_payment_methods__payment_methods_to_register',
135
-            $pm_to_register
136
-        );
137
-        // remove any duplicates if that should happen for some reason
138
-        $pm_to_register = array_unique($pm_to_register);
139
-        // loop through folders
140
-        foreach ($pm_to_register as $pm_path) {
141
-            $this->register_payment_method($pm_path);
142
-        }
143
-        do_action('FHEE__EE_Payment_Method_Manager__register_payment_methods__registered_payment_methods');
144
-        // filter list of installed modules
145
-        //keep them organized alphabetically by the payment method type's name
146
-        ksort($this->_payment_method_types);
147
-        return apply_filters(
148
-            'FHEE__EE_Payment_Method_Manager__register_payment_methods__installed_payment_methods',
149
-            $this->_payment_method_types
150
-        );
151
-    }
152
-
153
-
154
-
155
-    /**
156
-     * register_payment_method- makes core aware of this payment method
157
-     *
158
-     * @param string $payment_method_path - full path up to and including payment method folder
159
-     * @return boolean
160
-     */
161
-    public function register_payment_method($payment_method_path = '')
162
-    {
163
-        do_action('AHEE__EE_Payment_Method_Manager__register_payment_method__begin', $payment_method_path);
164
-        $module_ext = '.pm.php';
165
-        // make all separators match
166
-        $payment_method_path = rtrim(str_replace('/\\', DS, $payment_method_path), DS);
167
-        // grab and sanitize module name
168
-        $module_dir = basename($payment_method_path);
169
-        // create class name from module directory name
170
-        $module = str_replace(array('_', ' '), array(' ', '_'), $module_dir);
171
-        // add class prefix
172
-        $module_class = 'EE_PMT_' . $module;
173
-        // does the module exist ?
174
-        if (! is_readable($payment_method_path . DS . $module_class . $module_ext)) {
175
-            $msg = sprintf(
176
-                esc_html__(
177
-                    'The requested %s payment method file could not be found or is not readable due to file permissions.',
178
-                    'event_espresso'
179
-                ), $module
180
-            );
181
-            EE_Error::add_error($msg . '||' . $msg, __FILE__, __FUNCTION__, __LINE__);
182
-            return false;
183
-        }
184
-        // load the module class file
185
-        require_once($payment_method_path . DS . $module_class . $module_ext);
186
-        // verify that class exists
187
-        if (! class_exists($module_class)) {
188
-            $msg = sprintf(
189
-                esc_html__('The requested %s module class does not exist.', 'event_espresso'),
190
-                $module_class
191
-            );
192
-            EE_Error::add_error($msg . '||' . $msg, __FILE__, __FUNCTION__, __LINE__);
193
-            return false;
194
-        }
195
-        // add to array of registered modules
196
-        $this->_payment_method_types[$module] = $payment_method_path . DS . $module_class . $module_ext;
197
-        return true;
198
-    }
199
-
200
-
201
-
202
-    /**
203
-     * Checks if a payment method has been registered, and if so includes it
204
-     *
205
-     * @param string  $payment_method_name like 'PayPal_Pro', (ie class name without the prefix 'EEPM_')
206
-     * @param boolean $force_recheck       whether to force re-checking for new payment method types
207
-     * @return boolean
208
-     */
209
-    public function payment_method_type_exists($payment_method_name, $force_recheck = false)
210
-    {
211
-        if (
212
-            $force_recheck
213
-            || ! is_array($this->_payment_method_types)
214
-            || ! isset($this->_payment_method_types[$payment_method_name])
215
-        ) {
216
-            $this->maybe_register_payment_methods($force_recheck);
217
-        }
218
-        if (isset($this->_payment_method_types[$payment_method_name])) {
219
-            require_once($this->_payment_method_types[$payment_method_name]);
220
-            return true;
221
-        }
222
-        return false;
223
-    }
224
-
225
-
226
-
227
-    /**
228
-     * Returns all the class names of the various payment method types
229
-     *
230
-     * @param boolean $with_prefixes TRUE: get payment method type class names; false just their 'names'
231
-     *                               (what you'd find in wp_esp_payment_method.PMD_type)
232
-     * @param boolean $force_recheck whether to force re-checking for new payment method types
233
-     * @return array
234
-     */
235
-    public function payment_method_type_names($with_prefixes = false, $force_recheck = false)
236
-    {
237
-        $this->maybe_register_payment_methods($force_recheck);
238
-        if ($with_prefixes) {
239
-            $classnames = array_keys($this->_payment_method_types);
240
-            $payment_methods = array();
241
-            foreach ($classnames as $classname) {
242
-                $payment_methods[] = $this->payment_method_class_from_type($classname);
243
-            }
244
-            return $payment_methods;
245
-        }
246
-        return array_keys($this->_payment_method_types);
247
-    }
248
-
249
-
250
-
251
-    /**
252
-     * Gets an object of each payment method type, none of which are bound to a
253
-     * payment method instance
254
-     *
255
-     * @param boolean $force_recheck whether to force re-checking for new payment method types
256
-     * @return EE_PMT_Base[]
257
-     */
258
-    public function payment_method_types($force_recheck = false)
259
-    {
260
-        if ($force_recheck || empty($this->payment_method_objects)) {
261
-            $this->maybe_register_payment_methods($force_recheck);
262
-            foreach ($this->payment_method_type_names(true) as $classname) {
263
-                if (! isset($this->payment_method_objects[$classname])) {
264
-                    $this->payment_method_objects[$classname] = new $classname;
265
-                }
266
-            }
267
-        }
268
-        return $this->payment_method_objects;
269
-    }
270
-
271
-
272
-
273
-    /**
274
-     * Changes the payment method's class name into the payment method type's name
275
-     * (as used on the payment method's table's PMD_type field)
276
-     *
277
-     * @param string $classname
278
-     * @return string
279
-     */
280
-    public function payment_method_type_sans_class_prefix($classname)
281
-    {
282
-        return str_replace('EE_PMT_', '', $classname);
283
-    }
284
-
285
-
286
-
287
-    /**
288
-     * Does the opposite of payment-method_type_sans_prefix
289
-     *
290
-     * @param string $type
291
-     * @return string
292
-     */
293
-    public function payment_method_class_from_type($type)
294
-    {
295
-        return 'EE_PMT_' . $type;
296
-    }
297
-
298
-
299
-
300
-    /**
301
-     * Activates a payment method of the given type.
302
-     *
303
-     * @param string $payment_method_type the PMT_type; for EE_PMT_Invoice this would be 'Invoice'
304
-     * @return EE_Payment_Method
305
-     * @throws InvalidDataTypeException
306
-     * @throws EE_Error
307
-     */
308
-    public function activate_a_payment_method_of_type($payment_method_type)
309
-    {
310
-        $this->maybe_register_payment_methods();
311
-        $payment_method = EEM_Payment_Method::instance()->get_one_of_type($payment_method_type);
312
-        if (! $payment_method instanceof EE_Payment_Method) {
313
-            $pm_type_class = $this->payment_method_class_from_type($payment_method_type);
314
-            if (class_exists($pm_type_class)) {
315
-                /** @var $pm_type_obj EE_PMT_Base */
316
-                $pm_type_obj = new $pm_type_class;
317
-                $payment_method = EEM_Payment_Method::instance()->get_one_by_slug($pm_type_obj->system_name());
318
-                if (! $payment_method) {
319
-                    $payment_method = $this->create_payment_method_of_type($pm_type_obj);
320
-                }
321
-                $payment_method->set_type($payment_method_type);
322
-                $this->initialize_payment_method($payment_method);
323
-            } else {
324
-                throw new EE_Error(
325
-                    sprintf(
326
-                        esc_html__(
327
-                            'There is no payment method of type %1$s, so it could not be activated',
328
-                            'event_espresso'
329
-                        ),
330
-                        $pm_type_class
331
-                    )
332
-                );
333
-            }
334
-        }
335
-        $payment_method->set_active();
336
-        $payment_method->save();
337
-        /** @type EE_Message_Resource_Manager $message_resource_manager */
338
-        //if this was the invoice message type, make sure users can view their invoices
339
-        if ($payment_method->type() === 'Invoice'
340
-            && (
341
-                ! EEH_MSG_Template::is_mt_active('invoice')
342
-            )
343
-        ) {
344
-            $message_resource_manager = EE_Registry::instance()->load_lib('Message_Resource_Manager');
345
-            /** @type EE_Message_Resource_Manager $message_resource_manager */
346
-            $message_resource_manager->ensure_message_type_is_active('invoice', 'html');
347
-            new PersistentAdminNotice(
348
-                'invoice_pm_requirements_notice',
349
-                sprintf(
350
-                    esc_html__(
351
-                        'The Invoice payment method has been activated. It requires the %1$sinvoice message%2$s type to be active, so it was automatically activated for you.',
352
-                        'event_espresso'
353
-                    ),
354
-                    '<a href="' . admin_url('admin.php?page=espresso_messages&action=settings') . '">',
355
-                    '</a>'
356
-                ),
357
-                true
358
-            );
359
-        }
360
-        return $payment_method;
361
-    }
362
-
363
-
364
-
365
-    /**
366
-     * Creates a payment method of the specified type. Does not save it.
367
-     *
368
-     * @global WP_User    $current_user
369
-     * @param EE_PMT_Base $pm_type_obj
370
-     * @return EE_Payment_Method
371
-     * @throws EE_Error
372
-     */
373
-    public function create_payment_method_of_type($pm_type_obj)
374
-    {
375
-        global $current_user;
376
-        $payment_method = EE_Payment_Method::new_instance(
377
-            array(
378
-                'PMD_type'       => $pm_type_obj->system_name(),
379
-                'PMD_name'       => $pm_type_obj->pretty_name(),
380
-                'PMD_admin_name' => $pm_type_obj->pretty_name(),
381
-                'PMD_slug'       => $pm_type_obj->system_name(),//automatically converted to slug
382
-                'PMD_wp_user'    => $current_user->ID,
383
-                'PMD_order'      => EEM_Payment_Method::instance()->count(
384
-                        array(array('PMD_type' => array('!=', 'Admin_Only')))
385
-                    ) * 10,
386
-            )
387
-        );
388
-        return $payment_method;
389
-    }
390
-
391
-
392
-
393
-    /**
394
-     * Sets the initial payment method properties (including extra meta)
395
-     *
396
-     * @param EE_Payment_Method $payment_method
397
-     * @return EE_Payment_Method
398
-     * @throws EE_Error
399
-     */
400
-    public function initialize_payment_method($payment_method)
401
-    {
402
-        $pm_type_obj = $payment_method->type_obj();
403
-        $payment_method->set_description($pm_type_obj->default_description());
404
-        if (! $payment_method->button_url()) {
405
-            $payment_method->set_button_url($pm_type_obj->default_button_url());
406
-        }
407
-        //now add setup its default extra meta properties
408
-        $extra_metas = $pm_type_obj->settings_form()->extra_meta_inputs();
409
-        if (! empty($extra_metas)) {
410
-            //verify the payment method has an ID before adding extra meta
411
-            if (! $payment_method->ID()) {
412
-                $payment_method->save();
413
-            }
414
-            foreach ($extra_metas as $meta_name => $input) {
415
-                $payment_method->update_extra_meta($meta_name, $input->raw_value());
416
-            }
417
-        }
418
-        return $payment_method;
419
-    }
420
-
421
-
422
-
423
-    /**
424
-     * Makes sure the payment method is related to the specified payment method
425
-     *
426
-     * @deprecated in 4.9.40 because the currency payment method table is being deprecated
427
-     * @param EE_Payment_Method $payment_method
428
-     * @return EE_Payment_Method
429
-     * @throws EE_Error
430
-     */
431
-    public function set_usable_currencies_on_payment_method($payment_method)
432
-    {
433
-        EE_Error::doing_it_wrong(
434
-            'EE_Payment_Method_Manager::set_usable_currencies_on_payment_method',
435
-            esc_html__(
436
-                'We no longer define what currencies are usable by payment methods. Its not used nor efficient.',
437
-                'event_espresso'
438
-            ),
439
-            '4.9.40'
440
-        );
441
-        return $payment_method;
442
-    }
443
-
444
-
445
-
446
-    /**
447
-     * Deactivates a payment method of the given payment method slug.
448
-     *
449
-     * @param string $payment_method_slug The slug for the payment method to deactivate.
450
-     * @return int count of rows updated.
451
-     * @throws EE_Error
452
-     */
453
-    public function deactivate_payment_method($payment_method_slug)
454
-    {
455
-        EE_Log::instance()->log(
456
-            __FILE__,
457
-            __FUNCTION__,
458
-            sprintf(
459
-                esc_html__(
460
-                    'Payment method with slug %1$s is being deactivated by site admin',
461
-                    'event_espresso'
462
-                ),
463
-                $payment_method_slug
464
-            ),
465
-            'payment_method_change'
466
-        );
467
-        $count_updated = EEM_Payment_Method::instance()->update(
468
-            array('PMD_scope' => array()),
469
-            array(array('PMD_slug' => $payment_method_slug))
470
-        );
471
-        return $count_updated;
472
-    }
473
-
474
-
475
-
476
-    /**
477
-     * initializes payment method access caps via EE_Capabilities::init_role_caps()
478
-     * upon EE_Payment_Method_Manager construction
479
-     *
480
-     * @throws EE_Error
481
-     * @throws DomainException
482
-     */
483
-    protected function initializePaymentMethodCaps()
484
-    {
485
-        // don't do this twice
486
-        if ($this->payment_method_caps_initialized) {
487
-            return;
488
-        }
489
-        EE_Capabilities::instance()->addCaps(
490
-            $this->getPaymentMethodCaps()
491
-        );
492
-        $this->payment_method_caps_initialized = true;
493
-    }
494
-
495
-
496
-
497
-    /**
498
-     * array  of dynamic payment method access caps.
499
-     * at the time of writing, october 20 2014, these are the caps added:
500
-     *  ee_payment_method_admin_only
501
-     *  ee_payment_method_aim
502
-     *  ee_payment_method_bank
503
-     *  ee_payment_method_check
504
-     *  ee_payment_method_invoice
505
-     *  ee_payment_method_mijireh
506
-     *  ee_payment_method_paypal_pro
507
-     *  ee_payment_method_paypal_standard
508
-     * Any other payment methods added to core or via addons will also get
509
-     * their related capability automatically added too, so long as they are
510
-     * registered properly using EE_Register_Payment_Method::register()
511
-     *
512
-     * @return array
513
-     * @throws DomainException
514
-     */
515
-    protected function getPaymentMethodCaps()
516
-    {
517
-        $caps = array();
518
-        foreach ($this->payment_method_type_names() as $payment_method_name) {
519
-            $caps = $this->addPaymentMethodCap($payment_method_name,$caps);
520
-        }
521
-        return $caps;
522
-    }
523
-
524
-
525
-
526
-    /**
527
-     * @param string $payment_method_name
528
-     * @param array  $payment_method_caps
529
-     * @param string $role
530
-     * @return array
531
-     * @throws DomainException
532
-     */
533
-    public function addPaymentMethodCap($payment_method_name, array $payment_method_caps, $role = 'administrator')
534
-    {
535
-        if (empty($payment_method_name)) {
536
-            throw new DomainException(
537
-                esc_html__(
538
-                    'The name of a payment method must be specified to add capabilities.',
539
-                    'event_espresso'
540
-                )
541
-            );
542
-        }
543
-        if (empty($role)) {
544
-            throw new DomainException(
545
-                sprintf(
546
-                    esc_html__(
547
-                        'No role was supplied while trying to add capabilities for the %1$s payment method.',
548
-                        'event_espresso'
549
-                    ),
550
-                    $payment_method_name
551
-                )
552
-            );
553
-        }
554
-        if(! isset($payment_method_caps[$role])) {
555
-            $payment_method_caps[$role] = array();
556
-        }
557
-        $payment_method_caps[$role][] = EE_Payment_Method_Manager::CAPABILITIES_PREFIX
558
-                                                  . strtolower($payment_method_name);
559
-        return $payment_method_caps;
560
-    }
561
-
562
-
563
-
564
-    /**
565
-     * callback for FHEE__EE_Capabilities__init_role_caps__caps_map filter
566
-     * to add dynamic payment method access caps when capabilities are reset
567
-     * (or if that filter is called and PM caps are not already set)
568
-     *
569
-     * @param array $caps capabilities being filtered
570
-     * @param bool  $reset
571
-     * @return array
572
-     * @throws DomainException
573
-     */
574
-    public function addPaymentMethodCapsDuringReset(array $caps, $reset = false)
575
-    {
576
-        if ($reset || ! $this->payment_method_caps_initialized) {
577
-            $this->payment_method_caps_initialized = true;
578
-            $caps = array_merge_recursive($caps, $this->getPaymentMethodCaps());
579
-        }
580
-        return $caps;
581
-    }
582
-
583
-
584
-
585
-    /**
586
-     * @deprecated 4.9.42
587
-     * @param $caps
588
-     * @return mixed
589
-     */
590
-    public function add_payment_method_caps($caps)
591
-    {
592
-        return $caps;
593
-    }
24
+	/**
25
+	 * prefix added to all payment method capabilities names
26
+	 */
27
+	const   CAPABILITIES_PREFIX= 'ee_payment_method_';
28
+
29
+	/**
30
+	 * @var EE_Payment_Method_Manager $_instance
31
+	 */
32
+	private static $_instance;
33
+
34
+	/**
35
+	 * @var boolean
36
+	 */
37
+	protected $payment_method_caps_initialized = false;
38
+
39
+	/**
40
+	 * @var array keys are class names without 'EE_PMT_', values are their filepaths
41
+	 */
42
+	protected $_payment_method_types = array();
43
+
44
+	/**
45
+	 * @var EE_PMT_Base[]
46
+	 */
47
+	protected $payment_method_objects = array();
48
+
49
+
50
+
51
+	/**
52
+	 * EE_Payment_Method_Manager constructor.
53
+	 *
54
+	 * @throws EE_Error
55
+	 * @throws DomainException
56
+	 */
57
+	public function __construct()
58
+	{
59
+		// if in admin lets ensure caps are set.
60
+		if (is_admin()) {
61
+			$this->_register_payment_methods();
62
+			// set them immediately
63
+			$this->initializePaymentMethodCaps();
64
+			// plus any time they get reset
65
+			add_filter(
66
+				'FHEE__EE_Capabilities__addCaps__capabilities_to_add',
67
+				array($this, 'addPaymentMethodCapsDuringReset')
68
+			);
69
+		}
70
+	}
71
+
72
+
73
+
74
+	/**
75
+	 * @singleton method used to instantiate class object
76
+	 * @return EE_Payment_Method_Manager instance
77
+	 * @throws DomainException
78
+	 * @throws EE_Error
79
+	 */
80
+	public static function instance()
81
+	{
82
+		// check if class object is instantiated, and instantiated properly
83
+		if (! self::$_instance instanceof EE_Payment_Method_Manager) {
84
+			EE_Registry::instance()->load_lib('PMT_Base');
85
+			self::$_instance = new self();
86
+		}
87
+		return self::$_instance;
88
+	}
89
+
90
+
91
+
92
+	/**
93
+	 * Resets the instance and returns a new one
94
+	 *
95
+	 * @return EE_Payment_Method_Manager
96
+	 * @throws DomainException
97
+	 * @throws EE_Error
98
+	 */
99
+	public static function reset()
100
+	{
101
+		self::$_instance = null;
102
+		return self::instance();
103
+	}
104
+
105
+
106
+
107
+	/**
108
+	 * If necessary, re-register payment methods
109
+	 *
110
+	 * @param boolean $force_recheck whether to recheck for payment method types,
111
+	 *                               or just re-use the PMTs we found last time we checked during this request (if
112
+	 *                               we have not yet checked during this request, then we need to check anyways)
113
+	 */
114
+	public function maybe_register_payment_methods($force_recheck = false)
115
+	{
116
+		if (! $this->_payment_method_types || $force_recheck) {
117
+			$this->_register_payment_methods();
118
+		}
119
+	}
120
+
121
+
122
+
123
+	/**
124
+	 * register_payment_methods
125
+	 *
126
+	 * @return array
127
+	 */
128
+	protected function _register_payment_methods()
129
+	{
130
+		// grab list of installed modules
131
+		$pm_to_register = glob(EE_PAYMENT_METHODS . '*', GLOB_ONLYDIR);
132
+		// filter list of modules to register
133
+		$pm_to_register = apply_filters(
134
+			'FHEE__EE_Payment_Method_Manager__register_payment_methods__payment_methods_to_register',
135
+			$pm_to_register
136
+		);
137
+		// remove any duplicates if that should happen for some reason
138
+		$pm_to_register = array_unique($pm_to_register);
139
+		// loop through folders
140
+		foreach ($pm_to_register as $pm_path) {
141
+			$this->register_payment_method($pm_path);
142
+		}
143
+		do_action('FHEE__EE_Payment_Method_Manager__register_payment_methods__registered_payment_methods');
144
+		// filter list of installed modules
145
+		//keep them organized alphabetically by the payment method type's name
146
+		ksort($this->_payment_method_types);
147
+		return apply_filters(
148
+			'FHEE__EE_Payment_Method_Manager__register_payment_methods__installed_payment_methods',
149
+			$this->_payment_method_types
150
+		);
151
+	}
152
+
153
+
154
+
155
+	/**
156
+	 * register_payment_method- makes core aware of this payment method
157
+	 *
158
+	 * @param string $payment_method_path - full path up to and including payment method folder
159
+	 * @return boolean
160
+	 */
161
+	public function register_payment_method($payment_method_path = '')
162
+	{
163
+		do_action('AHEE__EE_Payment_Method_Manager__register_payment_method__begin', $payment_method_path);
164
+		$module_ext = '.pm.php';
165
+		// make all separators match
166
+		$payment_method_path = rtrim(str_replace('/\\', DS, $payment_method_path), DS);
167
+		// grab and sanitize module name
168
+		$module_dir = basename($payment_method_path);
169
+		// create class name from module directory name
170
+		$module = str_replace(array('_', ' '), array(' ', '_'), $module_dir);
171
+		// add class prefix
172
+		$module_class = 'EE_PMT_' . $module;
173
+		// does the module exist ?
174
+		if (! is_readable($payment_method_path . DS . $module_class . $module_ext)) {
175
+			$msg = sprintf(
176
+				esc_html__(
177
+					'The requested %s payment method file could not be found or is not readable due to file permissions.',
178
+					'event_espresso'
179
+				), $module
180
+			);
181
+			EE_Error::add_error($msg . '||' . $msg, __FILE__, __FUNCTION__, __LINE__);
182
+			return false;
183
+		}
184
+		// load the module class file
185
+		require_once($payment_method_path . DS . $module_class . $module_ext);
186
+		// verify that class exists
187
+		if (! class_exists($module_class)) {
188
+			$msg = sprintf(
189
+				esc_html__('The requested %s module class does not exist.', 'event_espresso'),
190
+				$module_class
191
+			);
192
+			EE_Error::add_error($msg . '||' . $msg, __FILE__, __FUNCTION__, __LINE__);
193
+			return false;
194
+		}
195
+		// add to array of registered modules
196
+		$this->_payment_method_types[$module] = $payment_method_path . DS . $module_class . $module_ext;
197
+		return true;
198
+	}
199
+
200
+
201
+
202
+	/**
203
+	 * Checks if a payment method has been registered, and if so includes it
204
+	 *
205
+	 * @param string  $payment_method_name like 'PayPal_Pro', (ie class name without the prefix 'EEPM_')
206
+	 * @param boolean $force_recheck       whether to force re-checking for new payment method types
207
+	 * @return boolean
208
+	 */
209
+	public function payment_method_type_exists($payment_method_name, $force_recheck = false)
210
+	{
211
+		if (
212
+			$force_recheck
213
+			|| ! is_array($this->_payment_method_types)
214
+			|| ! isset($this->_payment_method_types[$payment_method_name])
215
+		) {
216
+			$this->maybe_register_payment_methods($force_recheck);
217
+		}
218
+		if (isset($this->_payment_method_types[$payment_method_name])) {
219
+			require_once($this->_payment_method_types[$payment_method_name]);
220
+			return true;
221
+		}
222
+		return false;
223
+	}
224
+
225
+
226
+
227
+	/**
228
+	 * Returns all the class names of the various payment method types
229
+	 *
230
+	 * @param boolean $with_prefixes TRUE: get payment method type class names; false just their 'names'
231
+	 *                               (what you'd find in wp_esp_payment_method.PMD_type)
232
+	 * @param boolean $force_recheck whether to force re-checking for new payment method types
233
+	 * @return array
234
+	 */
235
+	public function payment_method_type_names($with_prefixes = false, $force_recheck = false)
236
+	{
237
+		$this->maybe_register_payment_methods($force_recheck);
238
+		if ($with_prefixes) {
239
+			$classnames = array_keys($this->_payment_method_types);
240
+			$payment_methods = array();
241
+			foreach ($classnames as $classname) {
242
+				$payment_methods[] = $this->payment_method_class_from_type($classname);
243
+			}
244
+			return $payment_methods;
245
+		}
246
+		return array_keys($this->_payment_method_types);
247
+	}
248
+
249
+
250
+
251
+	/**
252
+	 * Gets an object of each payment method type, none of which are bound to a
253
+	 * payment method instance
254
+	 *
255
+	 * @param boolean $force_recheck whether to force re-checking for new payment method types
256
+	 * @return EE_PMT_Base[]
257
+	 */
258
+	public function payment_method_types($force_recheck = false)
259
+	{
260
+		if ($force_recheck || empty($this->payment_method_objects)) {
261
+			$this->maybe_register_payment_methods($force_recheck);
262
+			foreach ($this->payment_method_type_names(true) as $classname) {
263
+				if (! isset($this->payment_method_objects[$classname])) {
264
+					$this->payment_method_objects[$classname] = new $classname;
265
+				}
266
+			}
267
+		}
268
+		return $this->payment_method_objects;
269
+	}
270
+
271
+
272
+
273
+	/**
274
+	 * Changes the payment method's class name into the payment method type's name
275
+	 * (as used on the payment method's table's PMD_type field)
276
+	 *
277
+	 * @param string $classname
278
+	 * @return string
279
+	 */
280
+	public function payment_method_type_sans_class_prefix($classname)
281
+	{
282
+		return str_replace('EE_PMT_', '', $classname);
283
+	}
284
+
285
+
286
+
287
+	/**
288
+	 * Does the opposite of payment-method_type_sans_prefix
289
+	 *
290
+	 * @param string $type
291
+	 * @return string
292
+	 */
293
+	public function payment_method_class_from_type($type)
294
+	{
295
+		return 'EE_PMT_' . $type;
296
+	}
297
+
298
+
299
+
300
+	/**
301
+	 * Activates a payment method of the given type.
302
+	 *
303
+	 * @param string $payment_method_type the PMT_type; for EE_PMT_Invoice this would be 'Invoice'
304
+	 * @return EE_Payment_Method
305
+	 * @throws InvalidDataTypeException
306
+	 * @throws EE_Error
307
+	 */
308
+	public function activate_a_payment_method_of_type($payment_method_type)
309
+	{
310
+		$this->maybe_register_payment_methods();
311
+		$payment_method = EEM_Payment_Method::instance()->get_one_of_type($payment_method_type);
312
+		if (! $payment_method instanceof EE_Payment_Method) {
313
+			$pm_type_class = $this->payment_method_class_from_type($payment_method_type);
314
+			if (class_exists($pm_type_class)) {
315
+				/** @var $pm_type_obj EE_PMT_Base */
316
+				$pm_type_obj = new $pm_type_class;
317
+				$payment_method = EEM_Payment_Method::instance()->get_one_by_slug($pm_type_obj->system_name());
318
+				if (! $payment_method) {
319
+					$payment_method = $this->create_payment_method_of_type($pm_type_obj);
320
+				}
321
+				$payment_method->set_type($payment_method_type);
322
+				$this->initialize_payment_method($payment_method);
323
+			} else {
324
+				throw new EE_Error(
325
+					sprintf(
326
+						esc_html__(
327
+							'There is no payment method of type %1$s, so it could not be activated',
328
+							'event_espresso'
329
+						),
330
+						$pm_type_class
331
+					)
332
+				);
333
+			}
334
+		}
335
+		$payment_method->set_active();
336
+		$payment_method->save();
337
+		/** @type EE_Message_Resource_Manager $message_resource_manager */
338
+		//if this was the invoice message type, make sure users can view their invoices
339
+		if ($payment_method->type() === 'Invoice'
340
+			&& (
341
+				! EEH_MSG_Template::is_mt_active('invoice')
342
+			)
343
+		) {
344
+			$message_resource_manager = EE_Registry::instance()->load_lib('Message_Resource_Manager');
345
+			/** @type EE_Message_Resource_Manager $message_resource_manager */
346
+			$message_resource_manager->ensure_message_type_is_active('invoice', 'html');
347
+			new PersistentAdminNotice(
348
+				'invoice_pm_requirements_notice',
349
+				sprintf(
350
+					esc_html__(
351
+						'The Invoice payment method has been activated. It requires the %1$sinvoice message%2$s type to be active, so it was automatically activated for you.',
352
+						'event_espresso'
353
+					),
354
+					'<a href="' . admin_url('admin.php?page=espresso_messages&action=settings') . '">',
355
+					'</a>'
356
+				),
357
+				true
358
+			);
359
+		}
360
+		return $payment_method;
361
+	}
362
+
363
+
364
+
365
+	/**
366
+	 * Creates a payment method of the specified type. Does not save it.
367
+	 *
368
+	 * @global WP_User    $current_user
369
+	 * @param EE_PMT_Base $pm_type_obj
370
+	 * @return EE_Payment_Method
371
+	 * @throws EE_Error
372
+	 */
373
+	public function create_payment_method_of_type($pm_type_obj)
374
+	{
375
+		global $current_user;
376
+		$payment_method = EE_Payment_Method::new_instance(
377
+			array(
378
+				'PMD_type'       => $pm_type_obj->system_name(),
379
+				'PMD_name'       => $pm_type_obj->pretty_name(),
380
+				'PMD_admin_name' => $pm_type_obj->pretty_name(),
381
+				'PMD_slug'       => $pm_type_obj->system_name(),//automatically converted to slug
382
+				'PMD_wp_user'    => $current_user->ID,
383
+				'PMD_order'      => EEM_Payment_Method::instance()->count(
384
+						array(array('PMD_type' => array('!=', 'Admin_Only')))
385
+					) * 10,
386
+			)
387
+		);
388
+		return $payment_method;
389
+	}
390
+
391
+
392
+
393
+	/**
394
+	 * Sets the initial payment method properties (including extra meta)
395
+	 *
396
+	 * @param EE_Payment_Method $payment_method
397
+	 * @return EE_Payment_Method
398
+	 * @throws EE_Error
399
+	 */
400
+	public function initialize_payment_method($payment_method)
401
+	{
402
+		$pm_type_obj = $payment_method->type_obj();
403
+		$payment_method->set_description($pm_type_obj->default_description());
404
+		if (! $payment_method->button_url()) {
405
+			$payment_method->set_button_url($pm_type_obj->default_button_url());
406
+		}
407
+		//now add setup its default extra meta properties
408
+		$extra_metas = $pm_type_obj->settings_form()->extra_meta_inputs();
409
+		if (! empty($extra_metas)) {
410
+			//verify the payment method has an ID before adding extra meta
411
+			if (! $payment_method->ID()) {
412
+				$payment_method->save();
413
+			}
414
+			foreach ($extra_metas as $meta_name => $input) {
415
+				$payment_method->update_extra_meta($meta_name, $input->raw_value());
416
+			}
417
+		}
418
+		return $payment_method;
419
+	}
420
+
421
+
422
+
423
+	/**
424
+	 * Makes sure the payment method is related to the specified payment method
425
+	 *
426
+	 * @deprecated in 4.9.40 because the currency payment method table is being deprecated
427
+	 * @param EE_Payment_Method $payment_method
428
+	 * @return EE_Payment_Method
429
+	 * @throws EE_Error
430
+	 */
431
+	public function set_usable_currencies_on_payment_method($payment_method)
432
+	{
433
+		EE_Error::doing_it_wrong(
434
+			'EE_Payment_Method_Manager::set_usable_currencies_on_payment_method',
435
+			esc_html__(
436
+				'We no longer define what currencies are usable by payment methods. Its not used nor efficient.',
437
+				'event_espresso'
438
+			),
439
+			'4.9.40'
440
+		);
441
+		return $payment_method;
442
+	}
443
+
444
+
445
+
446
+	/**
447
+	 * Deactivates a payment method of the given payment method slug.
448
+	 *
449
+	 * @param string $payment_method_slug The slug for the payment method to deactivate.
450
+	 * @return int count of rows updated.
451
+	 * @throws EE_Error
452
+	 */
453
+	public function deactivate_payment_method($payment_method_slug)
454
+	{
455
+		EE_Log::instance()->log(
456
+			__FILE__,
457
+			__FUNCTION__,
458
+			sprintf(
459
+				esc_html__(
460
+					'Payment method with slug %1$s is being deactivated by site admin',
461
+					'event_espresso'
462
+				),
463
+				$payment_method_slug
464
+			),
465
+			'payment_method_change'
466
+		);
467
+		$count_updated = EEM_Payment_Method::instance()->update(
468
+			array('PMD_scope' => array()),
469
+			array(array('PMD_slug' => $payment_method_slug))
470
+		);
471
+		return $count_updated;
472
+	}
473
+
474
+
475
+
476
+	/**
477
+	 * initializes payment method access caps via EE_Capabilities::init_role_caps()
478
+	 * upon EE_Payment_Method_Manager construction
479
+	 *
480
+	 * @throws EE_Error
481
+	 * @throws DomainException
482
+	 */
483
+	protected function initializePaymentMethodCaps()
484
+	{
485
+		// don't do this twice
486
+		if ($this->payment_method_caps_initialized) {
487
+			return;
488
+		}
489
+		EE_Capabilities::instance()->addCaps(
490
+			$this->getPaymentMethodCaps()
491
+		);
492
+		$this->payment_method_caps_initialized = true;
493
+	}
494
+
495
+
496
+
497
+	/**
498
+	 * array  of dynamic payment method access caps.
499
+	 * at the time of writing, october 20 2014, these are the caps added:
500
+	 *  ee_payment_method_admin_only
501
+	 *  ee_payment_method_aim
502
+	 *  ee_payment_method_bank
503
+	 *  ee_payment_method_check
504
+	 *  ee_payment_method_invoice
505
+	 *  ee_payment_method_mijireh
506
+	 *  ee_payment_method_paypal_pro
507
+	 *  ee_payment_method_paypal_standard
508
+	 * Any other payment methods added to core or via addons will also get
509
+	 * their related capability automatically added too, so long as they are
510
+	 * registered properly using EE_Register_Payment_Method::register()
511
+	 *
512
+	 * @return array
513
+	 * @throws DomainException
514
+	 */
515
+	protected function getPaymentMethodCaps()
516
+	{
517
+		$caps = array();
518
+		foreach ($this->payment_method_type_names() as $payment_method_name) {
519
+			$caps = $this->addPaymentMethodCap($payment_method_name,$caps);
520
+		}
521
+		return $caps;
522
+	}
523
+
524
+
525
+
526
+	/**
527
+	 * @param string $payment_method_name
528
+	 * @param array  $payment_method_caps
529
+	 * @param string $role
530
+	 * @return array
531
+	 * @throws DomainException
532
+	 */
533
+	public function addPaymentMethodCap($payment_method_name, array $payment_method_caps, $role = 'administrator')
534
+	{
535
+		if (empty($payment_method_name)) {
536
+			throw new DomainException(
537
+				esc_html__(
538
+					'The name of a payment method must be specified to add capabilities.',
539
+					'event_espresso'
540
+				)
541
+			);
542
+		}
543
+		if (empty($role)) {
544
+			throw new DomainException(
545
+				sprintf(
546
+					esc_html__(
547
+						'No role was supplied while trying to add capabilities for the %1$s payment method.',
548
+						'event_espresso'
549
+					),
550
+					$payment_method_name
551
+				)
552
+			);
553
+		}
554
+		if(! isset($payment_method_caps[$role])) {
555
+			$payment_method_caps[$role] = array();
556
+		}
557
+		$payment_method_caps[$role][] = EE_Payment_Method_Manager::CAPABILITIES_PREFIX
558
+												  . strtolower($payment_method_name);
559
+		return $payment_method_caps;
560
+	}
561
+
562
+
563
+
564
+	/**
565
+	 * callback for FHEE__EE_Capabilities__init_role_caps__caps_map filter
566
+	 * to add dynamic payment method access caps when capabilities are reset
567
+	 * (or if that filter is called and PM caps are not already set)
568
+	 *
569
+	 * @param array $caps capabilities being filtered
570
+	 * @param bool  $reset
571
+	 * @return array
572
+	 * @throws DomainException
573
+	 */
574
+	public function addPaymentMethodCapsDuringReset(array $caps, $reset = false)
575
+	{
576
+		if ($reset || ! $this->payment_method_caps_initialized) {
577
+			$this->payment_method_caps_initialized = true;
578
+			$caps = array_merge_recursive($caps, $this->getPaymentMethodCaps());
579
+		}
580
+		return $caps;
581
+	}
582
+
583
+
584
+
585
+	/**
586
+	 * @deprecated 4.9.42
587
+	 * @param $caps
588
+	 * @return mixed
589
+	 */
590
+	public function add_payment_method_caps($caps)
591
+	{
592
+		return $caps;
593
+	}
594 594
 
595 595
 
596 596
 
Please login to merge, or discard this patch.
Spacing   +22 added lines, -22 removed lines patch added patch discarded remove patch
@@ -24,7 +24,7 @@  discard block
 block discarded – undo
24 24
     /**
25 25
      * prefix added to all payment method capabilities names
26 26
      */
27
-    const   CAPABILITIES_PREFIX= 'ee_payment_method_';
27
+    const   CAPABILITIES_PREFIX = 'ee_payment_method_';
28 28
 
29 29
     /**
30 30
      * @var EE_Payment_Method_Manager $_instance
@@ -80,7 +80,7 @@  discard block
 block discarded – undo
80 80
     public static function instance()
81 81
     {
82 82
         // check if class object is instantiated, and instantiated properly
83
-        if (! self::$_instance instanceof EE_Payment_Method_Manager) {
83
+        if ( ! self::$_instance instanceof EE_Payment_Method_Manager) {
84 84
             EE_Registry::instance()->load_lib('PMT_Base');
85 85
             self::$_instance = new self();
86 86
         }
@@ -113,7 +113,7 @@  discard block
 block discarded – undo
113 113
      */
114 114
     public function maybe_register_payment_methods($force_recheck = false)
115 115
     {
116
-        if (! $this->_payment_method_types || $force_recheck) {
116
+        if ( ! $this->_payment_method_types || $force_recheck) {
117 117
             $this->_register_payment_methods();
118 118
         }
119 119
     }
@@ -128,7 +128,7 @@  discard block
 block discarded – undo
128 128
     protected function _register_payment_methods()
129 129
     {
130 130
         // grab list of installed modules
131
-        $pm_to_register = glob(EE_PAYMENT_METHODS . '*', GLOB_ONLYDIR);
131
+        $pm_to_register = glob(EE_PAYMENT_METHODS.'*', GLOB_ONLYDIR);
132 132
         // filter list of modules to register
133 133
         $pm_to_register = apply_filters(
134 134
             'FHEE__EE_Payment_Method_Manager__register_payment_methods__payment_methods_to_register',
@@ -169,31 +169,31 @@  discard block
 block discarded – undo
169 169
         // create class name from module directory name
170 170
         $module = str_replace(array('_', ' '), array(' ', '_'), $module_dir);
171 171
         // add class prefix
172
-        $module_class = 'EE_PMT_' . $module;
172
+        $module_class = 'EE_PMT_'.$module;
173 173
         // does the module exist ?
174
-        if (! is_readable($payment_method_path . DS . $module_class . $module_ext)) {
174
+        if ( ! is_readable($payment_method_path.DS.$module_class.$module_ext)) {
175 175
             $msg = sprintf(
176 176
                 esc_html__(
177 177
                     'The requested %s payment method file could not be found or is not readable due to file permissions.',
178 178
                     'event_espresso'
179 179
                 ), $module
180 180
             );
181
-            EE_Error::add_error($msg . '||' . $msg, __FILE__, __FUNCTION__, __LINE__);
181
+            EE_Error::add_error($msg.'||'.$msg, __FILE__, __FUNCTION__, __LINE__);
182 182
             return false;
183 183
         }
184 184
         // load the module class file
185
-        require_once($payment_method_path . DS . $module_class . $module_ext);
185
+        require_once($payment_method_path.DS.$module_class.$module_ext);
186 186
         // verify that class exists
187
-        if (! class_exists($module_class)) {
187
+        if ( ! class_exists($module_class)) {
188 188
             $msg = sprintf(
189 189
                 esc_html__('The requested %s module class does not exist.', 'event_espresso'),
190 190
                 $module_class
191 191
             );
192
-            EE_Error::add_error($msg . '||' . $msg, __FILE__, __FUNCTION__, __LINE__);
192
+            EE_Error::add_error($msg.'||'.$msg, __FILE__, __FUNCTION__, __LINE__);
193 193
             return false;
194 194
         }
195 195
         // add to array of registered modules
196
-        $this->_payment_method_types[$module] = $payment_method_path . DS . $module_class . $module_ext;
196
+        $this->_payment_method_types[$module] = $payment_method_path.DS.$module_class.$module_ext;
197 197
         return true;
198 198
     }
199 199
 
@@ -260,7 +260,7 @@  discard block
 block discarded – undo
260 260
         if ($force_recheck || empty($this->payment_method_objects)) {
261 261
             $this->maybe_register_payment_methods($force_recheck);
262 262
             foreach ($this->payment_method_type_names(true) as $classname) {
263
-                if (! isset($this->payment_method_objects[$classname])) {
263
+                if ( ! isset($this->payment_method_objects[$classname])) {
264 264
                     $this->payment_method_objects[$classname] = new $classname;
265 265
                 }
266 266
             }
@@ -292,7 +292,7 @@  discard block
 block discarded – undo
292 292
      */
293 293
     public function payment_method_class_from_type($type)
294 294
     {
295
-        return 'EE_PMT_' . $type;
295
+        return 'EE_PMT_'.$type;
296 296
     }
297 297
 
298 298
 
@@ -309,13 +309,13 @@  discard block
 block discarded – undo
309 309
     {
310 310
         $this->maybe_register_payment_methods();
311 311
         $payment_method = EEM_Payment_Method::instance()->get_one_of_type($payment_method_type);
312
-        if (! $payment_method instanceof EE_Payment_Method) {
312
+        if ( ! $payment_method instanceof EE_Payment_Method) {
313 313
             $pm_type_class = $this->payment_method_class_from_type($payment_method_type);
314 314
             if (class_exists($pm_type_class)) {
315 315
                 /** @var $pm_type_obj EE_PMT_Base */
316 316
                 $pm_type_obj = new $pm_type_class;
317 317
                 $payment_method = EEM_Payment_Method::instance()->get_one_by_slug($pm_type_obj->system_name());
318
-                if (! $payment_method) {
318
+                if ( ! $payment_method) {
319 319
                     $payment_method = $this->create_payment_method_of_type($pm_type_obj);
320 320
                 }
321 321
                 $payment_method->set_type($payment_method_type);
@@ -351,7 +351,7 @@  discard block
 block discarded – undo
351 351
                         'The Invoice payment method has been activated. It requires the %1$sinvoice message%2$s type to be active, so it was automatically activated for you.',
352 352
                         'event_espresso'
353 353
                     ),
354
-                    '<a href="' . admin_url('admin.php?page=espresso_messages&action=settings') . '">',
354
+                    '<a href="'.admin_url('admin.php?page=espresso_messages&action=settings').'">',
355 355
                     '</a>'
356 356
                 ),
357 357
                 true
@@ -378,7 +378,7 @@  discard block
 block discarded – undo
378 378
                 'PMD_type'       => $pm_type_obj->system_name(),
379 379
                 'PMD_name'       => $pm_type_obj->pretty_name(),
380 380
                 'PMD_admin_name' => $pm_type_obj->pretty_name(),
381
-                'PMD_slug'       => $pm_type_obj->system_name(),//automatically converted to slug
381
+                'PMD_slug'       => $pm_type_obj->system_name(), //automatically converted to slug
382 382
                 'PMD_wp_user'    => $current_user->ID,
383 383
                 'PMD_order'      => EEM_Payment_Method::instance()->count(
384 384
                         array(array('PMD_type' => array('!=', 'Admin_Only')))
@@ -401,14 +401,14 @@  discard block
 block discarded – undo
401 401
     {
402 402
         $pm_type_obj = $payment_method->type_obj();
403 403
         $payment_method->set_description($pm_type_obj->default_description());
404
-        if (! $payment_method->button_url()) {
404
+        if ( ! $payment_method->button_url()) {
405 405
             $payment_method->set_button_url($pm_type_obj->default_button_url());
406 406
         }
407 407
         //now add setup its default extra meta properties
408 408
         $extra_metas = $pm_type_obj->settings_form()->extra_meta_inputs();
409
-        if (! empty($extra_metas)) {
409
+        if ( ! empty($extra_metas)) {
410 410
             //verify the payment method has an ID before adding extra meta
411
-            if (! $payment_method->ID()) {
411
+            if ( ! $payment_method->ID()) {
412 412
                 $payment_method->save();
413 413
             }
414 414
             foreach ($extra_metas as $meta_name => $input) {
@@ -516,7 +516,7 @@  discard block
 block discarded – undo
516 516
     {
517 517
         $caps = array();
518 518
         foreach ($this->payment_method_type_names() as $payment_method_name) {
519
-            $caps = $this->addPaymentMethodCap($payment_method_name,$caps);
519
+            $caps = $this->addPaymentMethodCap($payment_method_name, $caps);
520 520
         }
521 521
         return $caps;
522 522
     }
@@ -551,7 +551,7 @@  discard block
 block discarded – undo
551 551
                 )
552 552
             );
553 553
         }
554
-        if(! isset($payment_method_caps[$role])) {
554
+        if ( ! isset($payment_method_caps[$role])) {
555 555
             $payment_method_caps[$role] = array();
556 556
         }
557 557
         $payment_method_caps[$role][] = EE_Payment_Method_Manager::CAPABILITIES_PREFIX
Please login to merge, or discard this patch.