/** * Change the status of a subscription and show a notice to the * user to say when the next payment will now be made on. * * @since 1.0.0 * @access public * @static * @param $subscription * @param $order_id * @param $product_id * @uses WC_Subscriptions::add_notice */ public static function change_users_subscription($subscription, $order_id, $product_id) { $subscription = !is_object($subscription) ? wcs_get_subscription($subscription) : $subscription; $current_next_subscription_payment = WC_Subscriptions_Order::get_next_payment_date($order_id, $product_id, $from_date = ''); // Get the date of the current next subscription. $next_subscription_payment = WC_Subscriptions_Order::calculate_next_payment_date($order_id, $product_id, $type = 'mysql', $current_next_subscription_payment); WCSO_Subscriptions_Order::update_next_payment($order_id, $next_subscription_payment); // Update the next payment on the subscriptions order. $subscription->add_order_note(__('Subscription was skipped by the subscriber from their subscription page.', 'woocommerce-skip-one')); // translators: placeholder is next subscription payment WC_Subscriptions::add_notice(sprintf(__('You next payment subscription will now be on the %s.', 'woocommerce-skip-one'), $next_subscription_payment), 'success'); }
/** * Clears the payment schedule for a subscription and sets a net date * * @param $subscription_key string A subscription key of the form created by @see self::get_subscription_key() * @param $user_id int (optional) The ID of the user who owns the subscriptions. Although this parameter is optional, if you have the User ID you should pass it to improve performance. * @param $type string (optional) The format for the Either 'mysql' or 'timestamp'. * @return mixed If there is no future payment set, returns 0, otherwise it will return a date of the next payment of the type specified with $type * @since 1.2 */ public static function calculate_next_payment_date($subscription_key, $user_id = '', $type = 'mysql', $from_date = '') { $subscription = self::get_subscription($subscription_key, $user_id); $next_payment = WC_Subscriptions_Order::calculate_next_payment_date($subscription['order_id'], $subscription['product_id'], $type, $from_date); return $next_payment; }