mod_xsendfile
This commit is contained in:
parent
7d980111de
commit
89a289b0c4
|
@ -153,6 +153,14 @@ $woocommerce_settings['general'] = apply_filters('woocommerce_general_settings',
|
|||
'type' => 'checkbox'
|
||||
),
|
||||
|
||||
array(
|
||||
'name' => __('File downloads', 'woothemes'),
|
||||
'desc' => __('Use <code>X-Accel-Redirect</code>/ <code>X-Sendfile</code> to serve downloads (server requires <code>mod_xsendfile</code>)', 'woothemes'),
|
||||
'id' => 'woocommerce_mod_xsendfile_enabled',
|
||||
'type' => 'checkbox',
|
||||
'std' => 'no',
|
||||
),
|
||||
|
||||
array( 'type' => 'sectionend', 'id' => 'general_options'),
|
||||
|
||||
array( 'name' => __( 'ShareThis', 'woothemes' ), 'type' => 'title', 'desc' => '', 'id' => 'share_this' ),
|
||||
|
|
|
@ -99,6 +99,7 @@ Yes you can! Join in on our GitHub repository :) https://github.com/woothemes/wo
|
|||
* add_to_cart shortcode
|
||||
* Improved order search
|
||||
* Option to unforce SSL checkout
|
||||
* Support for X-Accel-Redirect / X-Sendfile for downloads
|
||||
|
||||
= 1.2 - 03/11/2011 =
|
||||
* Added quick status change buttons (processing/complete) to orders panel
|
||||
|
|
|
@ -760,13 +760,21 @@ function woocommerce_download_product() {
|
|||
default: $ctype="application/force-download";
|
||||
endswitch;
|
||||
|
||||
// Headers
|
||||
if (get_option('woocommerce_mod_xsendfile_enabled')=='yes') :
|
||||
|
||||
header("X-Accel-Redirect: $file_path");
|
||||
header("X-Sendfile: $file_path");
|
||||
header("Content-Type: $ctype");
|
||||
header("Content-Disposition: attachment; filename=\"".basename($file_path)."\";");
|
||||
exit;
|
||||
|
||||
endif;
|
||||
|
||||
@session_write_close();
|
||||
if (function_exists('apache_setenv')) @apache_setenv('no-gzip', 1);
|
||||
@ini_set('zlib.output_compression', 'Off');
|
||||
@set_time_limit(0);
|
||||
@set_magic_quotes_runtime(0);
|
||||
|
||||
@ob_end_clean();
|
||||
if (ob_get_level()) @ob_end_clean(); // Zip corruption fix
|
||||
|
||||
|
@ -776,15 +784,7 @@ function woocommerce_download_product() {
|
|||
header("Robots: none");
|
||||
header("Content-Type: ".$ctype."");
|
||||
header("Content-Description: File Transfer");
|
||||
|
||||
if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
|
||||
// workaround for IE filename bug with multiple periods / multiple dots in filename
|
||||
$iefilename = preg_replace('/\./', '%2e', basename($file_path), substr_count(basename($file_path), '.') - 1);
|
||||
header("Content-Disposition: attachment; filename=\"".$iefilename."\";");
|
||||
} else {
|
||||
header("Content-Disposition: attachment; filename=\"".basename($file_path)."\";");
|
||||
}
|
||||
|
||||
header("Content-Disposition: attachment; filename=\"".basename($file_path)."\";");
|
||||
header("Content-Transfer-Encoding: binary");
|
||||
|
||||
if ($size = @filesize($file_path)) header("Content-Length: ".$size);
|
||||
|
@ -796,8 +796,6 @@ function woocommerce_download_product() {
|
|||
|
||||
else :
|
||||
|
||||
if (!file_exists($file_path)) wp_die( sprintf(__('File not found. <a href="%s">Go to homepage →</a>', 'woothemes'), home_url()) );
|
||||
|
||||
@readfile_chunked("$file_path") or wp_die( sprintf(__('File not found. <a href="%s">Go to homepage →</a>', 'woothemes'), home_url()) );
|
||||
|
||||
endif;
|
||||
|
|
Loading…
Reference in New Issue