Below is a differential between the unpatched vulnerable code and the patched update, for reference.
--- a/platnosci-online-blue-media/blocks/assets/js/frontend/blocks.asset.php
+++ b/platnosci-online-blue-media/blocks/assets/js/frontend/blocks.asset.php
@@ -1 +1 @@
-<?php return array('dependencies' => array('react', 'wc-blocks-registry', 'wc-settings', 'wp-html-entities'), 'version' => '03283220863847cfcb4c');
+<?php return array('dependencies' => array('react', 'wc-blocks-registry', 'wc-settings', 'wp-html-entities'), 'version' => '9e7a6ec1bb535614a264');
--- a/platnosci-online-blue-media/bluemedia-woocommerce.php
+++ b/platnosci-online-blue-media/bluemedia-woocommerce.php
@@ -6,13 +6,15 @@
* Plugin URI: https://wordpress.org/plugins/platnosci-online-blue-media
* Description: Autopay for Woocommerce
* Tags: woocommerce, bluemedia, Autopay
- * Version: 5.0.0
+ * Version: 5.0.1
* Tested up to: 7.0
* Requires PHP: 7.4
* Author: Autopay S.A.
- * Author URI: autopay.pl
- * Text Domain: bm-woocommerce
- * Domain Path: /lang/
+ * Author URI: https://autopay.pl
+ * License: GPL-2.0-or-later
+ * License URI: https://www.gnu.org/licenses/gpl-2.0.html
+ * Text Domain: platnosci-online-blue-media
+ * Domain Path: /languages/
*
* Copyright 2026 Autopay S.A.
*
@@ -45,16 +47,35 @@
require_once __DIR__ . '/vendor/autoload.php';
require_once 'dependencies.php';
+ /*
+ * WordPress 6.7+ JIT translation loading always checks WP_LANG_DIR/plugins first.
+ * If the system language pack there is outdated (missing strings added after its
+ * release), those strings fall back to English even though the plugin bundles a
+ * complete .mo. Redirect mofile loading to the bundled file so it takes priority.
+ */
+ add_filter(
+ 'load_textdomain_mofile',
+ static function ( string $mofile, string $domain ): string {
+ if ( 'platnosci-online-blue-media' !== $domain ) {
+ return $mofile;
+ }
+ $bundled_file = __DIR__ . '/languages/' . basename( $mofile );
+ return file_exists( $bundled_file ) ? $bundled_file : $mofile;
+ },
+ 10,
+ 2
+ );
+
function blue_media(): IlabsBM_WoocommercePlugin {
return new IlabsBM_WoocommercePlugin();
}
- $config = [
+ $autopay_config = [
'__FILE__' => __FILE__,
'slug' => 'bm_woocommerce',
- 'lang_dir' => 'lang',
- 'text_domain' => 'bm-woocommerce',
+ 'lang_dir' => 'languages',
+ 'text_domain' => 'platnosci-online-blue-media',
];
- blue_media()->execute( $config );
+ blue_media()->execute( $autopay_config );
}
--- a/platnosci-online-blue-media/compatibility.php
+++ b/platnosci-online-blue-media/compatibility.php
@@ -1,5 +1,7 @@
<?php
+defined( 'ABSPATH' ) || exit;
+
function blue_media_system_check(): bool {
if ( ! defined( 'BLUE_MEDIA_PRODUCTION_DIR_NAME' ) ) {
@@ -9,15 +11,16 @@
$basename = basename( __DIR__ );
if ( $basename !== BLUE_MEDIA_PRODUCTION_DIR_NAME ) {
- add_action( 'plugins_loaded', function () use ( $basename ) {
- load_plugin_textdomain( 'bm-woocommerce', false, $basename . "/lang" );
- } );
-
add_action( 'admin_notices', function () {
echo "<div class='notice notice-error error'><p><strong style='color: red;'>";
- printf( __( "It looks like the developer version of the Autopay plug-in is installed instead of the production release. Remove this plugin and install it from this URL: %s",
- "bm-woocommerce" ),
- '<a target="_blank" href="https://wordpress.org/plugins/platnosci-online-blue-media/">https://wordpress.org/plugins/platnosci-online-blue-media/</a>' );
+ echo wp_kses(
+ sprintf(
+ // translators: %s is a URL link to the plugin's WordPress.org page.
+ __( "It looks like the developer version of the Autopay plug-in is installed instead of the production release. Remove this plugin and install it from this URL: %s", 'platnosci-online-blue-media' ),
+ '<a target="_blank" href="https://wordpress.org/plugins/platnosci-online-blue-media/">https://wordpress.org/plugins/platnosci-online-blue-media/</a>'
+ ),
+ [ 'a' => [ 'href' => [], 'target' => [] ] ]
+ );
echo "</strong></p></div>";
} );
@@ -25,14 +28,10 @@
}
if ( PHP_VERSION_ID < 70200 ) {
- add_action( 'plugins_loaded', function () use ( $basename ) {
- load_plugin_textdomain( 'bm-woocommerce', false, $basename . "/lang" );
- } );
-
add_action( 'admin_notices', function () {
echo "<div class='notice notice-error error'><p><strong style='color: red;'>Autopay: ";
- _e( "PHP version is older than 7.2 so this plugin will not work. Please contact your host and ask them to upgrade.",
- "bm-woocommerce" );
+ esc_html_e( "PHP version is older than 7.2 so this plugin will not work. Please contact your host and ask them to upgrade.",
+ "platnosci-online-blue-media" );
echo "</strong></p></div>";
} );
--- a/platnosci-online-blue-media/src/Assets/AssetManager.php
+++ b/platnosci-online-blue-media/src/Assets/AssetManager.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceAssets;
+defined( 'ABSPATH' ) || exit;
+
/**
* Manages loading of frontend and admin assets for the payment gateway.
*
--- a/platnosci-online-blue-media/src/Controller/Abstract_Controller.php
+++ b/platnosci-online-blue-media/src/Controller/Abstract_Controller.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceController;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceControllerModelPayment_Status_Response_Value_Object;
@@ -25,7 +27,7 @@
blue_media()->get_woocommerce_logger()->log_error(
sprintf( '[Abstract_Controller] [send_response] [response: %s]',
- print_r( $response, true )
+ wp_json_encode( $response->to_array() )
) );
$this->output_response( $response );
--- a/platnosci-online-blue-media/src/Controller/Controller_Interface.php
+++ b/platnosci-online-blue-media/src/Controller/Controller_Interface.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceController;
+defined( 'ABSPATH' ) || exit;
+
interface Controller_Interface {
public function handle();
--- a/platnosci-online-blue-media/src/Controller/Model/Ajax_Response_Value_Object.php
+++ b/platnosci-online-blue-media/src/Controller/Model/Ajax_Response_Value_Object.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceControllerModel;
+defined( 'ABSPATH' ) || exit;
+
class Ajax_Response_Value_Object {
const STATUS_SUCCESS = 'success';
--- a/platnosci-online-blue-media/src/Controller/Model/Payment_Status_Response_Value_Object.php
+++ b/platnosci-online-blue-media/src/Controller/Model/Payment_Status_Response_Value_Object.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceControllerModel;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceGatewayBlue_Media_Gateway;
use IlabsBM_WoocommerceUtilitiesTest_ConnectionResponse_Interface;
@@ -106,19 +108,19 @@
switch ( $itn_status_id ) {
case Blue_Media_Gateway::ITN_SUCCESS_STATUS_ID:
return __( 'Payment successful.',
- 'bm-woocommerce' );
+ 'platnosci-online-blue-media' );
case Blue_Media_Gateway::ITN_PENDING_STATUS_ID:
return __( 'Check your device.',
- 'bm-woocommerce' );
+ 'platnosci-online-blue-media' );
case Blue_Media_Gateway::ITN_FAILURE_STATUS_ID:
return __( 'Payment failed.',
- 'bm-woocommerce' );
+ 'platnosci-online-blue-media' );
default:
return __( 'Waiting for transaction confirmation.',
- 'bm-woocommerce' );
+ 'platnosci-online-blue-media' );
}
}
}
--- a/platnosci-online-blue-media/src/Controller/Payment_Status_Controller.php
+++ b/platnosci-online-blue-media/src/Controller/Payment_Status_Controller.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceController;
+defined( 'ABSPATH' ) || exit;
+
use Exception;
use IlabsBM_WoocommerceControllerModelPayment_Status_Response_Value_Object;
use IlabsBM_WoocommerceGatewayBlue_Media_Gateway;
@@ -32,7 +34,7 @@
if ( ! wp_verify_nonce( $nonce, self::NONCE_ACTION ) ) {
blue_media()->get_woocommerce_logger()->log_error(
sprintf( '[Payment_Status_Controller] [wp_verify_nonce failed] [order_id: %s]',
- print_r( $order_id, true )
+ wp_json_encode( $order_id )
) );
$this->send_response(
@@ -47,8 +49,8 @@
if ( '' !== $transaction_start_error ) {
blue_media()->get_woocommerce_logger()->log_error(
sprintf( '[Payment_Status_Controller] [transaction_start_error: %s] [order_id: %s]',
- print_r( $transaction_start_error, true ),
- print_r( $order_id, true )
+ wp_json_encode( $transaction_start_error ),
+ wp_json_encode( $order_id )
) );
$this->send_response(
@@ -106,6 +108,6 @@
}
public static function get_generic_err_msg(): string {
- return __( 'Payment failed', 'bm-woocommerce' );
+ return __( 'Payment failed', 'platnosci-online-blue-media' );
}
}
--- a/platnosci-online-blue-media/src/Controller/Wp_Admin/Transaction_Testing_Controller.php
+++ b/platnosci-online-blue-media/src/Controller/Wp_Admin/Transaction_Testing_Controller.php
@@ -1,189 +0,0 @@
-<?php
-
-namespace IlabsBM_WoocommerceControllerWp_Admin;
-
-use Exception;
-use IlabsBM_WoocommerceControllerAbstract_Controller;
-use IlabsBM_WoocommerceControllerController_Interface;
-use IlabsBM_WoocommerceControllerModelAjax_Response_Value_Object;
-use IlabsBM_WoocommerceControllerModelPayment_Status_Response_Value_Object;
-use IlabsBM_WoocommerceDomainServiceTestingOrder_Creator;
-use IlabsBM_WoocommerceDomainServiceTestingTransaction_Test;
-use WC_Order;
-
-class Transaction_Testing_Controller extends Abstract_Controller implements Controller_Interface {
-
- const INITIALIZE_ACTION_NAME = 'transaction_test';
-
- const VERIFY_ITN_ACTION_NAME = 'verify_itn';
-
- const NONCE_ACTION = 'bluemedia_payment';
-
- /**
- * @throws Exception
- */
- public function execute_request_initialize() {
- try {
-
- if ( ! isset( $_POST['nonce'] ) ) {
- throw new Exception( __( 'Nonce field not exists',
- 'bm-woocommerce' ) );
- }
-
- $nonce = sanitize_text_field( wp_unslash( $_POST['nonce'] ) );
-
- if ( ! wp_verify_nonce( $nonce, self::NONCE_ACTION ) ) {
- throw new Exception( __( 'Verification nonce failed',
- 'bm-woocommerce' ) );
- }
-
- $order_creator = new Order_Creator();
- $order = $order_creator->create();
-
- $transaction_test_service = new Transaction_Test();
- $transaction_test_service->initialize( $order );
-
-
- if ( $order instanceof WC_Order ) {
- $status = Ajax_Response_Value_Object::STATUS_SUCCESS;
- $message = $order->get_id();
-
- } else {
- $status = Ajax_Response_Value_Object::STATUS_ERROR;
- $message = __( 'Order create failed', 'bm-woocommerce' );
- }
-
- if ( isset( $order ) && $order instanceof WC_Order && isset( $order_creator ) ) {
- //$order_creator->remove( $order->get_id() );
- }
-
-
- $this->send_response(
- $status,
- $message,
- '',
- null
- );
- } catch ( Exception $exception ) {
- blue_media()->get_woocommerce_logger()->log_debug(
- sprintf( '[Connection_Testing_Controller] [execute_request] [Message: %s] [POST: %s] ',
- $exception->getMessage(),
- json_encode( [
- 'autopay_action' => isset( $_POST['autopay_action'] ) ? sanitize_text_field( wp_unslash( $_POST['autopay_action'] ) ) : 'not_set',
- 'test_id' => isset( $_POST['test_id'] ) ? sanitize_text_field( wp_unslash( (string) $_POST['test_id'] ) ) : 'not_set',
- ] )
- ) );
-
- if ( isset( $order ) && $order instanceof WC_Order && isset( $order_creator ) ) {
- $order_creator->remove( $order->get_id() );
- }
-
- $this->send_response(
- Ajax_Response_Value_Object::STATUS_ERROR,
- $exception->getMessage(),
- '',
- null
- );
-
-
- }
-
- }
-
- public function execute_request_verify_itn() {
- try {
-
- if ( ! isset( $_POST['nonce'] ) ) {
- throw new Exception( __( 'Nonce field not exists',
- 'bm-woocommerce' ) );
- }
-
- if ( ! isset( $_POST['order_id'] ) ) {
- throw new Exception( __( 'order_id field not exists',
- 'bm-woocommerce' ) );
- }
-
- $nonce = sanitize_text_field( wp_unslash( $_POST['nonce'] ) );
- $order_id = (int) $_POST['order_id'];
-
- if ( ! wp_verify_nonce( $nonce, self::NONCE_ACTION ) ) {
- throw new Exception( __( 'Verification nonce failed',
- 'bm-woocommerce' ) );
- }
-
- $order = wc_get_order( $order_id );
-
-
- if ( $order instanceof WC_Order ) {
- $transaction_test_service = new Transaction_Test();
- $result = $transaction_test_service->verify_itn( $order );
-
- $status = Ajax_Response_Value_Object::STATUS_SUCCESS;
- $message = $result ? '1' : '0';
- if ( $result ) {
- ( new Order_Creator() )->remove( $order_id );
- }
- } else {
- $status = Payment_Status_Response_Value_Object::STATUS_ERROR;
- $message = __( 'Order create failed', 'bm-woocommerce' );
- }
-
-
- $this->send_response(
- $status,
- $message,
- '',
- null
- );
- } catch ( Exception $exception ) {
- blue_media()->get_woocommerce_logger()->log_debug(
- sprintf( '[Connection_Testing_Controller] [execute_request] [Message: %s] [POST: %s] ',
- $exception->getMessage(),
- json_encode( [
- 'autopay_action' => isset( $_POST['autopay_action'] ) ? sanitize_text_field( wp_unslash( $_POST['autopay_action'] ) ) : 'not_set',
- 'test_id' => isset( $_POST['test_id'] ) ? sanitize_text_field( wp_unslash( (string) $_POST['test_id'] ) ) : 'not_set',
- ] )
- ) );
-
- if ( isset( $order ) && $order instanceof WC_Order && isset( $order_creator ) ) {
- $order_creator->remove( $order->get_id() );
- }
-
- $this->send_response(
- Ajax_Response_Value_Object::STATUS_ERROR,
- $exception->getMessage(),
- '',
- null
- );
-
-
- }
- }
-
- public function execute_request_cleaning() {
-
- }
-
-
- public function handle() {
- add_action( $this->get_ajax_action_name( self::INITIALIZE_ACTION_NAME ),
- function () {
- $this->execute_request_initialize();
- } );
-
- add_action( $this->get_ajax_action_name_nopriv( self::INITIALIZE_ACTION_NAME ),
- function () {
- $this->execute_request_initialize();
- } );
-
- add_action( $this->get_ajax_action_name( self::VERIFY_ITN_ACTION_NAME ),
- function () {
- $this->execute_request_verify_itn();
- } );
-
- add_action( $this->get_ajax_action_name_nopriv( self::VERIFY_ITN_ACTION_NAME ),
- function () {
- $this->execute_request_verify_itn();
- } );
- }
-}
--- a/platnosci-online-blue-media/src/Data/Remote/Blue_Media/Admin_Section_Resources_Client.php
+++ b/platnosci-online-blue-media/src/Data/Remote/Blue_Media/Admin_Section_Resources_Client.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDataRemoteBlue_Media;
+defined( 'ABSPATH' ) || exit;
+
use DOMDocument;
use DOMXPath;
use Exception;
@@ -64,7 +66,7 @@
return $response->getBody()->getContents();
} catch ( RequestException $e ) {
- throw new Exception( 'Request failed: ' . $e->getMessage() );
+ throw new Exception( 'Request failed: ' . $e->getMessage() ); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Exception is thrown, not echoed; escaping belongs to the display layer.
}
}
@@ -103,7 +105,7 @@
return $response->getBody()->getContents();
} catch ( RequestException $e ) {
- throw new Exception( 'Request failed: ' . $e->getMessage() );
+ throw new Exception( 'Request failed: ' . $e->getMessage() ); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Exception is thrown, not echoed; escaping belongs to the display layer.
}
}
--- a/platnosci-online-blue-media/src/Data/Remote/Blue_Media/Client.php
+++ b/platnosci-online-blue-media/src/Data/Remote/Blue_Media/Client.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDataRemoteBlue_Media;
+defined( 'ABSPATH' ) || exit;
+
use Exception;
use IlabsBM_WoocommerceGatewayAutopay_Payment_Protocol;
use IsolatedBlue_MediaIsolated_GuzzlehttpGuzzleHttpClient as GuzzleHttpClient;
--- a/platnosci-online-blue-media/src/Data/Remote/Ga4/Dto/Ga4_Dto_Interface.php
+++ b/platnosci-online-blue-media/src/Data/Remote/Ga4/Dto/Ga4_Dto_Interface.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDataRemoteGa4Dto;
+defined( 'ABSPATH' ) || exit;
+
interface Ga4_Dto_Interface {
public function to_array(): array;
--- a/platnosci-online-blue-media/src/Data/Remote/Ga4/Dto/Item_DTO.php
+++ b/platnosci-online-blue-media/src/Data/Remote/Ga4/Dto/Item_DTO.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDataRemoteGa4Dto;
+defined( 'ABSPATH' ) || exit;
+
class Item_DTO implements Ga4_Dto_Interface{
/**
* @var string
--- a/platnosci-online-blue-media/src/Data/Remote/Ga4/Dto/List_Item_DTO.php
+++ b/platnosci-online-blue-media/src/Data/Remote/Ga4/Dto/List_Item_DTO.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDataRemoteGa4Dto;
+defined( 'ABSPATH' ) || exit;
+
class List_Item_DTO implements Ga4_Dto_Interface {
/**
--- a/platnosci-online-blue-media/src/Data/Remote/Ga4/Dto/Payload_DTO.php
+++ b/platnosci-online-blue-media/src/Data/Remote/Ga4/Dto/Payload_DTO.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDataRemoteGa4Dto;
+defined( 'ABSPATH' ) || exit;
+
class Payload_DTO implements Payload_DTO_Interface {
/**
--- a/platnosci-online-blue-media/src/Data/Remote/Ga4/Dto/Payload_DTO_Interface.php
+++ b/platnosci-online-blue-media/src/Data/Remote/Ga4/Dto/Payload_DTO_Interface.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDataRemoteGa4Dto;
+defined( 'ABSPATH' ) || exit;
+
interface Payload_DTO_Interface {
public function get_value(): ?float;
public function get_currency_symbol(): string;
--- a/platnosci-online-blue-media/src/Data/Remote/Ga4_Service_Client.php
+++ b/platnosci-online-blue-media/src/Data/Remote/Ga4_Service_Client.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDataRemote;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceDataRemoteGa4DtoItem_DTO;
use IlabsBM_WoocommerceDomainServiceGa4Add_Product_To_Cart_Use_Case;
use IlabsBM_WoocommerceDomainServiceGa4Click_On_Product_Use_Case;
@@ -168,10 +170,10 @@
->get_woocommerce_logger( 'analytics' )
->log_error(
sprintf( '[Ga4_Service_Client purchase_event] [multiple request protection triggered] [%s]',
- print_r( [
+ wp_json_encode( [
'order_id' => $complete_transaction_use_case->get_order()
->get_id(),
- ], true )
+ ] )
) );
return;
@@ -235,14 +237,14 @@
blue_media()->get_woocommerce_logger('analytics')->log_debug(
sprintf( '[purchase_event] [baseRequest: %s]',
- print_r( $baseRequest, true )
+ wp_json_encode( $baseRequest->export() )
) );
$result = $ga4Service->send( $baseRequest );
blue_media()->get_woocommerce_logger('analytics')->log_debug(
sprintf( '[purchase_event] [BaseResponse: %s]',
- print_r( $result, true )
+ wp_json_encode( $result )
) );
}
@@ -367,7 +369,7 @@
return null;
}
- $from_cookie = $_COOKIE['_ga'];
+ $from_cookie = sanitize_text_field( wp_unslash( $_COOKIE['_ga'] ) );
$exploded = explode( '.', $from_cookie );
if ( $exploded ) {
--- a/platnosci-online-blue-media/src/Domain/Model/PaymentMethod.php
+++ b/platnosci-online-blue-media/src/Domain/Model/PaymentMethod.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainModel;
+defined( 'ABSPATH' ) || exit;
+
/**
* PaymentMethod value object representing a single payment method with stable identification.
*
--- a/platnosci-online-blue-media/src/Domain/Model/Settings/Woocomerce_Vas_Value_Object.php
+++ b/platnosci-online-blue-media/src/Domain/Model/Settings/Woocomerce_Vas_Value_Object.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainModelSettings;
+defined( 'ABSPATH' ) || exit;
+
class Woocomerce_Vas_Value_Object {
const LANGUAGE_CODE_EN = 'en-EN';
--- a/platnosci-online-blue-media/src/Domain/Model/White_Label/Config.php
+++ b/platnosci-online-blue-media/src/Domain/Model/White_Label/Config.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainModelWhite_Label;
+defined( 'ABSPATH' ) || exit;
+
class Config {
const UNSPECIFIED_IDS = null;
@@ -19,7 +21,7 @@
'ids' => [ 509 ],
'extra_html' => $blik0_type === 'blik_0_without_redirect' ? $this->get_blik0_html_info()
: $this->get_desc_html_info( __( 'Pay comfortably using BLIK payments',
- 'bm-woocommerce' ) ),
+ 'platnosci-online-blue-media' ) ),
'data' => [
'blik0' => $blik0_type === 'blik_0_without_redirect',
'test_key' => 'test_value',
@@ -27,91 +29,91 @@
],
/*[
- 'name' => __( 'Card Payment', 'bm-woocommerce' ),
+ 'name' => __( 'Card Payment', 'platnosci-online-blue-media' ),
'position' => 1,
'ids' => [ 1500 ],
'extra_html' => $this->get_card_html_info()
],*/
[
- 'name' => __( 'Card Payment', 'bm-woocommerce' ),
+ 'name' => __( 'Card Payment', 'platnosci-online-blue-media' ),
'position' => 1,
'ids' => [ 1500 ],
'extra_html' => $this->get_desc_html_info( __( 'We will redirect you to the website of our partner Autopay, where you will provide your card details',
- 'bm-woocommerce' ) ),
+ 'platnosci-online-blue-media' ) ),
'block_description' => __( 'We will redirect you to the website of our partner Autopay, where you will provide your card details',
- 'bm-woocommerce' ),
+ 'platnosci-online-blue-media' ),
],
[
- 'name' => __( 'Online bank transfer', 'bm-woocommerce' ),
+ 'name' => __( 'Online bank transfer', 'platnosci-online-blue-media' ),
'position' => 2,
'ids' => self::UNSPECIFIED_IDS,
],
//[ 'name' => 'Płatność Kartą One Clik', 'position' => 1, 'ids' => [ 1503 ], ],
[
- 'name' => __( 'VisaMobile', 'bm-woocommerce' ),
+ 'name' => __( 'VisaMobile', 'platnosci-online-blue-media' ),
'position' => 3,
'ids' => [ 1523 ],
'extra_html' => $this->get_desc_html_info( __( 'Enter your phone number and confirm the payment in the application',
- 'bm-woocommerce' ) ),
+ 'platnosci-online-blue-media' ) ),
'block_description' => __( 'Enter your phone number and confirm the payment in the application',
- 'bm-woocommerce' ),
+ 'platnosci-online-blue-media' ),
],
[
- 'name' => __( 'Google Pay', 'bm-woocommerce' ),
+ 'name' => __( 'Google Pay', 'platnosci-online-blue-media' ),
'position' => 4,
'ids' => [ 1512 ],
'extra_html' => $this->get_desc_html_info( __( 'Pay without having to log in to online banking',
- 'bm-woocommerce' ) ),
+ 'platnosci-online-blue-media' ) ),
'block_description' => __( 'Pay without having to log in to online banking',
- 'bm-woocommerce' ),
+ 'platnosci-online-blue-media' ),
],
[
- 'name' => __( 'Apple Pay', 'bm-woocommerce' ),
+ 'name' => __( 'Apple Pay', 'platnosci-online-blue-media' ),
'position' => 5,
'ids' => [ 1513 ],
'extra_class' => 'bm-apple-pay',
'extra_script' => $this->get_applepay_check_script(),
'extra_html' => $this->get_desc_html_info( __( 'Pay without having to log in to online banking',
- 'bm-woocommerce' ) ),
+ 'platnosci-online-blue-media' ) ),
'block_description' => __( 'Pay without having to log in to online banking',
- 'bm-woocommerce' ),
+ 'platnosci-online-blue-media' ),
],
//[ 'name' => 'Wirtualny portfel', 'position' => 4, 'ids' => [ 778 ], ],
[
'name' => __( 'Alior installments',
- 'bm-woocommerce' ),
+ 'platnosci-online-blue-media' ),
'position' => 7,
'ids' => [ 1506 ],
'extra_html' => $this->get_alior_html_info(),
'block_description' => $this->get_alior_html_info_for_block(),
],
[
- 'name' => __( 'PayPo', 'bm-woocommerce' ),
+ 'name' => __( 'PayPo', 'platnosci-online-blue-media' ),
'position' => 8,
'ids' => [ 705 ],
'extra_html' => $this->get_paypo_html_info(),
'block_description' => $this->get_paypo_html_info_for_block(),
],
[
- 'name' => __( 'Spingo', 'bm-woocommerce' ),
+ 'name' => __( 'Spingo', 'platnosci-online-blue-media' ),
'position' => 9,
'ids' => [ 706 ],
'extra_html' => $this->get_desc_html_info( __( 'Deferred payment for companies',
- 'bm-woocommerce' ) ),
+ 'platnosci-online-blue-media' ) ),
'block_description' => __( 'Deferred payment for companies',
- 'bm-woocommerce' ),
+ 'platnosci-online-blue-media' ),
],
[
- 'name' => __( 'BLIK Pay Later', 'bm-woocommerce' ),
+ 'name' => __( 'BLIK Pay Later', 'platnosci-online-blue-media' ),
'position' => 10,
'ids' => [ 523 ],
'extra_html' => $this->get_desc_html_info( __( 'Buy now and pay within 30 days',
- 'bm-woocommerce' ) ),
+ 'platnosci-online-blue-media' ) ),
'block_description' => __( 'Buy now and pay within 30 days',
- 'bm-woocommerce' ),
+ 'platnosci-online-blue-media' ),
],
//[ 'name' => 'Hub ratalny', 'position' => 10, 'ids' => [ 702 ], ],
];
@@ -133,10 +135,10 @@
return sprintf( ' <span><span class="payment-method-description">%s </span>
<span class="payment-method-help-text">%s</span><a href="https://start.paypo.pl/" target="_blank"><span style=""><br>%s</a></span>',
__( 'Pick up your purchases, check them out and pay later - in 30 days or in convenient installments.',
- 'bm-woocommerce' ),
+ 'platnosci-online-blue-media' ),
__( 'We will redirect you to the PayPo partner website.',
- 'bm-woocommerce' ),
- __( 'Get the details.', 'bm-woocommerce' )
+ 'platnosci-online-blue-media' ),
+ __( 'Get the details.', 'platnosci-online-blue-media' )
);
}
@@ -144,10 +146,10 @@
private function get_paypo_html_info_for_block(): string {
return sprintf( '<span>%s</span><span class="atp-payment-method-help-text">%s</span><a href="https://start.paypo.pl/" target="_blank"><span style=""><br>%s</a>',
__( 'Pick up your purchases, check them out and pay later - in 30 days or in convenient installments.',
- 'bm-woocommerce' ),
+ 'platnosci-online-blue-media' ),
__( 'We will redirect you to the PayPo partner website.',
- 'bm-woocommerce' ),
- __( 'Get the details.', 'bm-woocommerce' )
+ 'platnosci-online-blue-media' ),
+ __( 'Get the details.', 'platnosci-online-blue-media' )
);
}
@@ -174,16 +176,16 @@
return sprintf( ' <span><span class="payment-method-description">%s </span>
<a href="https://kalkulator.raty.aliorbank.pl/init?supervisor=B776&promotionList=B" target="_blank"><span style="">%s</a></span>',
__( 'Spread the payment into convenient installments and buy without any problems.',
- 'bm-woocommerce' ),
- __( 'Find out more', 'bm-woocommerce' )
+ 'platnosci-online-blue-media' ),
+ __( 'Find out more', 'platnosci-online-blue-media' )
);
}
private function get_alior_html_info_for_block(): string {
return sprintf( '<span>%s</span><a href="https://kalkulator.raty.aliorbank.pl/init?supervisor=B776&promotionList=B" target="_blank"><span>%s</a>',
__( 'Spread the payment into convenient installments and buy without any problems.',
- 'bm-woocommerce' ),
- __( 'Find out more', 'bm-woocommerce' )
+ 'platnosci-online-blue-media' ),
+ __( 'Find out more', 'platnosci-online-blue-media' )
);
}
--- a/platnosci-online-blue-media/src/Domain/Model/White_Label/Expandable_Group.php
+++ b/platnosci-online-blue-media/src/Domain/Model/White_Label/Expandable_Group.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainModelWhite_Label;
+defined( 'ABSPATH' ) || exit;
+
class Expandable_Group {
/**
@@ -58,7 +60,7 @@
return [
'label' => $this->name,
- 'key' => 'bm_channnel_group_' . rand( 1, 1000 ),
+ 'key' => 'bm_channnel_group_' . wp_rand( 1, 1000 ),
'value' => 'test',
'name' => 'bm-payment-channel-group',
'icon' => $this->icon,
--- a/platnosci-online-blue-media/src/Domain/Model/White_Label/Expandable_Group_Interface.php
+++ b/platnosci-online-blue-media/src/Domain/Model/White_Label/Expandable_Group_Interface.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainModelWhite_Label;
+defined( 'ABSPATH' ) || exit;
+
interface Expandable_Group_Interface {
public function get_icon(): string;
--- a/platnosci-online-blue-media/src/Domain/Model/White_Label/Group.php
+++ b/platnosci-online-blue-media/src/Domain/Model/White_Label/Group.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainModelWhite_Label;
+defined( 'ABSPATH' ) || exit;
+
class Group {
/**
--- a/platnosci-online-blue-media/src/Domain/Model/White_Label/Item.php
+++ b/platnosci-online-blue-media/src/Domain/Model/White_Label/Item.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainModelWhite_Label;
+defined( 'ABSPATH' ) || exit;
+
class Item {
/**
--- a/platnosci-online-blue-media/src/Domain/Model/White_Label/v3/Currency.php
+++ b/platnosci-online-blue-media/src/Domain/Model/White_Label/v3/Currency.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainModelWhite_Labelv3;
+defined( 'ABSPATH' ) || exit;
+
class Currency {
/**
* @var string
--- a/platnosci-online-blue-media/src/Domain/Model/White_Label/v3/Gateway.php
+++ b/platnosci-online-blue-media/src/Domain/Model/White_Label/v3/Gateway.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainModelWhite_Labelv3;
+defined( 'ABSPATH' ) || exit;
+
class Gateway {
/**
* @var int
@@ -54,6 +56,14 @@
private $descriptionUrl;
/**
+ * Plugin-generated HTML block rendered after the channel <li> item (e.g. Card Widget, BLIK inline, GPay inline).
+ * Must never contain user input.
+ *
+ * @var string|null
+ */
+ private $inlineHtml;
+
+ /**
* @var string
*/
private $availableFor;
@@ -173,6 +183,14 @@
$this->descriptionUrl = $descriptionUrl;
}
+ public function getInlineHtml(): ?string {
+ return $this->inlineHtml;
+ }
+
+ public function setInlineHtml(?string $inlineHtml): void {
+ $this->inlineHtml = $inlineHtml;
+ }
+
public function getAvailableFor(): string {
return $this->availableFor;
}
--- a/platnosci-online-blue-media/src/Domain/Model/White_Label/v3/Gateway_List_Response.php
+++ b/platnosci-online-blue-media/src/Domain/Model/White_Label/v3/Gateway_List_Response.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainModelWhite_Labelv3;
+defined( 'ABSPATH' ) || exit;
+
class Gateway_List_Response {
/**
* @var string
--- a/platnosci-online-blue-media/src/Domain/Model/White_Label/v3/Gateway_List_Response_Factory.php
+++ b/platnosci-online-blue-media/src/Domain/Model/White_Label/v3/Gateway_List_Response_Factory.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainModelWhite_Labelv3;
+defined( 'ABSPATH' ) || exit;
+
class Gateway_List_Response_Factory {
public function create(array $data): Gateway_List_Response {
--- a/platnosci-online-blue-media/src/Domain/Model/White_Label/v3/Group.php
+++ b/platnosci-online-blue-media/src/Domain/Model/White_Label/v3/Group.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainModelWhite_Labelv3;
+defined( 'ABSPATH' ) || exit;
+
class Group {
/**
* @var string
--- a/platnosci-online-blue-media/src/Domain/Model/White_Label/v3/Mcc.php
+++ b/platnosci-online-blue-media/src/Domain/Model/White_Label/v3/Mcc.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainModelWhite_Labelv3;
+defined( 'ABSPATH' ) || exit;
+
class Mcc {
/**
* @var int[]|null
--- a/platnosci-online-blue-media/src/Domain/Model/White_Label/v3/View_Model/View_Model_Group.php
+++ b/platnosci-online-blue-media/src/Domain/Model/White_Label/v3/View_Model/View_Model_Group.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainModelWhite_Labelv3View_Model;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceDomainModelWhite_Labelv3Gateway;
use IlabsBM_WoocommerceDomainModelWhite_Labelv3Group;
--- a/platnosci-online-blue-media/src/Domain/Model/White_Label/v3/View_Model/View_Model_Group_Factory.php
+++ b/platnosci-online-blue-media/src/Domain/Model/White_Label/v3/View_Model/View_Model_Group_Factory.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainModelWhite_Labelv3View_Model;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceDomainModelWhite_Labelv3Gateway;
use IlabsBM_WoocommerceDomainModelWhite_Labelv3Gateway_List_Response;
use IlabsBM_WoocommerceGatewayBlue_Media_Gateway;
--- a/platnosci-online-blue-media/src/Domain/Service/Currency/Currency.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Currency/Currency.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceCurrency;
+defined( 'ABSPATH' ) || exit;
+
use Exception;
use IlabsBM_WoocommerceDomainServiceCurrencyInterfacesCurrency_Interface;
use IlabsBM_WoocommerceDomainServiceCurrencyValue_ObjectCZK;
@@ -299,7 +301,8 @@
private function hooks() {
- if ( isset( $_GET['section'] ) && $_GET['section'] === 'bluemedia' ) {
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Read-only admin routing parameter; no state is changed.
+ if ( isset( $_GET['section'] ) && sanitize_key( wp_unslash( $_GET['section'] ) ) === 'bluemedia' ) {
$request_id = $this->generate_unique_request_id();
$nonce = $this->generate_nonce( $request_id );
@@ -314,14 +317,14 @@
name="autopay_currency_edit[nonce]"
value="%s"
/>',
- $nonce );
+ esc_attr( $nonce ) );
printf( '<input
type="hidden"
name="autopay_currency_edit[request_id]"
value="%s"
/>',
- $request_id );
+ esc_attr( $request_id ) );
echo '<input
type="hidden"
@@ -366,7 +369,7 @@
blue_media()->get_woocommerce_logger()->log_debug(
sprintf( '[Currency] [migrate] [$shop_currency: %s]',
- print_r( $shop_currency, true ),
+ wp_json_encode( $shop_currency ),
) );
if ( 'PLN' !== $shop_currency->get_code() ) {
@@ -380,14 +383,13 @@
blue_media()->get_woocommerce_logger()->log_debug(
sprintf( '[Currency] [migrate] [migrate_4_5 matched options: %s]',
- print_r( [
+ wp_json_encode( [
'whitelabel' => $whitelabel,
'service_id' => $service_id,
'test_service_id' => $test_service_id,
'private_key' => $private_key,
'test_private_key' => $test_private_key,
-
- ], true ),
+ ] ),
) );
blue_media()->update_autopay_option( $this->add_currency_postfix( 'whitelabel',
@@ -421,9 +423,11 @@
private function handle() {
+ // phpcs:ignore WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Custom nonce is verified via wp_verify_nonce() later in this method; individual fields are sanitized via sanitize_text_field() in get_from_params().
if ( isset( $_POST['autopay_currency_edit'] ) && is_array( $_POST['autopay_currency_edit'] ) ) {
- $params = $_POST['autopay_currency_edit'];
+ // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Custom nonce is verified via wp_verify_nonce() later in this method; currency code is validated against an allowlist.
+ $params = wp_unslash( $_POST['autopay_currency_edit'] );
$nonce = $this->get_from_params( 'nonce', $params );
$request_id = $this->get_from_params( 'request_id', $params );
--- a/platnosci-online-blue-media/src/Domain/Service/Currency/Interfaces/Currency_Interface.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Currency/Interfaces/Currency_Interface.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceCurrencyInterfaces;
+defined( 'ABSPATH' ) || exit;
+
interface Currency_Interface {
const CODE_PLN = 'PLN';
--- a/platnosci-online-blue-media/src/Domain/Service/Currency/Value_Object/CZK.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Currency/Value_Object/CZK.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceCurrencyValue_Object;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceDomainServiceCurrencyInterfacesCurrency_Interface;
class CZK implements Currency_Interface {
@@ -11,7 +13,7 @@
}
public function get_name(): string {
- return __( 'Czech koruna', 'bm-woocommerce' );
+ return __( 'Czech koruna', 'platnosci-online-blue-media' );
}
public function get_symbol(): string {
--- a/platnosci-online-blue-media/src/Domain/Service/Currency/Value_Object/EUR.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Currency/Value_Object/EUR.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceCurrencyValue_Object;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceDomainServiceCurrencyInterfacesCurrency_Interface;
class EUR implements Currency_Interface{
@@ -11,7 +13,7 @@
}
public function get_name(): string {
- return __( 'Euro', 'woocommerce' );
+ return __( 'Euro', 'woocommerce' ); // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch -- Intentional reuse of WooCommerce currency translation for 'Euro'.
}
public function get_symbol(): string {
--- a/platnosci-online-blue-media/src/Domain/Service/Currency/Value_Object/GBP.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Currency/Value_Object/GBP.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceCurrencyValue_Object;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceDomainServiceCurrencyInterfacesCurrency_Interface;
class GBP implements Currency_Interface {
@@ -11,7 +13,7 @@
}
public function get_name(): string {
- return __( 'Pound sterling', 'bm-woocommerce' );
+ return __( 'Pound sterling', 'platnosci-online-blue-media' );
}
public function get_symbol(): string {
--- a/platnosci-online-blue-media/src/Domain/Service/Currency/Value_Object/HUF.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Currency/Value_Object/HUF.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceCurrencyValue_Object;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceDomainServiceCurrencyInterfacesCurrency_Interface;
class HUF implements Currency_Interface {
@@ -11,7 +13,7 @@
}
public function get_name(): string {
- return __( 'Hungarian forint', 'bm-woocommerce' );
+ return __( 'Hungarian forint', 'platnosci-online-blue-media' );
}
public function get_symbol(): string {
--- a/platnosci-online-blue-media/src/Domain/Service/Currency/Value_Object/PLN.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Currency/Value_Object/PLN.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceCurrencyValue_Object;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceDomainServiceCurrencyInterfacesCurrency_Interface;
class PLN implements Currency_Interface {
@@ -11,7 +13,7 @@
}
public function get_name(): string {
- return __( 'Polish złoty', 'bm-woocommerce' );
+ return __( 'Polish złoty', 'platnosci-online-blue-media' );
}
public function get_symbol(): string {
--- a/platnosci-online-blue-media/src/Domain/Service/Currency/Value_Object/RON.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Currency/Value_Object/RON.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceCurrencyValue_Object;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceDomainServiceCurrencyInterfacesCurrency_Interface;
class RON implements Currency_Interface {
@@ -11,7 +13,7 @@
}
public function get_name(): string {
- return __( 'Romanian leu', 'bm-woocommerce' );
+ return __( 'Romanian leu', 'platnosci-online-blue-media' );
}
public function get_symbol(): string {
--- a/platnosci-online-blue-media/src/Domain/Service/Currency/Value_Object/USD.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Currency/Value_Object/USD.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceCurrencyValue_Object;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceDomainServiceCurrencyInterfacesCurrency_Interface;
class USD implements Currency_Interface {
@@ -11,7 +13,7 @@
}
public function get_name(): string {
- return __( 'United States (US) dollar', 'bm-woocommerce' );
+ return __( 'United States (US) dollar', 'platnosci-online-blue-media' );
}
public function get_symbol(): string {
--- a/platnosci-online-blue-media/src/Domain/Service/Custom_Styles/Css_Editor.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Custom_Styles/Css_Editor.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceCustom_Styles;
+defined( 'ABSPATH' ) || exit;
+
use Exception;
use IlabsBM_WoocommerceHelpersHelper;
use IsolatedBlueMediaIlabsIlabs_PluginPresentationFormFieldsCheckbox;
@@ -41,7 +43,7 @@
*/
public function display_editor() {
$this->display_switcher();
- echo $this->get_editor( $this->editor_content );
+ echo $this->get_editor( $this->editor_content ); // phpcs:ignore WordPress.Security.EscapeOutput -- plugin-generated HTML from ob_get_clean(), esc_html would destroy markup
}
private function configure_controls() {
@@ -51,7 +53,7 @@
$checkbox->set_value( $this->read_enabled_option() ? 'yes' : 'no' );
$checkbox->set_default( 'no' );
- $checkbox->set_label( __( 'Feature enabled', 'bm-woocommerce' ) );
+ $checkbox->set_label( __( 'Feature enabled', 'platnosci-online-blue-media' ) );
$this->switcher_checkbox = $checkbox;
}
@@ -61,7 +63,7 @@
*/
public function display_switcher() {
$field = new Field();
- echo $field->get_html( $this->switcher_checkbox );
+ echo $field->get_html( $this->switcher_checkbox ); // phpcs:ignore WordPress.Security.EscapeOutput -- WC/ilabs Field object returns safe HTML
}
private function get_editor( string $content = '' ): string {
@@ -69,7 +71,11 @@
$content = $content === '' ? $this->get_default_css_code() : $content;
ob_start();
- echo "<textarea name="$id" id="$id" style="width:100%; height:500px;">" . esc_textarea( $content ) . "</textarea>";
+ printf(
+ '<textarea name="%1$s" id="%1$s" style="width:100%%; height:500px;">%2$s</textarea>',
+ esc_attr( $id ),
+ esc_textarea( $content )
+ );
?>
<script>
jQuery(document).ready(function ($) {
@@ -79,7 +85,7 @@
tabSize: 2,
mode: 'css',
});
- var editor = wp.codeEditor.initialize($('#<?php echo $id?>'), editorSettings);
+ var editor = wp.codeEditor.initialize($('#<?php echo esc_js( $id )?>'), editorSettings);
});
</script>
<?php
@@ -88,12 +94,17 @@
}
public function handle_save() {
+ if ( ! current_user_can( 'manage_woocommerce' )
+ || ! isset( $_POST['autopay_css_editor_nonce_field'] )
+ || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['autopay_css_editor_nonce_field'] ) ), 'autopay_css_editor_nonce' ) ) {
+ return;
+ }
if ( blue_media()
->get_request()
->key_exsists( $this->get_editor_content_option_id() ) ) {
- $content = $_POST[ $this->get_editor_content_option_id() ];
+ $content = wp_unslash( $_POST[ $this->get_editor_content_option_id() ] ?? '' ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- CSS content; sanitize_text_field() would corrupt valid CSS (strips angle brackets, colons, semicolons). Access is nonce-verified and capability-checked above.
$content = $this->normalize_new_lines( $content );
Helper::update_gateway_option( $this->get_editor_content_option_id(),
$content );
@@ -109,7 +120,7 @@
blue_media()
->alerts()
->add_success( __( 'Changes have been saved.',
- 'bm-woocommerce' ) );
+ 'platnosci-online-blue-media' ) );
}
}
@@ -130,7 +141,7 @@
}
private function get_default_css_code(): string {
- $message = __( "Insert your CSS code here", "bm-woocommerce" );
+ $message = __( "Insert your CSS code here", "platnosci-online-blue-media" );
return "/*$message*/";
}
--- a/platnosci-online-blue-media/src/Domain/Service/Custom_Styles/Css_Frontend.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Custom_Styles/Css_Frontend.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceCustom_Styles;
+defined( 'ABSPATH' ) || exit;
+
class Css_Frontend {
public function include( ?string $id = null ) {
@@ -14,7 +16,7 @@
private function print_to_wp_head( string $css ) {
add_action( 'wp_head', function () use ( $css ) {
- echo ( '<style>' . $css . '</style>' );
+ echo '<style>' . wp_strip_all_tags( $css ) . '</style>'; // phpcs:ignore WordPress.Security.EscapeOutput -- wp_strip_all_tags prevents HTML injection from CSS context
} );
}
}
--- a/platnosci-online-blue-media/src/Domain/Service/Ga4/Abstract_Ga4_Use_Case.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Ga4/Abstract_Ga4_Use_Case.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceGa4;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceDataRemoteGa4DtoItem_DTO;
use IlabsBM_WoocommerceDataRemoteGa4DtoItem_In_Cart_DTO;
--- a/platnosci-online-blue-media/src/Domain/Service/Ga4/Add_Product_To_Cart_Use_Case.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Ga4/Add_Product_To_Cart_Use_Case.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceGa4;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceDataRemoteGa4DtoItem_DTO;
use IlabsBM_WoocommerceDataRemoteGa4DtoItem_In_Cart_DTO;
use IlabsBM_WoocommerceDataRemoteGa4DtoPayload_DTO;
--- a/platnosci-online-blue-media/src/Domain/Service/Ga4/Click_On_Product_Use_Case.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Ga4/Click_On_Product_Use_Case.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceGa4;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceDataRemoteGa4DtoItem_DTO;
use IlabsBM_WoocommerceDataRemoteGa4DtoPayload_DTO;
use IsolatedBlueMediaIlabsIlabs_PluginCommonWc_Helpers;
--- a/platnosci-online-blue-media/src/Domain/Service/Ga4/Complete_Transation_Use_Case.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Ga4/Complete_Transation_Use_Case.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceGa4;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceDataRemoteGa4DtoEvent_DTO;
use IlabsBM_WoocommerceDataRemoteGa4DtoItem_DTO;
use IlabsBM_WoocommerceDataRemoteGa4DtoItem_In_Cart_DTO;
--- a/platnosci-online-blue-media/src/Domain/Service/Ga4/Ga4_Hooks.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Ga4/Ga4_Hooks.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceGa4;
+defined( 'ABSPATH' ) || exit;
+
use Exception;
use IlabsBM_WoocommerceDataRemoteGa4_Service_Client;
use IsolatedBlueMediaIlabsIlabs_PluginEvent_ChainEventWc_Add_To_Cart;
@@ -335,12 +337,12 @@
->get_woocommerce_logger( 'analytics' )
->log_debug(
sprintf( '[handle_ga4_serverside] [purchase_event on_wc_order_status_changed] [%s]',
- print_r( [
+ wp_json_encode( [
'new order status' => $event->get_new_status(),
'mapped status' => $mapped_status,
'order_id' => $event->get_order()
->get_id(),
- ], true )
+ ] )
) );
@@ -352,10 +354,10 @@
->get_woocommerce_logger( 'analytics' )
->log_debug(
sprintf( '[handle_ga4_serverside] [purchase_event create Ga4_Service_Client instance and call purchase_event] [%s]',
- print_r( [
+ wp_json_encode( [
'order_id' => $order_aware_interface->get_order()
->get_id(),
- ], true )
+ ] )
) );
try {
@@ -365,11 +367,11 @@
->get_woocommerce_logger( 'analytics' )
->log_error(
sprintf( '[handle_ga4_serverside] [purchase_event exception] [%s]',
- print_r( [
+ wp_json_encode( [
'message' => $e->getMessage(),
'order_id' => $order_aware_interface->get_order()
->get_id(),
- ], true )
+ ] )
) );
}
} )
@@ -383,9 +385,9 @@
->get_woocommerce_logger( 'analytics' )
->log_debug(
sprintf( '[handle_ga4_serverside_by_itn triggered] [%s]',
- print_r( [
+ wp_json_encode( [
'order_id' => $order->get_id(),
- ], true )
+ ] )
) );
( new Ga4_Service_Client() )->purchase_event( new Complete_Transation_Use_Case( $order ) );
@@ -394,11 +396,11 @@
->get_woocommerce_logger( 'analytics' )
->log_error(
sprintf( '[handle_ga4_serverside_by_itn] [purchase_event exception] [%s]',
- print_r( [
+ wp_json_encode( [
'message' => $e->getMessage(),
'order_id' => $order
->get_id(),
- ], true )
+ ] )
) );
}
}
--- a/platnosci-online-blue-media/src/Domain/Service/Ga4/Ga4_Use_Case_Interface.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Ga4/Ga4_Use_Case_Interface.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceGa4;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceDataRemoteGa4DtoPayload_DTO;
interface Ga4_Use_Case_Interface {
--- a/platnosci-online-blue-media/src/Domain/Service/Ga4/Init_Checkout_Use_Case.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Ga4/Init_Checkout_Use_Case.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceGa4;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceDataRemoteGa4DtoItem_DTO;
use IlabsBM_WoocommerceDataRemoteGa4DtoPayload_DTO;
use IsolatedBlueMediaIlabsIlabs_PluginCommonWc_Helpers;
--- a/platnosci-online-blue-media/src/Domain/Service/Ga4/Remove_Product_From_Cart_Use_Case.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Ga4/Remove_Product_From_Cart_Use_Case.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceGa4;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceDataRemoteGa4DtoItem_DTO;
use IlabsBM_WoocommerceDataRemoteGa4DtoItem_In_Cart_DTO;
use IlabsBM_WoocommerceDataRemoteGa4DtoPayload_DTO;
--- a/platnosci-online-blue-media/src/Domain/Service/Ga4/View_Product_On_List_Use_Case.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Ga4/View_Product_On_List_Use_Case.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceGa4;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceDataRemoteGa4DtoItem_In_Cart_DTO;
use IlabsBM_WoocommerceDataRemoteGa4DtoList_Item_DTO;
use IlabsBM_WoocommerceDataRemoteGa4DtoPayload_DTO;
--- a/platnosci-online-blue-media/src/Domain/Service/Gateway_List/Gateway_List_Mapper_Block_Checkout.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Gateway_List/Gateway_List_Mapper_Block_Checkout.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceGateway_List;
+defined( 'ABSPATH' ) || exit;
+
use Exception;
use IlabsBM_WoocommerceDomainModelWhite_LabelConfig;
use IlabsBM_WoocommerceDomainModelWhite_LabelExpandable_Group;
@@ -62,7 +64,7 @@
'label' => $group->getTitle(),
'slug' => sanitize_title( $group->getTitle() ),
'is_expandable' => true,
- 'key' => 'bm_channnel_group_' . rand( 1, 1000 ),
+ 'key' => 'bm_channnel_group_' . wp_rand( 1, 1000 ),
'value' => 'test',
'name' => 'bm-payment-channel-group',
'icon' => $group->getIconUrl(),
@@ -389,7 +391,7 @@
sanitize_title( $config_item['name'] ),
$this->get_checkout_group_logo_url(),
__( 'You will be redirected to the page of the selected bank.',
- 'bm-woocommerce'
+ 'platnosci-online-blue-media'
)
);
--- a/platnosci-online-blue-media/src/Domain/Service/Legacy/Importer.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Legacy/Importer.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceLegacy;
+defined( 'ABSPATH' ) || exit;
+
class Importer {
const LEGACY_ENV_PRODUCTION = 1;
@@ -25,6 +27,12 @@
}
public function handle_import() {
+ if ( ! isset( $_POST['autopay_import_nonce_field'] )
+ || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['autopay_import_nonce_field'] ) ), 'autopay_import_nonce' )
+ || ! current_user_can( 'manage_woocommerce' ) ) {
+ return;
+ }
+
if ( isset( $_POST['autopay_import_legacy_settings'] ) && '1' === $_POST['autopay_import_legacy_settings'] ) {
@@ -36,7 +44,7 @@
blue_media()
->alerts()
->add_notice( __( 'Autopay: No values found for import',
- 'bm-woocommerce' ) );
+ 'platnosci-online-blue-media' ) );
return;
}
@@ -59,7 +67,7 @@
blue_media()
->alerts()
->add_notice( __( 'Autopay: Import completed',
- 'bm-woocommerce' ) );
+ 'platnosci-online-blue-media' ) );
}
}
--- a/platnosci-online-blue-media/src/Domain/Service/Product_Feed/Product_Feed.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Product_Feed/Product_Feed.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceProduct_Feed;
+defined( 'ABSPATH' ) || exit;
+
use SimpleXMLElement;
class Product_Feed {
@@ -9,17 +11,20 @@
private static ?string $pixel_js_src = null;
public function init() {
+ // phpcs:disable WordPress.Security.NonceVerification.Recommended -- Public product feed endpoint; read-only GET routing parameter.
if (
isset( $_GET['product_feed'] ) && blue_media()
->get_blue_media_gateway()
->get_option( 'campaign_tracking',
'no' ) === 'yes'
) {
+ // phpcs:enable WordPress.Security.NonceVerification.Recommended
$this->generate_google_product_feed();
}
}
function generate_google_product_feed() {
+ // phpcs:ignore WordPress.PHP.DevelopmentFunctions.prevent_path_disclosure_error_reporting -- Suppresses PHP notices that would corrupt XML product feed HTTP response.
error_reporting( E_ERROR | E_WARNING | E_PARSE );
$products = wc_get_products( [ 'status' => 'publish' ] );
@@ -70,7 +75,7 @@
}
header( 'Content-Type: application/xml; charset=utf-8' );
- echo $rss->asXML();
+ echo $rss->asXML(); // phpcs:ignore WordPress.Security.EscapeOutput -- XML output with Content-Type: application/xml header, SimpleXML escapes data at addChild()
exit();
}
--- a/platnosci-online-blue-media/src/Domain/Service/Settings/Banner.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Settings/Banner.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceSettings;
+defined( 'ABSPATH' ) || exit;
+
use DOMDocument;
use DOMXPath;
use Exception;
@@ -21,7 +23,7 @@
} catch ( Exception $exception ) {
blue_media()->get_woocommerce_logger()->log_error(
sprintf( '[get_banner_content error:] [%s]',
- print_r( $exception->getMessage(), true )
+ wp_json_encode( $exception->getMessage() )
) );
return '';
@@ -37,7 +39,7 @@
} catch ( Exception $exception ) {
blue_media()->get_woocommerce_logger()->log_error(
sprintf( '[get_banner_url error:] [%s]',
- print_r( $exception->getMessage(), true )
+ wp_json_encode( $exception->getMessage() )
) );
return '';
--- a/platnosci-online-blue-media/src/Domain/Service/Settings/Currency_Tabs.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Settings/Currency_Tabs.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceSettings;
+defined( 'ABSPATH' ) || exit;
+
use IlabsBM_WoocommerceDomainServiceCurrencyCurrency;
use IlabsBM_WoocommerceDomainServiceCurrencyInterfacesCurrency_Interface;
--- a/platnosci-online-blue-media/src/Domain/Service/Settings/Settings_Helper.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Settings/Settings_Helper.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceSettings;
+defined( 'ABSPATH' ) || exit;
+
class Settings_Helper {
--- a/platnosci-online-blue-media/src/Domain/Service/Settings/Settings_Manager.php
+++ b/platnosci-online-blue-media/src/Domain/Service/Settings/Settings_Manager.php
@@ -2,6 +2,8 @@
namespace IlabsBM_WoocommerceDomainServiceSettings;
+defined( 'ABSPATH' ) || exit;
+
use Exception;
use IlabsBM_WoocommerceDomainServiceCustom_StylesCss_Editor;
use IlabsBM_WoocommerceFeatures;
@@ -57,11 +59,11 @@
if ( isset( $_GET['bmtab'] ) && $_GET['bmtab'] === 'help' ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- read-only admin settings context
add_action( 'woocommerce_settings_checkout',
function () {
- $GLOBALS['hide_save_button'] = true;
+ $GLOBALS['hide_save_button'] = true; // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound -- WooCommerce admin convention for hiding the default save button.
} );
add_action( 'woocommerce_after_settings_checkout',
function () {
- $GLOBALS['hide_save_button'] = false;
+ $GLOBALS['hide_save_button'] = false; // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound -- WooCommerce admin convention for hiding the default save button.
} );
}
} )
@@ -73,11 +75,11 @@
if ( get_locale() === 'pl_PL' ) {
add_action( 'woocommerce_settings_checkout',
function () {
- $GLOBALS['hide_save_button'] = true;
+ $GLOBALS['hide_save_button'] = true; // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound -- WooCommerce admin convention for hiding the default save button.
} );
add_action( 'woocommerce_after_settings_checkout',
function () {
- $GLOBALS['hide_save_button'] = false;
+ $GLOBALS['hide_save_button'] = false; // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound -- WooCommerce admin convention for hiding the default save button.
} );
$vas_content = ( new Vas() )->get_vas_content();
@@ -86,7 +88,7 @@
'vas_content' => $vas_content,
'title' => $tabs->get_active_tab_name(),
'subtitle' => __( 'Use the services of official and verified Autopay partners!',
- 'bm-woocommerce' ),
+ 'platnosci-online-blue-media' ),
] );
}
}
@@ -137,18 +139,18 @@
case Settings_Tabs::AUTHENTICATION_TAB_ID:
$section_title = $tabs->get_active_tab_name();
$section_subtitle = __( 'Turn on sandbox mode or accept real payments.',
- 'bm-woocommerce' );
+ 'platnosci-online-blue-media' );
break;
case Settings_Tabs::ADVERTISING_SERVICES_TAB_ID:
$section_title = $tabs->get_active_tab_name();
$section_subtitle = __( "The Ad services is a comprehensive solution that enables merchants to effectively promote their products directly from the shop's administration panel. The service is fully integrated with WooCommerce which allows the automatic creation of advertising campaigns tailored to the shop's product range, customers' purchase history and analysis of their preferences. This option is available only for stores with a single active currency.",
- 'bm-woocommerce' );
+ 'platnosci-online-blue-media' );
break;
case Settings_Tabs::PAYMENT_SETTINGS_TAB_ID:
$section_title = $tabs-