/** * Check if user has a card on file * @param integer $user_guid * @return Stripe_Card|boolean */ function stripe_has_card($user_guid = 0) { if (!$user_guid) { $user_guid = elgg_get_logged_in_user_guid(); } $stripe = new StripeClient(); $default_card = $stripe->getDefaultCard($user_guid); return $default_card; }
/** * Create a Stripe object menu * * @param string $hook Equals 'register' * @param string $type Equals 'stripe-actions' * @param array $return Current menu * @param array $params Additional params * @return array */ function stripe_actions_menu($hook, $type, $return, $params) { $object = elgg_extract('object', $params); switch ($object->object) { case 'card': $user = stripe_get_user_from_customer_id($object->customer); if (!elgg_instanceof($user) || !$user->canEdit()) { return $return; } $stripe = new StripeClient(); $default = $stripe->getDefaultCard($user->guid); if ($default->id == $object->id) { $return[] = ElggMenuItem::factory(array('name' => 'default', 'text' => elgg_echo('stripe:cards:default'), 'href' => false)); } else { $return[] = ElggMenuItem::factory(array('name' => 'default', 'text' => elgg_echo('stripe:cards:make_default'), 'href' => "action/stripe/cards/set_default?card_id={$object->id}&customer_id={$object->customer}", 'is_action' => 800, 'class' => 'elgg-requires-confirmation', 'rel' => elgg_echo('question:areyousure'))); $return[] = ElggMenuItem::factory(array('name' => 'remove', 'text' => elgg_echo('stripe:cards:remove'), 'href' => "action/stripe/cards/set_default?card_id={$object->id}&customer_id={$object->customer}", 'is_action' => true, 'priority' => 900, 'class' => 'elgg-requires-confirmation', 'rel' => elgg_echo('question:areyousure'))); } break; case 'charge': $user = stripe_get_user_from_customer_id($object->customer); if (!elgg_instanceof($user) || !$user->canEdit()) { return $return; } $full = elgg_normalize_url("billing/{$user->username}/charges/view/{$object->id}"); if (current_page_url() !== $full) { $return[] = ElggMenuItem::factory(array('name' => 'details', 'text' => elgg_echo('stripe:charges:view'), 'href' => $full)); } break; case 'invoice': $user = stripe_get_user_from_customer_id($object->customer); if (!elgg_instanceof($user) || !$user->canEdit()) { return $return; } if (isset($object->id)) { $full = elgg_normalize_url("billing/{$user->username}/invoices/view/{$object->id}"); if (current_page_url() !== $full) { $return[] = ElggMenuItem::factory(array('name' => 'details', 'text' => elgg_echo('stripe:invoices:view'), 'href' => $full)); } } break; case 'subscription': $user = stripe_get_user_from_customer_id($object->customer); if (!elgg_instanceof($user) || !$user->canEdit()) { return $return; } $upcoming = elgg_normalize_url("billing/{$user->username}/invoices/upcoming/{$object->id}"); if (current_page_url() !== $upcoming) { $return[] = ElggMenuItem::factory(array('name' => 'details', 'text' => elgg_echo('stripe:invoices:upcoming'), 'href' => $upcoming)); } if (!$object->cancel_at_period_end) { $return[] = ElggMenuItem::factory(array('name' => 'cancel', 'text' => elgg_echo('subscriptions:cancel'), 'href' => "action/stripe/subscriptions/cancel?subscription_id={$object->id}&customer_id={$object->customer}", 'is_action' => 800, 'class' => 'elgg-requires-confirmation', 'rel' => elgg_echo('question:areyousure'))); } break; } return $return; }