function membership_upload_path() { $path = get_option('membership_fileupload_url', ''); if (empty($path)) { return membership_wp_upload_dir(); } else { return trailingslashit($path); } }
function output_file($pathtofile) { global $wpdb, $M_options; // The directory and direct path dir $uploadpath = membership_wp_upload_dir(); $file = trailingslashit($uploadpath) . $pathtofile; // The url and direct url $origpath = membership_upload_url(); $trueurl = trailingslashit($origpath) . $pathtofile; if (!is_file($file)) { status_header(404); die('404 — File not found.'); } $mime = wp_check_filetype($file); if (false === $mime['type'] && function_exists('mime_content_type')) { $mime['type'] = mime_content_type($file); } if ($mime['type']) { $mimetype = $mime['type']; } else { $mimetype = 'image/' . substr($trueurl, strrpos($trueurl, '.') + 1); } header('Content-type: ' . $mimetype); // always send this if (false === strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS')) { header('Content-Length: ' . filesize($file)); } $last_modified = gmdate('D, d M Y H:i:s', filemtime($file)); $etag = '"' . md5($last_modified) . '"'; header("Last-Modified: {$last_modified} GMT"); header('ETag: ' . $etag); header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 100000000) . ' GMT'); // Support for Conditional GET $client_etag = isset($_SERVER['HTTP_IF_NONE_MATCH']) ? stripslashes($_SERVER['HTTP_IF_NONE_MATCH']) : false; if (!isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { $_SERVER['HTTP_IF_MODIFIED_SINCE'] = false; } $client_last_modified = trim($_SERVER['HTTP_IF_MODIFIED_SINCE']); // If string is empty, return 0. If not, attempt to parse into a timestamp $client_modified_timestamp = $client_last_modified ? strtotime($client_last_modified) : 0; // Make a timestamp for our most recent modification... $modified_timestamp = strtotime($last_modified); if ($client_last_modified && $client_etag ? $client_modified_timestamp >= $modified_timestamp && $client_etag == $etag : $client_modified_timestamp >= $modified_timestamp || $client_etag == $etag) { status_header(304); exit; } // If we made it this far, just serve the file readfile($file); }