本文整理汇总了PHP中WC_Order::is_download_permitted方法的典型用法代码示例。如果您正苦于以下问题:PHP WC_Order::is_download_permitted方法的具体用法?PHP WC_Order::is_download_permitted怎么用?PHP WC_Order::is_download_permitted使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WC_Order
的用法示例。
在下文中一共展示了WC_Order::is_download_permitted方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: download_product
/**
* Check if we need to download a file and check validity
*/
public function download_product()
{
if (isset($_GET['download_file']) && isset($_GET['order']) && isset($_GET['email'])) {
global $wpdb;
$product_id = (int) $_GET['download_file'];
$order_key = $_GET['order'];
$email = sanitize_email(str_replace(' ', '+', $_GET['email']));
$download_id = isset($_GET['key']) ? preg_replace('/\\s+/', ' ', $_GET['key']) : '';
$_product = get_product($product_id);
if (!is_email($email)) {
wp_die(__('Invalid email address.', 'woocommerce') . ' <a href="' . esc_url(home_url()) . '" class="wc-forward">' . __('Go to homepage', 'woocommerce') . '</a>');
}
$query = "\n\t\t\t\tSELECT order_id,downloads_remaining,user_id,download_count,access_expires,download_id\n\t\t\t\tFROM " . $wpdb->prefix . "woocommerce_downloadable_product_permissions\n\t\t\t\tWHERE user_email = %s\n\t\t\t\tAND order_key = %s\n\t\t\t\tAND product_id = %s";
$args = array($email, $order_key, $product_id);
if ($download_id) {
// backwards compatibility for existing download URLs
$query .= " AND download_id = %s";
$args[] = $download_id;
}
$download_result = $wpdb->get_row($wpdb->prepare($query, $args));
if (!$download_result) {
wp_die(__('Invalid download.', 'woocommerce') . ' <a href="' . esc_url(home_url()) . '" class="wc-forward">' . __('Go to homepage', 'woocommerce') . '</a>');
}
$download_id = $download_result->download_id;
$order_id = $download_result->order_id;
$downloads_remaining = $download_result->downloads_remaining;
$download_count = $download_result->download_count;
$user_id = $download_result->user_id;
$access_expires = $download_result->access_expires;
if ($user_id && get_option('woocommerce_downloads_require_login') == 'yes') {
if (!is_user_logged_in()) {
wp_die(__('You must be logged in to download files.', 'woocommerce') . ' <a href="' . esc_url(wp_login_url(get_permalink(wc_get_page_id('myaccount')))) . '" class="wc-forward">' . __('Login', 'woocommerce') . '</a>', __('Log in to Download Files', 'woocommerce'));
} elseif (!current_user_can('download_file', $download_result)) {
wp_die(__('This is not your download link.', 'woocommerce'));
}
}
if (!get_post($product_id)) {
wp_die(__('Product no longer exists.', 'woocommerce') . ' <a href="' . esc_url(home_url()) . '" class="wc-forward">' . __('Go to homepage', 'woocommerce') . '</a>');
}
if ($order_id) {
$order = new WC_Order($order_id);
if (!$order->is_download_permitted() || $order->post_status != 'publish') {
wp_die(__('Invalid order.', 'woocommerce') . ' <a href="' . esc_url(home_url()) . '" class="wc-forward">' . __('Go to homepage', 'woocommerce') . '</a>');
}
}
if ($downloads_remaining == '0') {
wp_die(__('Sorry, you have reached your download limit for this file', 'woocommerce') . ' <a href="' . esc_url(home_url()) . '" class="wc-forward">' . __('Go to homepage', 'woocommerce') . '</a>');
}
if ($access_expires > 0 && strtotime($access_expires) < current_time('timestamp')) {
wp_die(__('Sorry, this download has expired', 'woocommerce') . ' <a href="' . esc_url(home_url()) . '" class="wc-forward">' . __('Go to homepage', 'woocommerce') . '</a>');
}
if ($downloads_remaining > 0) {
$wpdb->update($wpdb->prefix . "woocommerce_downloadable_product_permissions", array('downloads_remaining' => $downloads_remaining - 1), array('user_email' => $email, 'order_key' => $order_key, 'product_id' => $product_id, 'download_id' => $download_id), array('%d'), array('%s', '%s', '%d', '%s'));
}
// Count the download
$wpdb->update($wpdb->prefix . "woocommerce_downloadable_product_permissions", array('download_count' => $download_count + 1), array('user_email' => $email, 'order_key' => $order_key, 'product_id' => $product_id, 'download_id' => $download_id), array('%d'), array('%s', '%s', '%d', '%s'));
// Trigger action
do_action('woocommerce_download_product', $email, $order_key, $product_id, $user_id, $download_id, $order_id);
// Get the download URL and try to replace the url with a path
$file_path = $_product->get_file_download_path($download_id);
// Download it!
$this->download($file_path, $product_id);
}
}
示例2: woocommerce_download_product
/**
* Download a file - hook into init function.
*
* @access public
* @return void
*/
function woocommerce_download_product()
{
if (isset($_GET['download_file']) && isset($_GET['order']) && isset($_GET['email'])) {
global $wpdb, $is_IE;
$product_id = (int) urldecode($_GET['download_file']);
$order_key = urldecode($_GET['order']);
$email = sanitize_email(str_replace(' ', '+', urldecode($_GET['email'])));
$download_id = isset($_GET['key']) ? urldecode($_GET['key']) : '';
// backwards compatibility for existing download URLs
$_product = get_product($product_id);
$file_download_method = apply_filters('woocommerce_file_download_method', get_option('woocommerce_file_download_method'), $product_id);
if (!is_email($email)) {
wp_die(__('Invalid email address.', 'woocommerce') . ' <a href="' . home_url() . '">' . __('Go to homepage →', 'woocommerce') . '</a>');
}
$query = "\n\t\t\tSELECT order_id,downloads_remaining,user_id,download_count,access_expires,download_id\n\t\t\tFROM " . $wpdb->prefix . "woocommerce_downloadable_product_permissions\n\t\t\tWHERE user_email = %s\n\t\t\tAND order_key = %s\n\t\t\tAND product_id = %s";
$args = array($email, $order_key, $product_id);
if ($download_id) {
// backwards compatibility for existing download URLs
$query .= " AND download_id = %s";
$args[] = $download_id;
}
$download_result = $wpdb->get_row($wpdb->prepare($query, $args));
if (!$download_result) {
wp_die(__('Invalid download.', 'woocommerce') . ' <a href="' . home_url() . '">' . __('Go to homepage →', 'woocommerce') . '</a>');
}
$download_id = $download_result->download_id;
$order_id = $download_result->order_id;
$downloads_remaining = $download_result->downloads_remaining;
$download_count = $download_result->download_count;
$user_id = $download_result->user_id;
$access_expires = $download_result->access_expires;
if ($user_id && get_option('woocommerce_downloads_require_login') == 'yes') {
if (!is_user_logged_in()) {
wp_die(__('You must be logged in to download files.', 'woocommerce') . ' <a href="' . wp_login_url(get_permalink(woocommerce_get_page_id('myaccount'))) . '">' . __('Login →', 'woocommerce') . '</a>');
} elseif ($user_id != get_current_user_id()) {
wp_die(__('This is not your download link.', 'woocommerce'));
}
}
if (!get_post($product_id)) {
wp_die(__('Product no longer exists.', 'woocommerce') . ' <a href="' . home_url() . '">' . __('Go to homepage →', 'woocommerce') . '</a>');
}
if ($order_id) {
$order = new WC_Order($order_id);
if (!$order->is_download_permitted() || $order->post_status != 'publish') {
wp_die(__('Invalid order.', 'woocommerce') . ' <a href="' . home_url() . '">' . __('Go to homepage →', 'woocommerce') . '</a>');
}
}
if ($downloads_remaining == '0') {
wp_die(__('Sorry, you have reached your download limit for this file', 'woocommerce') . ' <a href="' . home_url() . '">' . __('Go to homepage →', 'woocommerce') . '</a>');
}
if ($access_expires > 0 && strtotime($access_expires) < current_time('timestamp')) {
wp_die(__('Sorry, this download has expired', 'woocommerce') . ' <a href="' . home_url() . '">' . __('Go to homepage →', 'woocommerce') . '</a>');
}
if ($downloads_remaining > 0) {
$wpdb->update($wpdb->prefix . "woocommerce_downloadable_product_permissions", array('downloads_remaining' => $downloads_remaining - 1), array('user_email' => $email, 'order_key' => $order_key, 'product_id' => $product_id, 'download_id' => $download_id), array('%d'), array('%s', '%s', '%d', '%s'));
}
// Count the download
$wpdb->update($wpdb->prefix . "woocommerce_downloadable_product_permissions", array('download_count' => $download_count + 1), array('user_email' => $email, 'order_key' => $order_key, 'product_id' => $product_id, 'download_id' => $download_id), array('%d'), array('%s', '%s', '%d', '%s'));
// Trigger action
do_action('woocommerce_download_product', $email, $order_key, $product_id, $user_id, $download_id, $order_id);
// Get the download URL and try to replace the url with a path
$file_path = $_product->get_file_download_path($download_id);
if (!$file_path) {
wp_die(__('No file defined', 'woocommerce') . ' <a href="' . home_url() . '">' . __('Go to homepage →', 'woocommerce') . '</a>');
}
// Redirect to the file...
if ($file_download_method == "redirect") {
header('Location: ' . $file_path);
exit;
}
// ...or serve it
if (!is_multisite()) {
/*
* Download file may be either http or https.
* site_url() depends on whether the page containing the download (ie; My Account) is served via SSL because WC
* modifies site_url() via a filter to force_ssl.
* So blindly doing a str_replace is incorrect because it will fail when schemes are mismatched. This code
* handles the various permutations.
*/
$scheme = parse_url($file_path, PHP_URL_SCHEME);
if ($scheme) {
$site_url = set_url_scheme(site_url(''), $scheme);
} else {
$site_url = is_ssl() ? str_replace('https:', 'http:', site_url()) : site_url();
}
$file_path = str_replace(trailingslashit($site_url), ABSPATH, $file_path);
} else {
$network_url = is_ssl() ? str_replace('https:', 'http:', network_admin_url()) : network_admin_url();
$upload_dir = wp_upload_dir();
// Try to replace network url
$file_path = str_replace(trailingslashit($network_url), ABSPATH, $file_path);
// Now try to replace upload URL
$file_path = str_replace($upload_dir['baseurl'], $upload_dir['basedir'], $file_path);
}
//.........这里部分代码省略.........
示例3: get_downloadable_products
/**
* Gets a user's downloadable products if they are logged in.
*
* @access public
* @return array Array of downloadable products
*/
public function get_downloadable_products()
{
global $wpdb;
$downloads = array();
$_product = null;
$order = null;
$file_number = 0;
if (is_user_logged_in()) {
// Get results from valid orders only
$results = $wpdb->get_results($wpdb->prepare("\n\t\t\t\tSELECT permissions.* \n\t\t\t\tFROM {$wpdb->prefix}woocommerce_downloadable_product_permissions as permissions\n\t\t\t\tLEFT JOIN {$wpdb->posts} as posts ON permissions.order_id = posts.ID\n\t\t\t\tWHERE user_id = %s \n\t\t\t\tAND permissions.order_id > 0\n\t\t\t\tAND posts.post_status = 'publish'\n\t\t\t\tAND \n\t\t\t\t\t(\n\t\t\t\t\t\tpermissions.downloads_remaining > 0\n\t\t\t\t\t\tOR \n\t\t\t\t\t\tpermissions.downloads_remaining = ''\n\t\t\t\t\t)\n\t\t\t\tAND \n\t\t\t\t\t(\n\t\t\t\t\t\tpermissions.access_expires IS NULL\n\t\t\t\t\t\tOR \n\t\t\t\t\t\tpermissions.access_expires >= %s\n\t\t\t\t\t)\n\t\t\t\tGROUP BY permissions.download_id\n\t\t\t\tORDER BY permissions.order_id, permissions.product_id, permissions.download_id;\n\t\t\t\t", get_current_user_id(), date('Y-m-d', current_time('timestamp'))));
if ($results) {
foreach ($results as $result) {
if (!$order || $order->id != $result->order_id) {
// new order
$order = new WC_Order($result->order_id);
$_product = null;
}
// Downloads permitted?
if (!$order->is_download_permitted()) {
continue;
}
if (!$_product || $_product->id != $result->product_id) {
// new product
$file_number = 0;
$_product = get_product($result->product_id);
}
// Check product exists and has the file
if (!$_product || !$_product->exists() || !$_product->has_file($result->download_id)) {
continue;
}
$download_file = $_product->get_file($result->download_id);
// Download name will be 'Product Name' for products with a single downloadable file, and 'Product Name - File X' for products with multiple files
$download_name = apply_filters('woocommerce_downloadable_product_name', $_product->get_title() . ' – ' . $download_file['name'], $_product, $result->download_id, $file_number);
$downloads[] = array('download_url' => add_query_arg(array('download_file' => $result->product_id, 'order' => $result->order_key, 'email' => $result->user_email, 'key' => $result->download_id), home_url('/', 'http')), 'download_id' => $result->download_id, 'product_id' => $result->product_id, 'download_name' => $download_name, 'order_id' => $order->id, 'order_key' => $order->order_key, 'downloads_remaining' => $result->downloads_remaining);
$file_number++;
}
}
}
return apply_filters('woocommerce_customer_get_downloadable_products', $downloads);
}
示例4: output_wc_start
private function output_wc_start()
{
global $product, $woocommerce;
$this->disable_export_btns = $product->is_downloadable() ? true : false;
//added to cart, recall added product
if (isset($_POST['fpd_product'])) {
$views = $_POST['fpd_product'];
$this->form_views = stripslashes($views);
} else {
if (isset($_GET['cart_item_key'])) {
//load from cart item
$cart = $woocommerce->cart->get_cart();
$cart_item = $cart[$_GET['cart_item_key']];
if ($cart_item) {
if (isset($cart_item['fpd_data'])) {
$views = $cart_item['fpd_data']['fpd_product'];
$this->form_views = stripslashes($views);
}
} else {
//cart item could not be found
echo '<p><strong>';
_e('Sorry, but the cart item could not be found!', 'radykal');
echo '</strong></p>';
return;
}
} else {
if (isset($_GET['order']) && isset($_GET['item_id'])) {
//load ordered product in designer
$order = new WC_Order($_GET['order']);
$item_meta = $order->get_item_meta($_GET['item_id'], 'fpd_data');
$this->form_views = $item_meta[0]["fpd_product"];
if ($product->is_downloadable() && $order->is_download_permitted()) {
$this->disable_export_btns = false;
?>
<br />
<a href="#" id="fpd-extern-download-pdf"><?php
echo fpd_get_option('fpd_label_downLoadPDF');
?>
</a>
<?php
}
} else {
if (isset($_GET['share_id'])) {
$transient_key = 'fpd_share_' . $_GET['share_id'];
$transient_val = get_transient($transient_key);
if ($transient_val !== false) {
$this->form_views = stripslashes($transient_val['product']);
}
}
}
}
}
}
示例5: get_downloadable_products
/**
* Gets a user's downloadable products if they are logged in.
*
* @access public
* @return array Array of downloadable products
*/
public function get_downloadable_products()
{
global $wpdb, $woocommerce;
$downloads = array();
if (is_user_logged_in()) {
$user_info = get_userdata(get_current_user_id());
$results = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . $wpdb->prefix . "woocommerce_downloadable_product_permissions WHERE user_id = '%s' ORDER BY order_id, product_id, download_id", get_current_user_id()));
$_product = null;
$order = null;
$file_number = 0;
if ($results) {
foreach ($results as $result) {
if ($result->order_id > 0) {
if (!$order || $order->id != $result->order_id) {
// new order
$order = new WC_Order($result->order_id);
$_product = null;
}
// order exists and downloads permitted?
if (!$order->id || !$order->is_download_permitted() || $order->post_status != 'publish') {
continue;
}
if (!$_product || $_product->id != $result->product_id) {
// new product
$file_number = 0;
$_product = get_product($result->product_id);
}
if (!$_product || !$_product->exists()) {
continue;
}
if (!$_product->has_file($result->download_id)) {
continue;
}
// Download name will be 'Product Name' for products with a single downloadable file, and 'Product Name - File X' for products with multiple files
$download_name = apply_filters('woocommerce_downloadable_product_name', $_product->get_title() . ($file_number > 0 ? ' — ' . sprintf(__('File %d', 'woocommerce'), $file_number + 1) : ''), $_product, $result->download_id, $file_number);
// Rename previous download with file number if there are multiple files only
if ($file_number == 1) {
$previous_result =& $downloads[count($downloads) - 1];
$previous_product = get_product($previous_result['product_id']);
$previous_result['download_name'] = apply_filters('woocommerce_downloadable_product_name', $previous_result['download_name'] . ' — ' . sprintf(__('File %d', 'woocommerce'), $file_number), $previous_product, $previous_result['download_id'], 0);
}
$downloads[] = array('download_url' => add_query_arg(array('download_file' => $result->product_id, 'order' => $result->order_key, 'email' => $result->user_email, 'key' => $result->download_id), trailingslashit(home_url('', 'http'))), 'download_id' => $result->download_id, 'product_id' => $result->product_id, 'download_name' => $download_name, 'order_id' => $order->id, 'order_key' => $order->order_key, 'downloads_remaining' => $result->downloads_remaining);
$file_number++;
}
}
}
}
return apply_filters('woocommerce_customer_get_downloadable_products', $downloads);
}
示例6:
/**
* Test: is_download_permitted
*/
function test_is_download_permitted()
{
$object = new WC_Order();
$object->set_status('pending');
$this->assertFalse($object->is_download_permitted());
$object->set_status('completed');
$this->assertTrue($object->is_download_permitted());
}
示例7: array
/**
* Get HTML for the order items to be shown in emails.
* @param WC_Order $order
* @param array $args
* @since 2.7.0
*/
function wc_get_email_order_items($order, $args = array())
{
ob_start();
$defaults = array('show_sku' => false, 'show_image' => false, 'image_size' => array(32, 32), 'plain_text' => false, 'sent_to_admin' => false);
$args = wp_parse_args($args, $defaults);
$template = $args['plain_text'] ? 'emails/plain/email-order-items.php' : 'emails/email-order-items.php';
wc_get_template($template, array('order' => $order, 'items' => $order->get_items(), 'show_download_links' => $order->is_download_permitted(), 'show_sku' => $args['show_sku'], 'show_purchase_note' => $order->is_paid(), 'show_image' => $args['show_image'], 'image_size' => $args['image_size'], 'plain_text' => $args['plain_text'], 'sent_to_admin' => $args['sent_to_admin']));
return apply_filters('woocommerce_email_order_items_table', ob_get_clean(), $order);
}