public static function download_product()
{
$product_id = absint($_GET['download_file']);
$product = wc_get_product($product_id);
$data_store = WC_Data_Store::load('customer-download');
if (!$product || !isset($_GET['key'], $_GET['order'])) {
self::download_error(__('Invalid download link.', 'woocommerce'));
}
$download_ids = $data_store->get_downloads(array('user_email' => sanitize_email(str_replace(' ', '+', $_GET['email'])), 'order_key' => wc_clean($_GET['order']), 'product_id' => $product_id, 'download_id' => wc_clean(preg_replace('/\\s+/', ' ', $_GET['key'])), 'orderby' => 'downloads_remaining', 'order' => 'DESC', 'limit' => 1, 'return' => 'ids'));
if (empty($download_ids)) {
self::download_error(__('Invalid download link.', 'woocommerce'));
}
$download = new WC_Customer_Download(current($download_ids));
self::check_order_is_valid($download);
self::check_downloads_remaining($download);
self::check_download_expiry($download);
self::check_download_login_required($download);
do_action('woocommerce_download_product', $download->get_user_email(), $download->get_order_key(), $download->get_product_id(), $download->get_user_id(), $download->get_download_id(), $download->get_order_id());
$count = $download->get_download_count();
$remaining = $download->get_downloads_remaining();
$download->set_download_count($count++);
$download->set_downloads_remaining($remaining--);
$download->save();
self::download($product->get_file_download_path($download->get_download_id()), $download->get_product_id());
}