WC_Download_Handler::download_product PHP Méthode

download_product() public static méthode

Check if we need to download a file and check validity.
public static download_product ( )
    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());
    }