Skip to content

Commit 6e902c7

Browse files
committed
Fix: Critical error preventing bulk update of products
1 parent 9428102 commit 6e902c7

File tree

5 files changed

+31
-8
lines changed

5 files changed

+31
-8
lines changed

includes/Admin/Products/List_Products.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,9 @@ public function quick_edit( $column_name, $post_type ): void {
258258
* @return void
259259
*/
260260
public static function quick_edit_save( WC_Product $product ): void {
261-
if ( isset( $_POST['_pos_visibility'] ) ) {
261+
$valid_options = array( 'pos_only', 'online_only', '' );
262+
263+
if ( isset( $_POST['_pos_visibility'] ) && in_array( $_POST['_pos_visibility'], $valid_options, true ) ) {
262264
$settings_instance = Settings::instance();
263265
$args = array(
264266
'post_type' => 'products',
@@ -275,11 +277,13 @@ public static function quick_edit_save( WC_Product $product ): void {
275277
* @return void
276278
*/
277279
public function bulk_edit_save( WC_Product $product ): void {
278-
if ( isset( $_GET['_pos_visibility'] ) ) {
280+
$valid_options = array( 'pos_only', 'online_only', '' );
281+
282+
if ( isset( $_GET['_pos_visibility'] ) && in_array( $_GET['_pos_visibility'], $valid_options, true ) ) {
279283
$settings_instance = Settings::instance();
280284
$args = array(
281285
'post_type' => 'products',
282-
'visibility' => sanitize_text_field( $_GET['_pos_visibility'] ),
286+
'visibility' => $_GET['_pos_visibility'],
283287
'ids' => array( $product->get_id() ),
284288
);
285289
$settings_instance->update_visibility_settings( $args );

includes/Admin/Products/Single_Product.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,9 @@ public function save_post( $post_id, $post ): void {
198198
}
199199

200200
// Get the product and save.
201-
if ( isset( $_POST['_pos_visibility'] ) ) {
201+
$valid_options = array( 'pos_only', 'online_only', '' );
202+
203+
if ( isset( $_POST['_pos_visibility'] ) && in_array( $_POST['_pos_visibility'], $valid_options, true ) ) {
202204
$settings_instance = Settings::instance();
203205
$args = array(
204206
'post_type' => 'products',
@@ -267,7 +269,9 @@ public function after_variable_attributes_pos_only_products( $loop, $variation_d
267269
* @param $variation_id
268270
*/
269271
public function save_product_variation_pos_only_products( $variation_id ): void {
270-
if ( isset( $_POST['variable_pos_visibility'][ $variation_id ] ) ) {
272+
$valid_options = array( 'pos_only', 'online_only', '' );
273+
274+
if ( isset( $_POST['variable_pos_visibility'][ $variation_id ] ) && in_array( $_POST['variable_pos_visibility'][ $variation_id ], $valid_options, true ) ) {
271275
$settings_instance = Settings::instance();
272276
$args = array(
273277
'post_type' => 'variations',

includes/Services/Settings.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,18 @@ public function update_visibility_settings( array $args ) {
493493
);
494494
}
495495

496+
// Define valid visibility options.
497+
$valid_options = array( 'pos_only', 'online_only', '' );
498+
499+
// Check if visibility is set and valid.
500+
if ( ! isset( $args['visibility'] ) || ! in_array( $args['visibility'], $valid_options, true ) ) {
501+
return new WP_Error(
502+
'woocommerce_pos_settings_error',
503+
__( 'Invalid visibility option provided', 'woocommerce-pos' ),
504+
array( 'status' => 400 )
505+
);
506+
}
507+
496508
$post_type = $args['post_type'];
497509
$scope = $args['scope'] ?? 'default';
498510
$visibility = $args['visibility'] ?? '';

readme.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Contributors: kilbot
33
Tags: ecommerce, point-of-sale, pos, inventory, woocommerce
44
Requires at least: 5.6
55
Tested up to: 6.5
6-
Stable tag: 1.6.2
6+
Stable tag: 1.6.3
77
License: GPL-3.0
88
License URI: http://www.gnu.org/licenses/gpl-3.0.html
99

@@ -80,6 +80,9 @@ There is more information on our website at [https://wcpos.com](https://wcpos.co
8080

8181
== Changelog ==
8282

83+
= 1.6.3 - 2024/06/29 =
84+
- Fix: Critical error preventing bulk update of products
85+
8386
= 1.6.2 - 2024/06/20 =
8487
- Fix: Error preventing resources (products, orders, customers, etc) from loading on Windows servers
8588

woocommerce-pos.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Plugin Name: WooCommerce POS
44
* Plugin URI: https://wordpress.org/plugins/woocommerce-pos/
55
* Description: A simple front-end for taking WooCommerce orders at the Point of Sale. Requires <a href="http://wordpress.org/plugins/woocommerce/">WooCommerce</a>.
6-
* Version: 1.6.2
6+
* Version: 1.6.3
77
* Author: kilbot
88
* Author URI: http://wcpos.com
99
* Text Domain: woocommerce-pos
@@ -24,7 +24,7 @@
2424
namespace WCPOS\WooCommercePOS;
2525

2626
// Define plugin constants.
27-
const VERSION = '1.6.2';
27+
const VERSION = '1.6.3';
2828
const PLUGIN_NAME = 'woocommerce-pos';
2929
const SHORT_NAME = 'wcpos';
3030
\define( __NAMESPACE__ . '\PLUGIN_FILE', plugin_basename( __FILE__ ) ); // 'woocommerce-pos/woocommerce-pos.php'

0 commit comments

Comments
 (0)