Esempio n. 1
0
/**
 * 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;
}
Esempio n. 2
0
/**
 * 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;
}