/** * handle_downloads. * * @version 2.2.2 * @since 2.2.2 */ public function handle_downloads() { if (isset($_GET['wcj_download_file'])) { $file_name = $_GET['wcj_download_file']; $upload_dir = wcj_get_wcj_uploads_dir('input_fields_uploads'); $file_path = $upload_dir . '/' . $file_name; if (is_super_admin() || is_shop_manager()) { header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private", false); header('Content-disposition: attachment; filename=' . $file_name); header("Content-Transfer-Encoding: binary"); header("Content-Length: " . filesize($file_path)); readfile($file_path); exit; } } }
/** * add_product_input_fields_to_order_item_meta. */ public function add_product_input_fields_to_order_item_meta($item_id, $values, $cart_item_key) { $total_number = apply_filters('wcj_get_option_filter', 1, $this->get_value('wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $values['product_id'], 1)); for ($i = 1; $i <= $total_number; $i++) { if (array_key_exists('wcj_product_input_fields_' . $this->scope . '_' . $i, $values)) { $type = $this->get_value('wcj_product_input_fields_type_' . $this->scope . '_' . $i, $values['product_id'], ''); $input_field_value = $values['wcj_product_input_fields_' . $this->scope . '_' . $i]; if ('file' === $type) { $tmp_name = $input_field_value['tmp_name']; $ext = pathinfo($input_field_value['name'], PATHINFO_EXTENSION); $name = $item_id . '.' . $ext; //$input_field_value['name']; $upload_dir = wcj_get_wcj_uploads_dir('input_fields_uploads'); if (!file_exists($upload_dir)) { mkdir($upload_dir, 0755, true); } //$upload_dir = ( wp_mkdir_p( $upload_dir['path'] ) ) ? $upload_dir['path'] : $upload_dir['basedir']; $upload_dir_and_name = $upload_dir . '/' . $name; //move_uploaded_file( $tmp_name, $upload_dir_and_name ); $file_data = file_get_contents($tmp_name); file_put_contents($upload_dir_and_name, $file_data); unlink($tmp_name); //unset( $input_field_value['tmp_name'] ); $input_field_value['tmp_name'] = $upload_dir_and_name; $input_field_value['wcj_type'] = 'file'; //$orig_file_name = $input_field_value['name']; //wc_add_order_item_meta( $item_id, '_wcj_product_input_fields_' . $this->scope . '_' . $i . '_orig_file_name', $orig_file_name ); //$input_field_value = '<a href="' . add_query_arg( 'wcj_download_file', $name ) . '">' . $orig_file_name . '</a>'; //$input_field_value = $orig_file_name; } wc_add_order_item_meta($item_id, '_wcj_product_input_fields_' . $this->scope . '_' . $i, $input_field_value); } } }
/** * process_checkout_files_upload. * * @version 2.5.0 * @since 2.4.5 */ function process_checkout_files_upload() { if (!session_id()) { session_start(); } // Remove file $total_number = apply_filters('booster_get_option', 1, get_option('wcj_checkout_files_upload_total_number', 1)); for ($i = 1; $i <= $total_number; $i++) { if (isset($_POST['wcj_remove_checkout_file_' . $i])) { if (isset($_POST['wcj_checkout_files_upload_order_id_' . $i])) { $order_id = $_POST['wcj_checkout_files_upload_order_id_' . $i]; $order_file_name = get_post_meta($order_id, '_' . 'wcj_checkout_files_upload_' . $i, true); if ('' != $order_file_name) { $file_path = wcj_get_wcj_uploads_dir('checkout_files_upload') . '/' . $order_file_name; unlink($file_path); $file_name = get_post_meta($order_id, '_' . 'wcj_checkout_files_upload_real_name_' . $i, true); wc_add_notice(sprintf(get_option('wcj_checkout_files_upload_notice_success_remove_' . $i, __('File "%s" was successfully removed.', 'woocommerce-jetpack')), $file_name)); delete_post_meta($order_id, '_' . 'wcj_checkout_files_upload_' . $i); delete_post_meta($order_id, '_' . 'wcj_checkout_files_upload_real_name_' . $i); } } else { $file_name = 'wcj_checkout_files_upload_' . $i; unlink($_SESSION[$file_name]['tmp_name']); wc_add_notice(sprintf(get_option('wcj_checkout_files_upload_notice_success_remove_' . $i, __('File "%s" was successfully removed.', 'woocommerce-jetpack')), $_SESSION[$file_name]['name'])); unset($_SESSION[$file_name]); } } } // Upload file for ($i = 1; $i <= $total_number; $i++) { if (isset($_POST['wcj_upload_checkout_file_' . $i])) { $file_name = 'wcj_checkout_files_upload_' . $i; if (isset($_FILES[$file_name]) && '' != $_FILES[$file_name]['tmp_name']) { // Validate $is_valid = true; if ('' != ($file_accept = get_option('wcj_checkout_files_upload_file_accept_' . $i, '')) && isset($_FILES[$file_name])) { // Validate file type $file_accept = explode(',', $file_accept); if (is_array($file_accept) && !empty($file_accept)) { $real_file_name = $_FILES[$file_name]['name']; $file_type = '.' . pathinfo($real_file_name, PATHINFO_EXTENSION); if (!in_array($file_type, $file_accept)) { wc_add_notice(sprintf(get_option('wcj_checkout_files_upload_notice_wrong_file_type_' . $i, __('Wrong file type: "%s"!', 'woocommerce-jetpack')), $real_file_name), 'error'); $is_valid = false; } } } if ($is_valid) { // To session $_SESSION[$file_name] = $_FILES[$file_name]; $tmp_dest_file = tempnam(sys_get_temp_dir(), 'wcj'); move_uploaded_file($_SESSION[$file_name]['tmp_name'], $tmp_dest_file); $_SESSION[$file_name]['tmp_name'] = $tmp_dest_file; wc_add_notice(sprintf(get_option('wcj_checkout_files_upload_notice_success_upload_' . $i, __('File "%s" was successfully uploaded.', 'woocommerce-jetpack')), $_SESSION[$file_name]['name'])); // To order if (isset($_POST['wcj_checkout_files_upload_order_id_' . $i])) { $this->add_files_to_order($_POST['wcj_checkout_files_upload_order_id_' . $i], null); } } } else { wc_add_notice(get_option('wcj_checkout_files_upload_notice_upload_no_file_' . $i, __('Please select file to upload!', 'woocommerce-jetpack')), 'notice'); } } } // Admin file download if (isset($_GET['wcj_download_checkout_file_admin'])) { $tmp_file_name = wcj_get_wcj_uploads_dir('checkout_files_upload') . '/' . $_GET['wcj_download_checkout_file_admin']; $file_name = get_post_meta($_GET['post'], '_' . 'wcj_checkout_files_upload_real_name_' . $_GET['wcj_checkout_file_number'], true); if (wcj_is_user_role('administrator') || is_shop_manager()) { header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private", false); header('Content-disposition: attachment; filename=' . $file_name); header("Content-Transfer-Encoding: binary"); header("Content-Length: " . filesize($tmp_file_name)); readfile($tmp_file_name); exit; } } // User file download if (isset($_GET['wcj_download_checkout_file']) && isset($_GET['_wpnonce']) && false !== wp_verify_nonce($_GET['_wpnonce'], 'wcj_download_checkout_file')) { $i = $_GET['wcj_download_checkout_file']; if (isset($_GET['order-received']) || isset($_GET['view-order'])) { $order_id = isset($_GET['order-received']) ? $_GET['order-received'] : $_GET['view-order']; $the_order = wc_get_order($order_id); if (!$the_order->key_is_valid($_GET['key'])) { return; } $order_file_name = get_post_meta($order_id, '_' . 'wcj_checkout_files_upload_' . $i, true); $tmp_file_name = wcj_get_wcj_uploads_dir('checkout_files_upload') . '/' . $order_file_name; $file_name = get_post_meta($order_id, '_' . 'wcj_checkout_files_upload_real_name_' . $i, true); } else { $tmp_file_name = $_SESSION['wcj_checkout_files_upload_' . $i]['tmp_name']; $file_name = $_SESSION['wcj_checkout_files_upload_' . $i]['name']; } header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private", false); header('Content-disposition: attachment; filename=' . $file_name); header("Content-Transfer-Encoding: binary"); header("Content-Length: " . filesize($tmp_file_name)); readfile($tmp_file_name); exit; } }