oont-contents/plugins/woocommerce-square/includes/Handlers/Async_Request.php
2025-02-08 15:10:23 +01:00

72 lines
2 KiB
PHP

<?php
/**
* WooCommerce Square
*
* This source file is subject to the GNU General Public License v3.0
* that is bundled with this package in the file license.txt.
* It is also available through the world-wide-web at this URL:
* http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 or later
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@woocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade WooCommerce Square to newer
* versions in the future. If you wish to customize WooCommerce Square for your
* needs please refer to https://docs.woocommerce.com/document/woocommerce-square/
*
*/
namespace WooCommerce\Square\Handlers;
defined( 'ABSPATH' ) || exit;
if ( ! class_exists( '\\WP_Async_Request', false ) && defined( 'WC_ABSPATH' ) ) {
include_once WC_ABSPATH . 'includes/libraries/wp-async-request.php';
}
if ( class_exists( '\\WP_Async_Request', false ) ) :
/**
* Async_Request class
*
* @extends \WP_Async_Request
* @package WooCommerce\Square\Handlers
*
* @since 4.1.0
*/
class Async_Request extends \WP_Async_Request {
/**
* Prefix
*
* @var string
*/
protected $prefix = 'wc_square';
/**
* Action
*
* @var string
*/
protected $action = 'async_request';
/**
* Handle a dispatched request.
*/
protected function handle() {
// Sync inventory for products.
$product_ids = isset( $_POST['product_ids'] ) ? array_map( 'absint', $_POST['product_ids'] ) : array(); // phpcs:ignore WordPress.Security.NonceVerification
if ( empty( $product_ids ) ) {
return;
}
try {
// Update products stock from Square.
Product::update_products_stock_from_square( $product_ids );
} catch ( \Exception $exception ) {
wc_square()->log( 'Error in sync inventory for products: ' . implode( ',', $product_ids ) . '. ' . $exception->getMessage() );
}
}
}
endif;