/** * Checks pro site table for blog id against matching activation key, if not found * fetches it from signup table, or return null * * @param $activation_key */ public static function blog_id_from_activation_key($activation_key) { global $wpdb; $query = "SELECT blog_id from {$wpdb->base_prefix}pro_sites WHERE identifier='%s'"; $blog_id = $wpdb->get_var($wpdb->prepare($query, $activation_key)); //Try to get it from signup table if (empty($blog_id) || !is_wp_error($blog_id)) { $blog_id = ProSites_Helper_ProSite::get_blog_id($activation_key); } return $blog_id; }
/** * Uses Stripe API json object to retrieve the subscription object. * * @param $response * * @return bool */ public static function get_subscription($response) { $object = $response->data->object; $from_invoice = 'invoice' == $object->object ? true : false; $from_sub = 'subscription' == $object->object ? true : false; if (!$from_invoice && !$from_sub) { return false; } $subscription = false; $coupon = false; $has_setup = false; $setup_fee_amount = 0; $plan_change = false; $invoice_items = false; if ($from_invoice) { $invoice_items = new ProSites_Model_Receipt(); $last_line_item = false; if (isset($object->metadata->plan_change) && 'yes' == $object->metadata->plan_change) { $plan_change = true; } foreach ($object->lines->data as $line_item) { $last_line_item = $line_item; // Get subscription if ('subscription' == $line_item->type) { $subscription = $line_item; continue; } // Get setup fee if (isset($line_item->metadata->setup_fee) && 'yes' == $line_item->metadata->setup_fee) { $has_setup = true; $setup_fee_amount = $line_item->amount / 100; $invoice_items->add_item($setup_fee_amount, $line_item->description); continue; } // Get upgrades/downgrades if ($plan_change && $line_item->proration) { $plan_name = $line_item->plan->name; $amount = $line_item->amount / 100; $invoice_items->add_item($amount, sprintf(__('Plan Adjustments: %s', 'psts'), $plan_name)); continue; } } if (!$subscription && !$last_line_item) { return false; } if (!$subscription) { if ('invoiceitem' == $line_item->type && isset($line_item->subscription) && isset($line_item->period) && isset($line_item->plan)) { $customer = Stripe_Customer::retrieve($object->customer); $subscription = $customer->subscriptions->retrieve($line_item->subscription); } else { return false; } } if (isset($object->discount) && isset($object->discount->coupon)) { $coupon = $object->discount->coupon; } // Get fields from Invoice $subscription->customer_id = $object->customer; $subscription->paid = $object->paid; $subscription->currency = $object->currency; $subscription->last_charge = $object->charge; $subscription->invoice_total = $object->total / 100; } if ($from_sub) { $subscription = $object; } $subscription->period_end = isset($subscription->period) ? $subscription->period->end : false; $subscription->period_end = empty($subscription->period_end) && isset($subscription->current_period_end) ? $subscription->current_period_end : $subscription->period_end; $subscription->period_start = isset($subscription->period) ? $subscription->period->start : false; $subscription->period_start = empty($subscription->period_start) && isset($subscription->current_period_start) ? $subscription->current_period_start : $subscription->period_start; // Get fields from subscription meta // 3.4 $parts = explode('_', $subscription->plan->id); $period = (int) array_pop($parts); $level = (int) array_pop($parts); $subscription->period = !empty($subscription->metadata->period) ? $subscription->metadata->period : $period; $subscription->level = !empty($subscription->metadata->level) ? $subscription->metadata->level : $level; $subscription->activation = isset($subscription->metadata->activation) ? $subscription->metadata->activation : false; $subscription->blog_id = isset($subscription->metadata->blog_id) ? (int) $subscription->metadata->blog_id : false; if (empty($subscription->blog_id)) { $subscription->blog_id = ProSites_Helper_ProSite::get_blog_id($subscription->activation); } $subscription->is_trial = isset($subscription->status) && 'trialing' == $subscription->status ? true : false; $subscription->trial_end = isset($subscription->trial_end) ? $subscription->trial_end : false; $subscription->trial_start = isset($subscription->trial_start) ? $subscription->trial_start : false; $subscription->subscription_amount = isset($subscription->amount) ? $subscription->amount / 100 : $subscription->plan->amount / 100; $subscription->plan_amount = $subscription->is_trial ? $subscription->plan->amount / 100 : $subscription->subscription_amount; $subscription->discount_amount = 0; if ($coupon) { $subscription->discount_amount = $coupon->amount_off / 100; if ($invoice_items) { $invoice_items->add_item($subscription->discount_amount, __('Coupon Applied', 'psts')); } } $subscription->has_discount = empty($coupon) ? false : true; $item_count = 0; if ($invoice_items) { // Get array and add to subscription $invoice_items = $invoice_items->get_items(); $item_count = count($invoice_items); } $subscription->invoice_items = $item_count > 0 ? $invoice_items : false; // Get setup fee $subscription->setup_fee = $setup_fee_amount; $subscription->has_setup_fee = $has_setup; $subscription->plan_change_amount = isset($subscription->invoice_total) ? $subscription->invoice_total - $subscription->subscription_amount : 0; if ($coupon && $plan_change) { $subscription->plan_change_amount + $subscription->discount_amount; } $subscription->plan_change = $plan_change; //inverse if ($subscription->plan_change_amount < 0) { $subscription->plan_change_mode = 'upgrade'; } else { $subscription->plan_change_mode = 'downgrade'; } return $subscription; }