/** * Returns subscription schemes for cart-level options. * Cart-level options will be displayed only if no cart-item is found with its own product-level subscription scheme. * This means that subscription options defined at product-level and "legacy" subscription-type products will "block" the display of cart-level options. * * In this case, cart-level options will be displayed at cart-item level. * * Must be called after all cart session data has been loaded. * * @return array|boolean */ public static function get_cart_subscription_schemes() { $wcs_prefix = WC_Subscriptions_Admin::$option_prefix; $cart_level_subs_active = get_option($wcs_prefix . '_enable_cart_subscriptions', 'no'); $cart_level_schemes = array(); $cart_level_schemes_keys = array(); if ($cart_level_subs_active === 'yes') { $cart_level_schemes = get_option($wcs_prefix . '_subscribe_to_cart_schemes', array()); } if (empty($cart_level_schemes)) { return false; } foreach ($cart_level_schemes as $cart_level_scheme) { $cart_level_schemes_keys[] = $cart_level_scheme['id']; } foreach (WC()->cart->cart_contents as $cart_item) { if (!WCS_ATT_Cart::is_supported_product_type($cart_item)) { return false; } if ($cart_item_level_schemes = self::get_subscription_schemes($cart_item, 'cart-item')) { return false; } if (WC_Subscriptions_Product::is_subscription($cart_item['product_id'])) { return false; } } return $cart_level_schemes; }
/** * Returns subscription schemes for cart-level options. * Cart-level options will be displayed only if no cart-item is found with its own product-level subscription scheme. * This means that subscription options defined at product-level and "legacy" subscription-type products will "block" the display of cart-level options. * * In this case, cart-level options will be displayed at cart-item level. * * Must be called after all cart session data has been loaded. * * @return array|boolean */ public static function get_cart_subscription_schemes() { $cart_level_schemes = array(); $cart_level_schemes_keys = array(); $cart_level_schemes = get_option('wcsatt_subscribe_to_cart_schemes', array()); if (empty($cart_level_schemes)) { return false; } foreach ($cart_level_schemes as $cart_level_scheme) { $cart_level_schemes_keys[] = $cart_level_scheme['id']; } foreach (WC()->cart->cart_contents as $cart_item) { if (!WCS_ATT_Cart::is_supported_product_type($cart_item)) { return false; } if ($cart_item_level_schemes = self::get_subscription_schemes($cart_item, 'cart-item')) { return false; } if (WC_Subscriptions_Product::is_subscription($cart_item['product_id'])) { return false; } } return $cart_level_schemes; }