/** * Has Active Discounts * * Checks if there is any active discounts, returns a boolean. * * @access public * @since 1.0 * @return boolean */ function edd_has_active_discounts() { $has_active = false; $discounts = edd_get_discounts(); if ($discounts) { foreach ($discounts as $discount) { if ($discount->post_status == 'active' && !edd_is_discount_expired(edd_get_discount_code($discount->ID))) { $has_active = true; break; } } } return $has_active; }
/** * Discounts short code * * Displays a list of all the active discounts. The active discounts can be configured * from the Discount Codes admin screen. * * @since 1.0.8.2 * @param array $atts Shortcode attributes * @param string $content * @uses edd_get_discounts() * @return string $discounts_lists List of all the active discount codes */ function edd_discounts_shortcode($atts, $content = null) { $discounts = edd_get_discounts(); if (!$discounts && edd_has_active_discounts()) { return; } $discounts_list = '<ul id="edd_discounts_list">'; foreach ($discounts as $discount) { if (edd_is_discount_active($discount->ID)) { $discounts_list .= '<li class="edd_discount">'; $discounts_list .= '<span class="edd_discount_name">' . edd_get_discount_code($discount->ID) . '</span>'; $discounts_list .= '<span class="edd_discount_separator"> - </span>'; $discounts_list .= '<span class="edd_discount_amount">' . edd_format_discount_rate(edd_get_discount_type($discount->ID), edd_get_discount_amount($discount->ID)) . '</span>'; $discounts_list .= '</li>'; } } $discounts_list .= '</ul>'; return $discounts_list; }
/** * Process Get Discounts API Request * * @access public * @since 1.6 * @global object $wpdb Used to query the database using the WordPress * Database API * @param int $discount Discount ID * @return array $discounts Multidimensional array of the discounts */ public function get_discounts($discount = null) { $discount_list = array(); if (!user_can($this->user_id, 'manage_shop_discounts') && !$this->override) { return $discount_list; } $error = array(); if (empty($discount)) { global $wpdb; $paged = $this->get_paged(); $per_page = $this->per_page(); $discounts = edd_get_discounts(array('posts_per_page' => $per_page, 'paged' => $paged)); $count = 0; if (empty($discounts)) { $error['error'] = __('No discounts found!', 'easy-digital-downloads'); return $error; } foreach ($discounts as $discount) { $discount_list['discounts'][$count]['ID'] = $discount->ID; $discount_list['discounts'][$count]['name'] = $discount->post_title; $discount_list['discounts'][$count]['code'] = edd_get_discount_code($discount->ID); $discount_list['discounts'][$count]['amount'] = edd_get_discount_amount($discount->ID); $discount_list['discounts'][$count]['min_price'] = edd_get_discount_min_price($discount->ID); $discount_list['discounts'][$count]['type'] = edd_get_discount_type($discount->ID); $discount_list['discounts'][$count]['uses'] = edd_get_discount_uses($discount->ID); $discount_list['discounts'][$count]['max_uses'] = edd_get_discount_max_uses($discount->ID); $discount_list['discounts'][$count]['start_date'] = edd_get_discount_start_date($discount->ID); $discount_list['discounts'][$count]['exp_date'] = edd_get_discount_expiration($discount->ID); $discount_list['discounts'][$count]['status'] = $discount->post_status; $discount_list['discounts'][$count]['product_requirements'] = edd_get_discount_product_reqs($discount->ID); $discount_list['discounts'][$count]['requirement_condition'] = edd_get_discount_product_condition($discount->ID); $discount_list['discounts'][$count]['global_discount'] = edd_is_discount_not_global($discount->ID); $discount_list['discounts'][$count]['single_use'] = edd_discount_is_single_use($discount->ID); $count++; } } else { if (is_numeric($discount) && get_post($discount)) { $discount_list['discounts'][0]['ID'] = $discount; $discount_list['discounts'][0]['name'] = get_post_field('post_title', $discount); $discount_list['discounts'][0]['code'] = edd_get_discount_code($discount); $discount_list['discounts'][0]['amount'] = edd_get_discount_amount($discount); $discount_list['discounts'][0]['min_price'] = edd_get_discount_min_price($discount); $discount_list['discounts'][0]['type'] = edd_get_discount_type($discount); $discount_list['discounts'][0]['uses'] = edd_get_discount_uses($discount); $discount_list['discounts'][0]['max_uses'] = edd_get_discount_max_uses($discount); $discount_list['discounts'][0]['start_date'] = edd_get_discount_start_date($discount); $discount_list['discounts'][0]['exp_date'] = edd_get_discount_expiration($discount); $discount_list['discounts'][0]['status'] = get_post_field('post_status', $discount); $discount_list['discounts'][0]['product_requirements'] = edd_get_discount_product_reqs($discount); $discount_list['discounts'][0]['requirement_condition'] = edd_get_discount_product_condition($discount); $discount_list['discounts'][0]['global_discount'] = edd_is_discount_not_global($discount); $discount_list['discounts'][0]['single_use'] = edd_discount_is_single_use($discount); } else { $error['error'] = sprintf(__('Discount %s not found!', 'easy-digital-downloads'), $discount); return $error; } } return $discount_list; }
/** * Discounts short code * * Displays a list of all the active discounts. The active discounts can be configured * from the Discount Codes admin screen. * * @since 1.0.8.2 * @param array $atts Shortcode attributes * @param string $content * @uses edd_get_discounts() * @return string $discounts_lists List of all the active discount codes */ function edd_discounts_shortcode($atts, $content = null) { $discounts = edd_get_discounts(); $discounts_list = '<ul id="edd_discounts_list">'; if (!empty($discounts) && edd_has_active_discounts()) { foreach ($discounts as $discount) { if (edd_is_discount_active($discount->ID)) { $discounts_list .= '<li class="edd_discount">'; $discounts_list .= '<span class="edd_discount_name">' . edd_get_discount_code($discount->ID) . '</span>'; $discounts_list .= '<span class="edd_discount_separator"> - </span>'; $discounts_list .= '<span class="edd_discount_amount">' . edd_format_discount_rate(edd_get_discount_type($discount->ID), edd_get_discount_amount($discount->ID)) . '</span>'; $discounts_list .= '</li>'; } } } else { $discounts_list .= '<li class="edd_discount">' . __('No discounts found', 'easy-digital-downloads') . '</li>'; } $discounts_list .= '</ul>'; return $discounts_list; }
</p> </td> </tr> <?php do_action('edd_edit_discount_form_before_code', $discount_id, $discount); ?> <tr> <th scope="row" valign="top"> <label for="edd-code"><?php _e('Code', 'edd'); ?> </label> </th> <td> <input type="text" id="edd-code" name="code" value="<?php echo esc_attr(edd_get_discount_code($discount_id)); ?> " style="width: 300px;"/> <p class="description"><?php _e('Enter a code for this discount, such as 10PERCENT', 'edd'); ?> </p> </td> </tr> <?php do_action('edd_edit_discount_form_before_type', $discount_id, $discount); ?> <tr> <th scope="row" valign="top"> <label for="edd-type"><?php _e('Type', 'edd');
/** * Retrieve all the data for all the discount codes * * @access public * @since 1.4 * @return array $discount_codes_data Array of all the data for the discount codes */ public function discount_codes_data() { $discount_codes_data = array(); $per_page = $this->per_page; $orderby = isset($_GET['orderby']) ? $_GET['orderby'] : 'ID'; $order = isset($_GET['order']) ? $_GET['order'] : 'DESC'; $status = isset($_GET['status']) ? $_GET['status'] : array('active', 'inactive'); $meta_key = isset($_GET['meta_key']) ? $_GET['meta_key'] : null; $search = isset($_GET['s']) ? sanitize_text_field($_GET['s']) : null; $discounts = edd_get_discounts(array('posts_per_page' => $per_page, 'paged' => isset($_GET['paged']) ? $_GET['paged'] : 1, 'orderby' => $orderby, 'order' => $order, 'post_status' => $status, 'meta_key' => $meta_key, 's' => $search)); if ($discounts) { foreach ($discounts as $discount) { if (edd_get_discount_max_uses($discount->ID)) { $uses = edd_get_discount_uses($discount->ID) . '/' . edd_get_discount_max_uses($discount->ID); } else { $uses = edd_get_discount_uses($discount->ID); } if (edd_get_discount_max_uses($discount->ID)) { $max_uses = edd_get_discount_max_uses($discount->ID) ? edd_get_discount_max_uses($discount->ID) : __('unlimited', 'edd'); } else { $max_uses = __('Unlimited', 'edd'); } $start_date = edd_get_discount_start_date($discount->ID); if (!empty($start_date)) { $discount_start_date = date_i18n(get_option('date_format'), strtotime($start_date)); } else { $discount_start_date = __('No start date', 'edd'); } if (edd_get_discount_expiration($discount->ID)) { $expiration = date_i18n(get_option('date_format'), strtotime(edd_get_discount_expiration($discount->ID))); } else { $expiration = __('No expiration', 'edd'); } $discount_codes_data[] = array('ID' => $discount->ID, 'name' => get_the_title($discount->ID), 'code' => edd_get_discount_code($discount->ID), 'amount' => edd_format_discount_rate(edd_get_discount_type($discount->ID), edd_get_discount_amount($discount->ID)), 'uses' => $uses, 'max_uses' => $max_uses, 'start_date' => $discount_start_date, 'expiration' => $expiration, 'status' => edd_is_discount_expired($discount->ID) ? 'expired' : $discount->post_status); } } return $discount_codes_data; }
/** * Load discount * * @since 2.0 */ public function share_product() { if (!isset($_POST['product_id'])) { return; } // check nonce check_ajax_referer('edd_sd_nonce', 'nonce'); global $edd_options; // get discount code's ID from plugin settings $discount = edd_get_option('edd_sd_discount_code', ''); // get discount code by ID $discount = edd_get_discount_code($discount); // set cart discount. Discount will only be applied if discount exists. $discounts = edd_set_cart_discount($discount); $total = edd_get_cart_total($discounts); // purchase was shared EDD()->session->set('edd_shared', true); // store the download ID temporarily EDD()->session->set('edd_shared_id', $_POST['product_id']); $return = apply_filters('edd_social_discounts_ajax_return', array('msg' => 'valid', 'success_title' => $this->success_title(), 'success_message' => $this->success_message($_POST['product_id']), 'product_id' => $_POST['product_id'], 'total' => html_entity_decode(edd_currency_filter(edd_format_amount($total)), ENT_COMPAT, 'UTF-8'), 'html' => edd_get_cart_discounts_html($discounts))); echo json_encode($return); edd_die(); }
/** * Account * @since 1.0 */ function affwp_account() { ?> <?php $has_ultimate_license = in_array(3, affwp_get_users_price_ids()); $has_professional_license = in_array(2, affwp_get_users_price_ids()); $has_plus_license = in_array(1, affwp_get_users_price_ids()); $has_personal_license = in_array(0, affwp_get_users_price_ids()); /** * Logout message */ if (isset($_GET['logout']) && $_GET['logout'] == 'success') { ?> <p class="alert notice"> <?php _e('You have been successfully logged out', 'affwp'); ?> </p> <?php } ?> <?php // user is not logged in if (!is_user_logged_in()) { ?> <p> <a href="<?php echo site_url('account/affiliates'); ?> ">Looking for our affiliate area?</a> </p> <p> <a href="<?php echo site_url('account/register'); ?> ">Need to register an account?</a> </p> <?php echo edd_login_form(add_query_arg(array('login' => 'success', 'logout' => false), site_url($_SERVER['REQUEST_URI']))); ?> <?php // user is logged in } else { ?> <h2>Professional Add-ons</h2> <?php global $post; /** * Displays the most recent post */ $args = array('posts_per_page' => -1, 'post_type' => 'download', 'tax_query' => array(array('taxonomy' => 'download_category', 'field' => 'slug', 'terms' => 'pro-add-ons'))); $add_ons = new WP_Query($args); ?> <table id="edd-pro-add-ons"> <thead> <tr> <th><?php _e('Name', 'affwp'); ?> </th> <th><?php _e('Version', 'affwp'); ?> </th> <th><?php _e('AffiliateWP version required', 'affwp'); ?> </th> <th><?php _e('Download', 'affwp'); ?> </th> </tr> </thead> <tbody> <?php if (have_posts()) { ?> <?php while ($add_ons->have_posts()) { $add_ons->the_post(); ?> <?php $version = get_post_meta(get_the_ID(), '_edd_sl_version', true); $requires = get_post_meta(get_the_ID(), '_affwp_addon_requires', true); ?> <tr> <td> <?php if (affwp_addon_is_coming_soon(get_the_ID()) && current_user_can('manage_options')) { ?> <a href="<?php the_permalink(); ?> "><?php the_title(); ?> </a> <?php } elseif (affwp_addon_is_coming_soon(get_the_ID())) { ?> <?php the_title(); ?> - coming soon <?php } else { ?> <a href="<?php the_permalink(); ?> "><?php the_title(); ?> </a> <?php } ?> </td> <td><?php echo esc_attr($version); ?> </td> <td><?php echo esc_attr($requires); ?> </td> <td> <?php if (edd_get_download_files(get_the_ID())) { ?> <?php if (!($has_ultimate_license || $has_professional_license)) { ?> <?php if (!affwp_addon_is_coming_soon(get_the_ID()) || current_user_can('manage_options')) { ?> <?php if ($has_plus_license || $has_personal_license) { // upgrade ?> <a href="#upgrade" title="Upgrade License" class="popup-content" data-effect="mfp-move-from-bottom">Upgrade license to download</a> <?php } else { // no license ?> <a href="<?php echo site_url('pricing'); ?> ">Purchase ultimate or professional<br/> license to download</a> <?php } ?> <?php } ?> <?php } else { ?> <?php if ($has_ultimate_license || $has_professional_license) { ?> <?php if (!affwp_addon_is_coming_soon(get_the_ID()) || current_user_can('manage_options')) { ?> <a href="<?php echo affwp_get_add_on_download_url(get_the_ID()); ?> ">Download add-on</a> <?php } ?> <?php } ?> <?php } ?> <?php } // edd_get_download_files ?> </td> </tr> <?php } ?> <?php } wp_reset_postdata(); ?> </tbody> </table> <?php affwp_upgrade_license_modal(); ?> <div class="affwp-licenses"> <?php $licenses = affwp_get_users_licenses(); $license_heading = count($licenses) > 1 ? 'Your Licenses' : 'Your license'; ?> <h2><?php echo $license_heading; ?> </h2> <?php // a customer can happily have more than 1 license of any type if ($licenses) { ?> <?php foreach ($licenses as $id => $license) { if ($license['limit'] == 0) { $license['limit'] = 'Unlimited'; } else { $license['limit'] = $license['limit']; } $license_limit_text = $license['limit'] > 1 || $license['limit'] == 'Unlimited' ? ' sites' : ' site'; ?> <div class="affwp-license"> <p><strong><?php echo edd_get_price_option_name(affwp_get_affiliatewp_id(), $license['price_id']); ?> </strong> (<?php echo $license['limit'] . $license_limit_text; ?> ) - <?php echo $license['license']; ?> </p> <?php if (affwp_has_license_expired($license['license'])) { $renewal_link = edd_get_checkout_uri(array('edd_license_key' => $license['license'], 'download_id' => affwp_get_affiliatewp_id())); ?> <p class="license-expired"><a href="<?php echo esc_url($renewal_link); ?> ">Your license has expired. Renew your license now and save 40% →</a></p> <?php } ?> <?php if ($license['price_id'] != 3) { // only provide upgrade if not ultimate ?> <ul> <?php if ($license['price_id'] == 0) { // personal ?> <li><a title="Upgrade to Ultimate license" href="<?php echo affwp_get_license_upgrade_url('ultimate', $id); ?> ">Upgrade to Ultimate license (unlimited sites)</a></li> <li><a title="Upgrade to Professional license" href="<?php echo affwp_get_license_upgrade_url('professional', $id); ?> ">Upgrade to Professional license (unlimited sites)</a></li> <li><a title="Upgrade to Plus license" href="<?php echo affwp_get_license_upgrade_url('plus', $id); ?> ">Upgrade to Plus license (3 sites)</a></li> <?php } ?> <?php if ($license['price_id'] == 1) { // plus ?> <li><a title="Upgrade to Ultimate license" href="<?php echo affwp_get_license_upgrade_url('ultimate', $id); ?> ">Upgrade to Ultimate license (unlimited sites)</a></li> <li><a title="Upgrade to Professional license" href="<?php echo affwp_get_license_upgrade_url('professional', $id); ?> ">Upgrade to Professional license (unlimited sites)</a></li> <?php } ?> <?php if ($license['price_id'] == 2) { // professional ?> <li><a title="Upgrade to Ultimate license" href="<?php echo affwp_get_license_upgrade_url('ultimate', $id); ?> ">Upgrade to Ultimate license (unlimited sites)</a></li> <?php } ?> </ul> <?php } ?> </div> <?php } ?> <?php } else { ?> <p>You do not have a license yet. <a href="<?php echo site_url('pricing'); ?> ">View pricing →</a></p> <?php } ?> </div> <?php // get current user's purchases $purchases = edd_get_users_purchases('', -1); $purchase_ids = array(); $discount_codes = array(); if ($purchases) { $purchase_ids = wp_list_pluck($purchases, 'ID'); } if ($purchase_ids) { foreach ($purchase_ids as $id) { $discount_code = get_post_meta($id, '_edd_purchase_rewards_discount', true); if ($discount_code && edd_is_discount_active($discount_code) && !(function_exists('edd_purchase_rewards') && edd_purchase_rewards()->discounts->discount_code_used($discount_code))) { $discount_codes[] = edd_get_discount_code($discount_code); } } } ?> <?php if ($discount_codes) { ?> <h2>Available Discount Codes</h2> <p>Click a discount below and it will be applied to checkout.</p> <ul class="edd-pr-discounts"> <?php foreach ($discount_codes as $code) { ?> <li> <a href="<?php echo add_query_arg('discount', $code, site_url('/account/')); ?> "> <?php echo $code; ?> </a> </li> <?php } ?> </ul> <?php } ?> <?php // purchase history echo '<h2>' . __('Purchase History', 'affwp') . '</h2>'; echo edd_purchase_history(); // download history echo '<h2>' . __('Download History', 'affwp') . '</h2>'; echo edd_download_history(); // profile editor echo '<h2>' . __('Edit your profile', 'affwp') . '</h2>'; echo do_shortcode('[edd_profile_editor]'); ?> <?php } ?> <?php }