PluginProbe
MultiSafepay plugin for WooCommerce / trunk
MultiSafepay plugin for WooCommerce vtrunk
6.11.1 6.12.0 6.13.0 6.2.0 6.2.1 6.3.0 6.3.1 6.4.0 6.4.1 6.4.2 6.4.3 6.5.0 6.5.1 6.6.0 6.6.1 6.6.2 6.7.0 6.7.1 6.7.2 6.7.3 6.8.0 6.8.1 6.8.2 6.8.3 6.9.0 All 84 releases
multisafepay / src / PaymentMethods / Filters / GatewayByUserRole.php

GatewayByUserRole.php in MultiSafepay plugin for WooCommerce trunk, at src/PaymentMethods/Filters/GatewayByUserRole.php

47 lines 1.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php declare(strict_types=1);
2
3 namespace MultiSafepay\WooCommerce\PaymentMethods\Filters;
4
5 use MultiSafepay\WooCommerce\Utils\Logger;
6
7 /**
8 * Filter payment gateways by user role.
9 */
10 class GatewayByUserRole {
11
12 /**
13 * @var Logger
14 */
15 private $logger;
16
17 /**
18 * @param Logger|null $logger
19 */
20 public function __construct( ?Logger $logger = null ) {
21 $this->logger = $logger ?? new Logger();
22 }
23
24 /**
25 * Filter the payment methods by user role defined in payment gateway settings.
26 *
27 * @param array $payment_gateways
28 * @return array
29 */
30 public function filter_gateway_per_user_roles( array $payment_gateways ): array {
31 $user_roles = is_user_logged_in() ? wp_get_current_user()->roles : array();
32 $current_user_roles_for_log = ! empty( $user_roles ) ? implode( ', ', $user_roles ) : 'guest';
33
34 foreach ( $payment_gateways as $gateway_id => $gateway ) {
35 $gateway_settings = is_object( $gateway ) && isset( $gateway->settings ) && is_array( $gateway->settings ) ? $gateway->settings : array();
36 $allowed_user_roles = isset( $gateway_settings['user_roles'] ) ? wp_parse_list( $gateway_settings['user_roles'] ) : array();
37
38 if ( ! empty( $allowed_user_roles ) && ! array_intersect( $user_roles, $allowed_user_roles ) ) {
39 $this->logger->log_info( 'Payment method ' . $gateway_id . ' is being unset because the current user roles ' . $current_user_roles_for_log . ' are not allowed. Allowed roles: ' . implode( ', ', $allowed_user_roles ) );
40 unset( $payment_gateways[ $gateway_id ] );
41 }
42 }
43
44 return $payment_gateways;
45 }
46 }
47