| @@ -2,108 +2,120 @@ | ||
| 2 | 2 | |
| 3 | 3 | namespace Payplug\PayplugWoocommerce\Admin; |
| 4 | 4 | |
| 5 | 5 | // Exit if accessed directly |
| 6 | -if ( ! defined( 'ABSPATH' ) ) { | |
| 7 | - exit; | |
| 6 | +if (!defined('ABSPATH')) { | |
| 7 | + exit; | |
| 8 | 8 | } |
| 9 | 9 | |
| 10 | +use Automattic\WooCommerce\Internal\DataStores\Orders\CustomOrdersTableController; | |
| 10 | 11 | use Payplug\PayplugWoocommerce\PayplugWoocommerceHelper; |
| 11 | 12 | use WP_Post; |
| 12 | 13 | |
| 13 | 14 | /** |
| 14 | 15 | * PayPlug metadata metabox. |
| 15 | - * | |
| 16 | - * @package Payplug\PayplugWoocommerce\Admin | |
| 17 | 16 | */ |
| 18 | -class Metabox { | |
| 17 | +class Metabox | |
| 18 | +{ | |
| 19 | + /** | |
| 20 | + * Metabox constructor. | |
| 21 | + */ | |
| 22 | + public function __construct() | |
| 23 | + { | |
| 24 | + add_action('add_meta_boxes', [$this, 'register_payplug_metabox'], 100); | |
| 25 | + } | |
| 19 | 26 | |
| 20 | - /** | |
| 21 | - * Metabox constructor. | |
| 22 | - */ | |
| 23 | - public function __construct() { | |
| 24 | - add_action( 'add_meta_boxes', [ $this, 'register_payplug_metabox' ], 100 ); | |
| 25 | - } | |
| 27 | + /** | |
| 28 | + * Register a custom metabox to display metadata for the current order. | |
| 29 | + * | |
| 30 | + * This metabox is only register if the current order has been paid via PayPlug. | |
| 31 | + */ | |
| 32 | + public function register_payplug_metabox(): void | |
| 33 | + { | |
| 34 | + global $post; | |
| 26 | 35 | |
| 27 | - /** | |
| 28 | - * Register a custom metabox to display metadata for the current order. | |
| 29 | - * | |
| 30 | - * This metabox is only register if the current order has been paid via PayPlug. | |
| 31 | - */ | |
| 32 | - public function register_payplug_metabox() { | |
| 33 | - global $post; | |
| 34 | - $screen = get_current_screen(); | |
| 35 | - if ( is_null( $screen ) || 'shop_order' !== $screen->post_type ) { | |
| 36 | - return; | |
| 37 | - } | |
| 36 | + $screen = class_exists('\Automattic\WooCommerce\Internal\DataStores\Orders\CustomOrdersTableController') && wc_get_container()->get(CustomOrdersTableController::class)->custom_orders_table_usage_is_enabled() | |
| 37 | + ? function_exists('wc_get_page_screen_id') ? wc_get_page_screen_id('shop-order') : 'shop_order' | |
| 38 | + : 'shop_order'; | |
| 38 | 39 | |
| 39 | - $order = wc_get_order( $post ); | |
| 40 | - if ( false === $order ) { | |
| 41 | - return; | |
| 42 | - } | |
| 40 | + add_meta_box( | |
| 41 | + 'payplug-transaction-details', | |
| 42 | + __('PayPlug payment details', 'payplug'), | |
| 43 | + [$this, 'render'], | |
| 44 | + $screen, | |
| 45 | + 'side' | |
| 46 | + ); | |
| 47 | + } | |
| 43 | 48 | |
| 44 | - $payment_method = PayplugWoocommerceHelper::is_pre_30() ? $order->payment_method : $order->get_payment_method(); | |
| 45 | - if ( 'payplug' !== $payment_method ) { | |
| 46 | - return; | |
| 47 | - } | |
| 49 | + /** | |
| 50 | + * Render the metabox content. | |
| 51 | + * | |
| 52 | + * @param WP_Post $post | |
| 53 | + */ | |
| 54 | + public function render($post): void | |
| 55 | + { | |
| 56 | + $order = ($post instanceof WP_Post) ? wc_get_order($post->ID) : $post; | |
| 48 | 57 | |
| 49 | - add_meta_box( | |
| 50 | - 'payplug-transaction-details', | |
| 51 | - __( 'PayPlug payment details', 'payplug' ), | |
| 52 | - [ $this, 'render' ], | |
| 53 | - 'shop_order', | |
| 54 | - 'side' | |
| 55 | - ); | |
| 56 | - } | |
| 58 | + if (false === $order) { | |
| 59 | + return; | |
| 60 | + } | |
| 57 | 61 | |
| 58 | - /** | |
| 59 | - * Render the metabox content. | |
| 60 | - * | |
| 61 | - * @param WP_Post $post | |
| 62 | - */ | |
| 63 | - public function render( $post ) { | |
| 64 | - $order = wc_get_order( $post ); | |
| 65 | - if ( false === $order ) { | |
| 66 | - return; | |
| 67 | - } | |
| 62 | + if (!in_array($order->get_payment_method(), ['payplug', 'oney_x3_with_fees', 'oney_x4_with_fees', 'oney_x3_without_fees', 'oney_x4_without_fees', 'bancontact', 'apple_pay', 'american_express', 'satispay', 'sofort', 'ideal', 'mybank', 'wero', 'bizum', 'scalapay'])) { | |
| 63 | + return; | |
| 64 | + } | |
| 68 | 65 | |
| 69 | - $metadata = PayplugWoocommerceHelper::get_transaction_metadata( $order ); | |
| 70 | - $date_format = get_option( 'date_format', 'j F Y' ); | |
| 71 | - $time_format = get_option( 'time_format', 'G \h i \m\i\n' ); | |
| 72 | - if ( empty( $metadata ) ) : ?> | |
| 73 | - <p><?php _e( 'No metadata available for the current order.', 'payplug' ); ?></p> | |
| 66 | + $metadata = PayplugWoocommerceHelper::get_transaction_metadata($order); | |
| 67 | + $date_format = get_option('date_format', 'j F Y'); | |
| 68 | + $time_format = get_option('time_format', 'G \h i \m\i\n'); | |
| 69 | + if (empty($metadata)) : ?> | |
| 70 | + <p><?php _e('No metadata available for the current order.', 'payplug'); ?></p> | |
| 74 | 71 | <?php else : ?> |
| 75 | 72 | <ul> |
| 76 | - <li><span><?php _e( 'PayPlug Payment ID', 'payplug' ); ?> | |
| 77 | - :</span> <?php echo esc_html( $metadata['transaction_id'] ); ?></li> | |
| 78 | - <li><span><?php _e( 'Status', 'payplug' ); ?> | |
| 73 | + <li><span><?php _e('PayPlug Payment ID', 'payplug'); ?> | |
| 74 | + :</span> <?php echo esc_html($metadata['transaction_id']); ?></li> | |
| 75 | + <li><span><?php _e('Status', 'payplug'); ?> | |
| 79 | 76 | :</span> |
| 80 | - <?php if ( isset( $metadata['refunded'] ) && true === $metadata['refunded'] ) : _e( 'Refunded', 'payplug' ); ?> | |
| 81 | - <?php elseif ( isset( $metadata['refunded'] ) && false === $metadata['refunded'] && (int) $metadata['amount_refunded'] > 0 ) : _e( 'Partially refunded', 'payplug' ); ?> | |
| 82 | - <?php elseif ( isset( $metadata['paid'] ) && true === $metadata['paid'] ) : _e( 'Paid', 'payplug' ); ?> | |
| 83 | - <?php else : _e( 'Not Paid', 'payplug' ); ?> | |
| 77 | + <?php if (isset($metadata['refunded']) && true === $metadata['refunded']) : _e('Refunded', 'payplug'); ?> | |
| 78 | + <?php elseif (isset($metadata['refunded']) && false === $metadata['refunded'] && (int) $metadata['amount_refunded'] > 0) : _e('Partially refunded', 'payplug'); ?> | |
| 79 | + <?php elseif (isset($metadata['paid']) && true === $metadata['paid']) : _e('Paid', 'payplug'); ?> | |
| 80 | + <?php else : _e('Not Paid', 'payplug'); ?> | |
| 84 | 81 | <?php endif; ?> |
| 85 | 82 | </li> |
| 86 | - <li><span><?php _e( 'Amount', 'payplug' ); ?> | |
| 87 | - :</span> <?php echo wc_price( (int) $metadata['amount'] / 100 ); ?></li> | |
| 88 | - <li><span><?php _e( 'Paid at', 'payplug' ); ?> | |
| 89 | - :</span> <?php echo ! empty( $metadata['paid_at'] ) ? esc_html( date_i18n( sprintf( '%s %s', $date_format, $time_format ), $metadata['paid_at'] ) ) : ''; ?> | |
| 83 | + <!-- PPRO methods don't have card brand info--> | |
| 84 | + <?php if (empty($metadata['card_brand']) && $order->get_payment_method() != 'payplug') { ?> | |
| 85 | + <li><span><?php _e('payment_method', 'payplug'); ?>:</span> <?php echo str_replace('_', ' ', ucfirst($order->get_payment_method())); ?></li> | |
| 86 | + <?php } ?> | |
| 87 | + <li><span><?php _e('Amount', 'payplug'); ?> | |
| 88 | + :</span> <?php echo wc_price((int) $metadata['amount'] / 100); ?></li> | |
| 89 | + <li><span><?php _e('Paid at', 'payplug'); ?> | |
| 90 | + :</span> <?php echo !empty($metadata['paid_at']) ? esc_html(date_i18n(sprintf('%s %s', $date_format, $time_format), $metadata['paid_at'])) : ''; ?> | |
| 90 | 91 | </li> |
| 91 | - <li><span><?php _e( 'Credit card', 'payplug' ); ?> | |
| 92 | - :</span> <?php echo ! empty( $metadata['card_brand'] ) ? esc_html( sprintf( '%s (%s)', $metadata['card_brand'], $metadata['card_country'] ) ) : ''; ?> | |
| 92 | + | |
| 93 | + <?php if (!empty($metadata['card_brand'])) { ?> | |
| 94 | + <li><span><?php _e('Credit card', 'payplug'); ?> | |
| 95 | + :</span> <?php echo !empty($metadata['card_brand']) ? esc_html(sprintf('%s (%s)', $metadata['card_brand'], $metadata['card_country'])) : ''; ?> | |
| 96 | + </li> | |
| 97 | + <?php } ?> | |
| 98 | + | |
| 99 | + <?php if (!empty($metadata['card_last4'])) { ?> | |
| 100 | + <li><span><?php _e('Card mask', 'payplug'); ?> | |
| 101 | + :</span> <?php echo !empty($metadata['card_last4']) ? esc_html(sprintf('**** **** **** %s', $metadata['card_last4'])) : ''; ?> | |
| 102 | + </li> | |
| 103 | + <?php } ?> | |
| 104 | + | |
| 105 | + <li><span><?php _e('3 D Secure', 'payplug'); ?> | |
| 106 | + :</span> <?php echo isset($metadata['3ds']) ? true === $metadata['3ds'] ? __('Yes', 'payplug') : __('No', 'payplug') : ''; ?> | |
| 93 | 107 | </li> |
| 94 | - <li><span><?php _e( 'Card mask', 'payplug' ); ?> | |
| 95 | - :</span> <?php echo ! empty( $metadata['card_last4'] ) ? esc_html( sprintf( '**** **** **** %s', $metadata['card_last4'] ) ) : ''; ?> | |
| 108 | + | |
| 109 | + <?php if (!empty($metadata['card_exp_month']) && !empty($metadata['card_exp_year'])) { ?> | |
| 110 | + <li><span><?php _e('Expiration date', 'payplug'); ?> | |
| 111 | + :</span> <?php echo (!empty($metadata['card_exp_month']) && !empty($metadata['card_exp_year'])) ? esc_html(sprintf('%s/%s', zeroise($metadata['card_exp_month'], 2), zeroise($metadata['card_exp_year'], 2))) : ''; ?> | |
| 112 | + </li> | |
| 113 | + <?php } ?> | |
| 114 | + | |
| 115 | + <li><span><?php _e('Mode', 'payplug'); ?> | |
| 116 | + :</span> <?php echo true === $metadata['live'] ? _e('Live', 'payplug') : _e('Test', 'payplug'); ?> | |
| 96 | 117 | </li> |
| 97 | - <li><span><?php _e( '3 D Secure', 'payplug' ); ?> | |
| 98 | - :</span> <?php echo isset( $metadata['3ds'] ) ? true === $metadata['3ds'] ? __( 'Yes', 'payplug' ) : __( 'No', 'payplug' ) : ''; ?> | |
| 99 | - </li> | |
| 100 | - <li><span><?php _e( 'Expiration date', 'payplug' ); ?> | |
| 101 | - :</span> <?php echo ( ! empty( $metadata['card_exp_month'] ) && ! empty( $metadata['card_exp_year'] ) ) ? esc_html( sprintf( '%s/%s', zeroise( $metadata['card_exp_month'], 2 ), zeroise( $metadata['card_exp_year'], 2 ) ) ) : ''; ?> | |
| 102 | - </li> | |
| 103 | - <li><span><?php _e( 'Mode', 'payplug' ); ?> | |
| 104 | - :</span> <?php echo true === $metadata['live'] ? _e( 'Live', 'payplug' ) : _e( 'Test', 'payplug' ); ?> | |
| 105 | - </li> | |
| 106 | 118 | </ul> |
| 107 | 119 | <?php endif; |
| 108 | - } | |
| 109 | -} | |
| 120 | + } | |
| 121 | +} | |