![]() Server : Apache/2.4.52 (Ubuntu) System : Linux webserver 6.8.0-49-generic #49~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Nov 6 17:42:15 UTC 2 x86_64 User : www-data ( 33) PHP Version : 8.1.2-1ubuntu2.21 Disable Function : NONE Directory : /var/www/theprintave/wp-content/plugins/dokan-lite/includes/Order/ |
<?php namespace WeDevs\Dokan\Order; use WeDevs\Dokan\Cache; use WeDevs\Dokan\Withdraw\WithdrawCache; /** * Order Cache class. * * Manage all caches for order related functionalities. * * @since 3.3.2 * * @see \WeDevs\Dokan\Cache */ class OrderCache { public function __construct() { add_action( 'dokan_checkout_update_order_meta', [ $this, 'reset_seller_order_data' ], 10, 2 ); add_action( 'woocommerce_order_status_changed', [ $this, 'reset_order_cache' ], 10 ); add_action( 'woocommerce_new_order', [ $this, 'reset_order_cache' ], 10, 1 ); add_action( 'woocommerce_update_order', [ $this, 'reset_order_cache' ], 10 ); add_action( 'woocommerce_order_refunded', [ $this, 'reset_order_cache' ], 10 ); add_action( 'wp_trash_post', [ $this, 'reset_cache_before_deleting_order' ], 20 ); add_action( 'before_delete_post', [ $this, 'reset_cache_before_deleting_order' ], 20 ); add_action( 'woocommerce_new_order', [ $this, 'clear_product_cache' ], 10, 1 ); add_action( 'woocommerce_update_order', [ $this, 'clear_product_cache' ], 10, 1 ); } /** * Delete order cache * * @since 3.3.2 * * @param int $seller_id * @param int|null $order_id * * @return void */ public static function delete( $seller_id, $order_id = null ) { Cache::invalidate_group( 'seller_order_data' ); Cache::invalidate_group( "seller_order_data_{$seller_id}" ); // Remove cached seller_id after an woocommerce order if ( ! empty( $order_id ) ) { Cache::delete( "get_seller_id_by_order_{$order_id}" ); } // Remove withdraw cache WithdrawCache::delete( $seller_id ); // delete report cache Cache::invalidate_transient_group( "report_data_seller_{$seller_id}" ); } /** * Reset cache group related to seller orders. * * @since 3.3.2 * * @param int $order_id * @param int $seller_id * * @return void */ public function reset_seller_order_data( $order_id, $seller_id ) { self::delete( $seller_id, $order_id ); } /** * Reset cache data on update WooCommerce order. * * @since 3.3.2 * * @param int $order_id * * @return void */ public function reset_order_cache( $order_id ) { $seller_id = dokan_get_seller_id_by_order( $order_id ); self::delete( $seller_id, $order_id ); } /** * Reset cache data on deleting WooCommerce order. * * @since 3.3.2 * * @param int $order_id * * @return void */ public function reset_cache_before_deleting_order( $order_id ) { // wp_trash_post and delete_post is generic hooks and will be called for each product delete // we are making sure $order_id is a valid order $order = wc_get_order( $order_id ); if ( ! $order ) { return; } $seller_id = dokan_get_seller_id_by_order( $order_id ); self::delete( $seller_id, $order_id ); } /** * This method will delete vendors best-selling product cache after a new order has been made * * @since 3.2.11 * @since 3.8.0 Moved this function from includes/wc-functions.php * * @param int $post_id */ public function clear_product_cache( $order_id ) { $order = wc_get_order( $order_id ); if ( ! $order ) { return; } // check if order has suborder if ( $order->get_meta( 'has_sub_order' ) ) { // same hooks will be called for individual sub orders return; } // get vendor id from order $seller_id = dokan_get_seller_id_by_order( $order_id ); if ( empty( $seller_id ) ) { return; } $cache_group = "seller_product_data_$seller_id"; Cache::invalidate_group( $cache_group ); } }