Example #1
0
		<?php 
if (sizeof($subscription->get_items()) > 0) {
    foreach ($subscription->get_items() as $item_id => $item) {
        $_product = apply_filters('woocommerce_subscriptions_order_item_product', $subscription->get_product_from_item($item), $item);
        $item_meta = wcs_get_order_item_meta($item, $_product);
        if (apply_filters('woocommerce_order_item_visible', true, $item)) {
            ?>
					<tr class="<?php 
            echo esc_attr(apply_filters('woocommerce_order_item_class', 'order_item', $item, $subscription));
            ?>
">
						<?php 
            if ($allow_remove_item) {
                ?>
							<td class="remove_item"><a href="<?php 
                echo esc_url(WCS_Remove_Item::get_remove_url($subscription->id, $item_id));
                ?>
" class="remove" onclick="return confirm('<?php 
                printf(esc_html__('Are you sure you want remove this item from your subscription?', 'woocommerce-subscriptions'));
                ?>
');">&times;</a></td>
						<?php 
            }
            ?>
						<td class="product-name">
							<?php 
            if ($_product && !$_product->is_visible()) {
                echo esc_html(apply_filters('woocommerce_order_item_name', $item['name'], $item));
            } else {
                echo wp_kses_post(apply_filters('woocommerce_order_item_name', sprintf('<a href="%s">%s</a>', get_permalink($item['product_id']), $item['name']), $item));
            }
    /**
     * Validate the incoming request to either remove an item or add and item back to a subscription that was previously removed.
     * Add an descriptive notice to the page whether or not the request was validated or not.
     *
     * @since 2.0
     * @param WC_Subscription $subscription
     * @param int $order_item_id
     * @param bool $undo_request bool
     * @return bool
     */
    private static function validate_remove_items_request($subscription, $order_item_id, $undo_request = false)
    {
        $subscription_items = $subscription->get_items();
        $response = false;
        if (!wp_verify_nonce($_GET['_wpnonce'], $_GET['subscription_id'])) {
            wc_add_notice(__('Security error. Please contact us if you need assistance.', 'woocommerce-subscriptions'), 'error');
        } elseif (!current_user_can('edit_shop_subscription_line_items', $subscription->id)) {
            wc_add_notice(__('You cannot modify a subscription that does not belong to you.', 'woocommerce-subscriptions'), 'error');
        } elseif (!$undo_request && !isset($subscription_items[$order_item_id])) {
            // only need to validate the order item id when removing
            wc_add_notice(__('You cannot remove an item that does not exist. ', 'woocommerce-subscriptions'), 'error');
        } elseif (!$subscription->payment_method_supports('subscription_amount_changes')) {
            wc_add_notice(__('The item was not removed because this Subscription\'s payment method does not support removing an item.', 'woocommerce-subscriptions'));
        } else {
            $response = true;
        }
        return $response;
    }
}
WCS_Remove_Item::init();