コード例 #1
0
 /**
  * Save invoices using the invoices model.
  *
  * @since  1.0.0
  *
  * @param mixed $fields Transaction fields
  */
 private function save_invoice($fields)
 {
     $msg = MS_Helper_Billing::BILLING_MSG_NOT_UPDATED;
     if ($this->is_admin_user() && is_array($fields) && !empty($fields['user_id']) && !empty($fields['membership_id'])) {
         $member = MS_Factory::load('MS_Model_Member', $fields['user_id']);
         $membership_id = $fields['membership_id'];
         $gateway_id = 'admin';
         $subscription = MS_Model_Relationship::get_subscription($member->id, $membership_id);
         if (empty($subscription)) {
             $subscription = MS_Model_Relationship::create_ms_relationship($membership_id, $member->id, $gateway_id);
         } else {
             $subscription->gateway_id = $gateway_id;
             $subscription->save();
         }
         $invoice_id = intval($fields['invoice_id']);
         $invoice = MS_Factory::load('MS_Model_Invoice', $invoice_id);
         if (!$invoice->is_valid()) {
             $invoice = $subscription->get_current_invoice();
             $msg = MS_Helper_Billing::BILLING_MSG_ADDED;
         } else {
             $msg = MS_Helper_Billing::BILLING_MSG_UPDATED;
         }
         foreach ($fields as $field => $value) {
             $invoice->{$field} = $value;
         }
         $invoice->save();
         if (!empty($fields['execute'])) {
             $invoice->changed();
         }
     }
     return apply_filters('ms_controller_billing_save_invoice', $msg, $fields, $this);
 }
コード例 #2
0
 /**
  * Render membership payment information.
  *
  * Related Filter Hooks:
  * - the_content
  *
  * @since  1.0.0
  *
  * @param string $content The page content to filter.
  * @return string The filtered content.
  */
 public function payment_table($content)
 {
     $data = array();
     $subscription = null;
     $member = MS_Model_Member::get_current_member();
     $membership_id = 0;
     lib2()->array->equip_request('membership_id', 'move_from_id', 'ms_relationship_id');
     if (!empty($_POST['ms_relationship_id'])) {
         // Error path, showing payment table again with error msg
         $subscription = MS_Factory::load('MS_Model_Relationship', absint(intval($_POST['ms_relationship_id'])));
         $membership = $subscription->get_membership();
         $membership_id = $membership->id;
         if (!empty($_POST['error'])) {
             lib2()->array->strip_slashes($_POST, 'error');
             $data['error'] = $_POST['error'];
         }
     } elseif (!empty($_REQUEST['membership_id'])) {
         // First time loading
         $membership_id = intval($_REQUEST['membership_id']);
         $membership = MS_Factory::load('MS_Model_Membership', $membership_id);
         $move_from_id = absint($_REQUEST['move_from_id']);
         $subscription = MS_Model_Relationship::create_ms_relationship($membership_id, $member->id, '', $move_from_id);
     } else {
         MS_Helper_Debug::log('Error: missing POST params');
         MS_Helper_Debug::log($_POST);
         return $content;
     }
     $invoice = $subscription->get_current_invoice();
     /**
      * Notify Add-ons that we are preparing payment details for a membership
      * subscription.
      *
      * E.g. Coupon discount is applied by this hook.
      *
      * @since  1.0.0
      */
     $invoice = apply_filters('ms_signup_payment_details', $invoice, $subscription, $membership);
     $invoice->save();
     $data['invoice'] = $invoice;
     $data['membership'] = $membership;
     $data['member'] = $member;
     $data['ms_relationship'] = $subscription;
     $view = MS_Factory::load('MS_View_Frontend_Payment');
     $view->data = apply_filters('ms_view_frontend_payment_data', $data, $membership_id, $subscription, $member, $this);
     return apply_filters('ms_controller_frontend_payment_table', $view->to_html(), $this);
 }
コード例 #3
0
 /**
  * Creates a new subscription for the specified user/membership and returns
  * the MS_Model_Relationship object.
  *
  * @since  1.0.0
  * @return MS_Model_Relationship
  */
 public static function subscribe($user_key, $membership_key, $gateway_id = '')
 {
     if (!is_numeric($user_key)) {
         $user_key = self::id('user', $user_key);
     }
     if (!is_numeric($membership_key)) {
         $membership_key = self::id('membership', $membership_key);
     }
     $subscription = MS_Model_Relationship::create_ms_relationship($membership_key, $user_key, $gateway_id, 0);
     return $subscription;
 }
コード例 #4
0
 /**
  * Move a membership.
  *
  * @since  1.0.0
  * @api
  *
  * @param int $old_membership_id The membership id to move from.
  * @param int $mew_membership_id The membership id to move to.
  */
 public function move_membership($old_membership_id, $mew_membership_id)
 {
     $old_subscription = $this->get_subscription($old_membership_id);
     if ($old_subscription) {
         $new_subscription = MS_Model_Relationship::create_ms_relationship($mew_membership_id, $this->id, $old_subscription->gateway_id, $old_membership_id);
         $this->cancel_membership($old_membership_id);
         $this->subscriptions[] = $new_subscription;
         MS_Model_Event::save_event(MS_Model_Event::TYPE_MS_MOVED, $new_subscription);
     }
     do_action('ms_model_membership_move_membership', $old_membership_id, $mew_membership_id, $this);
 }
コード例 #5
0
 /**
  * Add the simulated relationship to the current users memberships.
  *
  * @since  1.0.0
  */
 public function add_simulation_membership($subscriptions)
 {
     $subscription = false;
     if (!isset($subscriptions[$this->membership_id])) {
         $this->start_simulation();
         $subscription = MS_Model_Relationship::create_ms_relationship($this->membership_id, 0, 'simulation');
     }
     if (is_a($subscription, 'MS_Model_Relationship')) {
         $membership = $subscription->get_membership();
         if (MS_Model_Membership::PAYMENT_TYPE_PERMANENT == $membership->payment_type) {
             $subscription->expire_date = '2999-12-31';
         }
         $key = 'ms_model_relationship--1';
         MS_Factory::set_singleton($subscription, $key);
         $this->_subscription = $subscription;
         $subscriptions[$this->membership_id] = $subscription;
     }
     return $subscriptions;
 }