/** * Membership signup callback function. * * @since 1.0.0 * * @param mixed[] $atts Shortcode attributes. */ public function membership_signup($atts) { MS_Helper_Shortcode::did_shortcode(MS_Helper_Shortcode::SCODE_SIGNUP); $data = apply_filters('ms_controller_shortcode_membership_signup_atts', shortcode_atts(array(MS_Helper_Membership::MEMBERSHIP_ACTION_SIGNUP . '_text' => __('Signup', 'membership2'), MS_Helper_Membership::MEMBERSHIP_ACTION_MOVE . '_text' => __('Change', 'membership2'), MS_Helper_Membership::MEMBERSHIP_ACTION_CANCEL . '_text' => __('Cancel', 'membership2'), MS_Helper_Membership::MEMBERSHIP_ACTION_RENEW . '_text' => __('Renew', 'membership2'), MS_Helper_Membership::MEMBERSHIP_ACTION_PAY . '_text' => __('Complete Payment', 'membership2')), $atts)); $member = MS_Model_Member::get_current_member(); $data['member'] = $member; $data['subscriptions'] = array(); $exclude = array(); if ($member->is_valid()) { // Get member's memberships, including pending relationships. $data['subscriptions'] = MS_Model_Relationship::get_subscriptions(array('user_id' => $data['member']->id, 'status' => 'valid')); foreach ($data['subscriptions'] as $key => $subscription) { $exclude[] = $subscription->membership_id; if (!$member->can_subscribe_to($subscription->membership_id)) { unset($data['subscriptions'][$key]); } } } $memberships = MS_Model_Membership::get_signup_membership_list(null, $exclude); $data['memberships'] = $memberships; $move_from_ids = array(); // When Multiple memberships is not enabled, a member should move to another membership. if (!MS_Model_Addon::is_enabled(MS_Model_Addon::ADDON_MULTI_MEMBERSHIPS)) { // Membership Relationship status which can move to another one $valid_status = array(MS_Model_Relationship::STATUS_TRIAL, MS_Model_Relationship::STATUS_ACTIVE, MS_Model_Relationship::STATUS_EXPIRED); foreach ($data['member']->subscriptions as $subscription) { if ($subscription->is_system()) { continue; } if (in_array($subscription->status, $valid_status)) { $move_from_ids[] = $subscription->membership_id; } } foreach ($data['memberships'] as $key => $membership) { $data['memberships'][$key]->_move_from = $move_from_ids; } } else { foreach ($data['memberships'] as $key => $membership) { $move_from_ids = $member->cancel_ids_on_subscription($membership->id); $data['memberships'][$key]->_move_from = $move_from_ids; } } $data['action'] = MS_Helper_Membership::MEMBERSHIP_ACTION_SIGNUP; $data['step'] = MS_Controller_Frontend::STEP_PAYMENT_TABLE; $view = MS_Factory::create('MS_View_Shortcode_MembershipSignup'); $view->data = apply_filters('ms_view_shortcode_membershipsignup_data', $data, $this); return $view->to_html(); }