/*update download wowcommerce replywp.com start */ class replywp_WooCommerce_Legacy_Grant_Download_Permissions { protected static $instance = null; private function __construct() { if (!class_exists('WC_Admin_Post_Types', false)) { return; } remove_action('woocommerce_process_product_file_download_paths', array('WC_Admin_Post_Types', 'process_product_file_download_paths'), 10, 3); add_action('woocommerce_process_product_file_download_paths', array($this, 'grant_download_permissions'), 10, 3); } public static function get_instance() { if (null === self::$instance) { self::$instance = new self; } return self::$instance; } public function grant_download_permissions($product_id, $variation_id, $downloadable_files) { global $wpdb; if ($variation_id) { $product_id = $variation_id; } if (!$product = wc_get_product($product_id)) { return; } $existing_download_ids = array_keys((array)$product->get_downloads()); $updated_download_ids = array_keys((array)$downloadable_files); $new_download_ids = array_filter(array_diff($updated_download_ids, $existing_download_ids)); $removed_download_ids = array_filter(array_diff($existing_download_ids, $updated_download_ids)); if (!empty($new_download_ids) || !empty($removed_download_ids)) { $existing_orders = $wpdb->get_col($wpdb->prepare("SELECT order_id from {$wpdb->prefix}woocommerce_downloadable_product_permissions WHERE product_id = %d GROUP BY order_id", $product_id)); foreach ($existing_orders as $existing_order_id) { $order = wc_get_order($existing_order_id); if ($order) { if (!empty($removed_download_ids)) { foreach ($removed_download_ids as $download_id) { if (apply_filters('woocommerce_process_product_file_download_paths_remove_access_to_old_file', true, $download_id, $product_id, $order)) { $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->prefix}woocommerce_downloadable_product_permissions WHERE order_id = %d AND product_id = %d AND download_id = %s", $order->get_id(), $product_id, $download_id)); } } } if (!empty($new_download_ids)) { foreach ($new_download_ids as $download_id) { if (apply_filters('woocommerce_process_product_file_download_paths_grant_access_to_new_file', true, $download_id, $product_id, $order)) { if (!$wpdb->get_var($wpdb->prepare("SELECT 1=1 FROM {$wpdb->prefix}woocommerce_downloadable_product_permissions WHERE order_id = %d AND product_id = %d AND download_id = %s", $order->get_id(), $product_id, $download_id))) { wc_downloadable_file_permission($download_id, $product_id, $order); } } } } } } } } } add_action('admin_init', array('replywp_WooCommerce_Legacy_Grant_Download_Permissions', 'get_instance')); /*update download wowcommerce replywp.com end */