'fieldset', '#title' => 'Konto', '#collapsible' => false, '#asaf_area' => 'account', ]; $form['account']['messages'] = [ '#markup' => '
', ]; $form['account']['name'] = [ '#type' => 'textfield', '#title' => 'Brugernavn', '#default_value' => $accountWrapper->value()->name, ]; $form['account']['mail'] = [ '#type' => 'textfield', '#title' => 'Email adresse', '#default_value' => $accountWrapper->value()->mail, ]; $form['account']['first_name'] = [ '#type' => 'textfield', '#title' => 'Fornavn', '#default_value' => $accountWrapper->field_first_name->value(), ]; $form['account']['last_name'] = [ '#type' => 'textfield', '#title' => 'Efternavn', '#default_value' => $accountWrapper->field_last_name->value(), ]; $form['account']['actions'] = [ '#type' => 'actions', ]; $form['account']['actions']['save'] = [ '#type' => 'submit', '#value' => 'gem ændringer', '#submit' => ['mkbh_account_page_form_account_account_save_submit'], '#validate' => ['mkbh_account_page_form_account_account_save_validate'], '#name' => 'mkbh_account_page_form_account_account_save_button', '#asaf_target_area' => 'account', ]; $form['security'] = [ '#type' => 'fieldset', '#title' => 'Sikkerhed', '#collapsible' => false, '#asaf_area' => 'security', ]; $form['security']['messages'] = [ '#markup' => '', ]; $usedOneTimeLink = (boolean)isset($_SESSION['pass_reset_' . $accountWrapper->getIdentifier()]); if (!$usedOneTimeLink) { $form['security']['current_password'] = [ '#type' => 'password', '#title' => 'Nuværende adgangskode', ]; } $form['security']['new_password'] = [ '#type' => 'password', '#title' => 'Ny adgangskode', ]; $form['security']['new_password_repeat'] = [ '#type' => 'password', '#title' => 'Gentag adgangskode', ]; $form['security']['actions'] = [ '#type' => 'actions', ]; $form['security']['actions']['save'] = [ '#type' => 'submit', '#value' => 'gem ændringer', '#submit' => ['mkbh_account_page_form_account_security_save_submit'], '#validate' => ['mkbh_account_page_form_account_security_save_validate'], '#name' => 'mkbh_account_page_form_account_security_save_button', '#asaf_target_area' => 'security', ]; $form['#attributes']['class'] = ['mkbh-account-page-form-account']; if (module_exists('asaf')) { asaf_prepare_form($form, $form_state); } return $form; } /** * Account Page: Account: Account Validation. * * @param $form * @param $form_state * * @throws Exception */ function mkbh_account_page_form_account_account_save_validate($form, &$form_state) { $accountWrapper = $form_state['storage']['account_wrapper']; $data = [ 'name' => trim($form_state['values']['name']), 'mail' => trim($form_state['values']['mail']), 'first_name' => trim($form_state['values']['first_name']), 'last_name' => trim($form_state['values']['last_name']), ]; if ($accountWrapper->getIdentifier() == 0) { form_set_error('Brugerkonto kunne ikke indlæses, prøv venligst igen.'); } if (!_mkbh_account_page_user_username_available($data['name'], $accountWrapper->value())) { form_set_error('name', 'Brugernavn er ikke tilgængelig.'); } if (!_mkbh_account_page_user_mail_available($data['mail'], $accountWrapper->value())) { form_set_error('mail', 'E-mail er ikke tilgængelig.'); } if (!valid_email_address($data['mail'])) { form_set_error('mail', 'Angiv venligst korrekte e-mail-adresse.'); } $existingStripeCustomer = db_query("SELECT msc.* FROM mkbh_stripe_customers msc WHERE msc.user_email = :newMail AND msc.user_email <> :oldMail AND msc.environment = :env", [ ':newMail' => $data['mail'], ':oldMail' => $accountWrapper->value()->mail, ':env' => MKBH_STRIPE_ENVIRONMENT, ])->fetchAssoc(); if (!empty($existingStripeCustomer)) { form_set_error('mail', 'E-mail-adressen er allerede blevet brugt til betalinger med en anden bruger. Brug venligst en anden e-mail-adresse eller kontakt support.'); } $form_state['asaf_ajax_commands'][] = ajax_command_html('#mkbh-account-page-form-account-account-messages', theme('status_messages')); } /** * Account Page: Account: Account Submit. * * @param $form * @param $form_state * * @throws Exception */ function mkbh_account_page_form_account_account_save_submit($form, &$form_state) { $accountWrapper = $form_state['storage']['account_wrapper']; $form_state['rebuild'] = true; $data = [ 'name' => trim($form_state['values']['name']), 'mail' => trim($form_state['values']['mail']), 'first_name' => trim($form_state['values']['first_name']), 'last_name' => trim($form_state['values']['last_name']), ]; try { $accountWrapper->value()->name = $data['name']; $accountWrapper->value()->mail = $data['mail']; $accountWrapper->field_first_name->set($data['first_name']); $accountWrapper->field_last_name->set($data['last_name']); $accountWrapper->save(); drupal_set_message('Ændringer er blevet gemt.'); } catch (Exception $e) { drupal_set_message('Ups! Noget gik galt. Opdater venligst siden og prøv igen.', 'error'); } $form_state['asaf_ajax_commands'][] = ajax_command_html('#mkbh-account-page-form-account-account-messages', theme('status_messages')); } /** * Account Page: Account: Security Validation. * * @param $form * @param $form_state * * @throws Exception */ function mkbh_account_page_form_account_security_save_validate($form, &$form_state) { $accountWrapper = $form_state['storage']['account_wrapper']; require_once DRUPAL_ROOT . '/includes/password.inc'; $data = [ 'current_password' => trim($form_state['values']['current_password']), 'new_password' => trim($form_state['values']['new_password']), 'new_password_repeat' => trim($form_state['values']['new_password_repeat']), ]; if ($accountWrapper->getIdentifier() == 0) { form_set_error('', 'Brugerkonto kunne ikke indlæses, prøv venligst igen.'); } $usedOneTimeLink = (boolean)isset($_SESSION['pass_reset_' . $accountWrapper->getIdentifier()]); if (!$usedOneTimeLink) { if (empty($data['current_password']) || empty($data['new_password']) || empty($data['new_password_repeat'])) { form_set_error('', 'Udfyld venligst alle tre felter for at ændre din adgangskode.'); form_set_error('current_password'); form_set_error('new_password'); form_set_error('new_password_repeat'); } if (!user_check_password($data['current_password'], $accountWrapper->value())) { form_set_error('current_password', 'Angiv venligst den korrekte, nuværende adgangskode.'); } } if ($data['new_password'] != $data['new_password_repeat']) { form_set_error('', 'Ny adgangskode og bekræftelse stemmer ikke overens.'); form_set_error('new_password'); form_set_error('new_password_repeat'); } $form_state['asaf_ajax_commands'][] = ajax_command_html('#mkbh-account-page-form-account-security-messages', theme('status_messages')); } /** * Account Page: Account: Account Submit. * * @param $form * @param $form_state * * @throws Exception */ function mkbh_account_page_form_account_security_save_submit($form, &$form_state) { $accountWrapper = $form_state['storage']['account_wrapper']; require_once DRUPAL_ROOT . '/includes/password.inc'; // $form_state['rebuild'] = true; $data = [ 'current_password' => trim($form_state['values']['current_password']), 'new_password' => trim($form_state['values']['new_password']), 'new_password_repeat' => trim($form_state['values']['new_password_repeat']), ]; try { $accountWrapper->value()->pass = user_hash_password($data['new_password']); $accountWrapper->save(); $token = drupal_get_token($form['#token']); $form_state['asaf_ajax_commands'][] = ajax_command_invoke('.mkbh-account-page-form-account input[name="form_token"]', 'val', [$token]); drupal_set_message('Ændringer er blevet gemt.'); } catch (Exception $e) { drupal_set_message('Ups! Noget gik galt. Opdater venligst siden og prøv igen.', 'error'); } $form_state['asaf_ajax_commands'][] = ajax_command_html('#mkbh-account-page-form-account-security-messages', theme('status_messages')); } /** * Account Page: Newsletter. * * @param $form * @param $form_state * * @return mixed * @throws Mailchimp_HttpError */ function mkbh_account_page_form_newsletter($form, &$form_state) { global $user; $form_state['storage']['account_wrapper'] = entity_metadata_wrapper('user', $user); if (arg(0) == 'user' && is_numeric(arg(1)) && ($userArgument = user_load(arg(1)))) { $form_state['storage']['account_wrapper'] = entity_metadata_wrapper('user', $userArgument); } $form['newsletter'] = [ '#type' => 'fieldset', '#title' => 'Nyhedsbrev', '#collapsible' => false, ]; $form['newsletter']['messages'] = [ '#markup' => '', ]; $mcListID = variable_get('mkbh_mailchimp_list'); $mcAPIKey = variable_get('mailchimp_api_key'); $mcClient = new DrupalMailchimp($mcAPIKey); try { $memberInfo = $mcClient->lists->getMemberInfo($mcListID, $user->mail); } catch (\Exception $e) { $memberInfo = null; } $form['newsletter']['subscriptions'] = [ '#type' => 'checkbox', '#title' => 'Jeg ønsker at modtage Magasinet KBHs ugentlige nyhedsbrev', '#default_value' => (boolean)!empty($memberInfo) && $memberInfo->status == 'subscribed', '#asaf_control' => 'subscriptions', '#asaf_target_area' => 'form', '#executes_submit_callback' => true, ]; $form['newsletter']['subscriptions_resubscribe'] = [ '#markup' => format_string('Hvis du afmelder dig nyhedsbrevet, og senere vil abonnere igen, kan du gøre det via !link.
', [ '!link' => l('dette link', 'http://magasinetkbh.us1.list-manage.com/subscribe?u=b17428ef6ae53ca06329fe602&id=77fa7e9efa', [ 'attributes' => [ 'target' => '_blank', ], ]), ]), ]; $form['#attributes']['class'] = ['mkbh-account-page-form-newsletter']; if (module_exists('asaf')) { asaf_prepare_form($form, $form_state); } return $form; } /** * Account Page: Newsletter: Submit. * * @param $form * @param $form_state * * @throws Exception */ function mkbh_account_page_form_newsletter_submit($form, &$form_state) { $accountWrapper = $form_state['storage']['account_wrapper']; $form_state['rebuild'] = true; $mcListID = variable_get('mkbh_mailchimp_list'); $mcAPIKey = variable_get('mailchimp_api_key'); $mcClient = new DrupalMailchimp($mcAPIKey); try { if ($form_state['values']['subscriptions'] == 0) { $result = $mcClient->lists->removeMember($mcListID, $accountWrapper->value()->mail); } else { $result = $mcClient->lists->addOrUpdateMember($mcListID, $accountWrapper->value()->mail, [ 'status' => 'subscribed', ]); } if (!empty($result->error)) { throw new Exception($result->error); } drupal_set_message('Din abonnement-indstilling er blevet opdateret.'); } catch (Exception $e) { drupal_set_message('Ups! Noget gik galt. Opdater venligst siden og prøv igen.', 'error'); } $form_state['asaf_ajax_commands'][] = ajax_command_html('#mkbh-account-page-form-newsletter-messages', theme('status_messages')); } /** * @param $form * @param $form_state * * @return mixed * @throws \EntityMetadataWrapperException * @throws \Exception */ function mkbh_account_page_form_membership($form, &$form_state) { global $user; $accountWrapper = $form_state['storage']['account_wrapper'] = entity_metadata_wrapper('user', $user); if (arg(0) == 'user' && is_numeric(arg(1)) && ($userArgument = user_load(arg(1)))) { $accountWrapper = $form_state['storage']['account_wrapper'] = entity_metadata_wrapper('user', $userArgument); } $form['#attributes']['autocomplete'] = 'new-password'; $form['membership'] = [ '#type' => 'fieldset', '#title' => 'Medlemskab ', '#collapsible' => false, ]; $form['membership']['messages'] = [ '#markup' => '', ]; mkbh_general_stripe_initialization(); $data = [ 'source' => null, 'found' => false, 'customer' => null, 'subscription' => null, 'subscription_data' => [ 'quantity' => 1, 'plan' => [ 'id' => null, 'name' => null, ] ] ]; $manualPlans = mkbh_general_stripe_manual_plan_ids( $accountWrapper->value() ); if ($manualPlans->isNotEmpty()) { $data['source'] = 'manual'; $data['found'] = true; $manualPlan = $manualPlans->first(); $data['subscription_data']['plan']['id'] = $manualPlan; $data['subscription_data']['plan']['name'] = 'Offsite-abonnementsplan'; $data['subscription_data']['quantity'] = max((int)$accountWrapper->field_manual_membership_plan_qty->value(), 1); } else { $mobilePayRepository = container()->make(MobilePayRepository::class); if ($mobilePayRepository->existsForAccountInStatus($user, MobilePayAgreementStatusEnum::ACTIVE)) { $data['source'] = 'mobile-pay'; $data['found'] = true; } else { $data['source'] = 'stripe'; $mkbhCustomer = db_query("SELECT msc.* FROM mkbh_stripe_customers msc WHERE msc.user_email = :email AND msc.environment = :env", [':email' => $accountWrapper->value()->mail, ':env' => MKBH_STRIPE_ENVIRONMENT])->fetchObject(); if ($mkbhCustomer) { try { $stripeCustomer = Stripe\Customer::retrieve([ 'id' => $mkbhCustomer->customer_id, 'expand' => [ 'sources', 'subscriptions' ], ]); } catch (Exception $e) { $stripeCustomer = null; } $data['customer'] = $stripeCustomer; if ($data['customer']) { /** @var \Stripe\Subscription $subscription */ foreach ($stripeCustomer->subscriptions->data as $subscription) { if (in_array($subscription->plan->id, mkbh_general_stripe_plan_ids())) { $data['subscription'] = $subscription; $data['subscription_data']['quantity'] = $subscription->quantity; $data['subscription_data']['plan']['id'] = $subscription->plan->id; $data['subscription_data']['plan']['name'] = $subscription->plan->nickname; break; } } } } $data['found'] = $data['customer'] instanceof \Stripe\Customer && $data['subscription'] instanceof \Stripe\Subscription; } } if ($data['source'] && $data['found'] === true) { switch($data['source']) { case 'manual': case 'stripe': $form_state['storage']['data'] = $data; if (in_array($data['subscription_data']['plan']['id'], mkbh_general_stripe_business_plan_ids())) { $form['membership']['#title'] = 'Abonnement'; $form['membership']['subscription_sub_accounts'] = [ '#type' => 'container', '#attributes' => [ 'class' => ['subscription-sub-accounts'] ], ]; $form['membership']['subscription_sub_accounts']['sub_account__master'] = [ '#type' => 'textfield', '#title' => format_string('Du har @count aktive abonnementer:', [ '@count' => $data['subscription_data']['quantity'], ]), '#value' => $accountWrapper->value()->mail, '#default_value' => $accountWrapper->value()->mail, '#attributes' => [ 'readonly' => 'readonly' ], '#suffix' => 'Hvis du vil ændre email-addressen for dit master-abonnement, så skal du gøre det herover under "Konto"' ]; $subAccounts = mkbh_general_stripe_business_get_sub_accounts($accountWrapper->value()); $subAccountEmails = $subAccounts->keys()->toArray(); $masterTakesSeat = mkbh_general_stripe_business_get_master_takes_seat($accountWrapper->value()); $availableSeatCount = $masterTakesSeat ? $data['subscription_data']['quantity'] : $data['subscription_data']['quantity'] + 1; for ($i = 1; $i < $availableSeatCount; $i++) { $form['membership']['subscription_sub_accounts']["sub_account__employee_{$i}"] = [ '#type' => 'textfield', '#default_value' => null, '#attributes' => [ 'placeholder' => ["Medarbejder #{$i} email adresse"], 'class' => ['form-item-sub-account--employee'], 'data-delta' => $i, 'autocomplete' => 'new-password' ], ]; if ($subAccountEmail = array_shift($subAccountEmails)) { $form['membership']['subscription_sub_accounts']["sub_account__employee_{$i}"]['#default_value'] = $subAccountEmail; $form['membership']['subscription_sub_accounts']["sub_account__employee_{$i}"]['#attributes']['readonly'] = 'readonly'; $actions = [ '#markup' => implode('', [ '', '', ]) ]; $form['membership']['subscription_sub_accounts']["sub_account__employee_{$i}"]['#field_suffix'] = render($actions); } } $form['membership']['subscription_sub_accounts']['actions'] = [ '#type' => 'actions' ]; $form['membership']['subscription_sub_accounts']['actions']['hint_1'] = [ '#markup' => 'Du kan frit ændre hvilke øvrige brugere der skal have adgang til Magasinet KBH som del af dit abonnement.Du er tilmeldt '{$data['subscription_data']['plan']['name']}' medlemskab til {$planPricing[$data['subscription_data']['plan']['id']]} kr. om måneden.
", ]; if ($data['source'] === 'stripe') { $options = [ MKBH_DONATE_PERSONAL_BASIS_PLAN_ID => "Medlem Basis ({$planPricing[MKBH_DONATE_PERSONAL_BASIS_PLAN_ID]} kr.)", MKBH_DONATE_PERSONAL_BASIS_YEAR_PLAN_ID => "Medlem Basis / År ({$planPricing[MKBH_DONATE_PERSONAL_BASIS_YEAR_PLAN_ID]} kr.)", MKBH_DONATE_PERSONAL_PLUS_PLAN_ID => "Medlem Plus ({$planPricing[MKBH_DONATE_PERSONAL_PLUS_PLAN_ID]} kr.)", MKBH_DONATE_PERSONAL_PLUS_YEAR_PLAN_ID => "Medlem Plus / År ({$planPricing[MKBH_DONATE_PERSONAL_PLUS_YEAR_PLAN_ID]} kr.)", ]; $form['membership']['subscription'] = [ '#type' => 'select', '#title' => 'Ændre dit medlemskab:', '#options' => array_merge($options, [ '---' => str_repeat('-', 32), 'cancel' => 'Annuller medlemskab', ]), '#default_value' => [$data['subscription_data']['plan']['id'] ?? 'cancel'], ]; } elseif($data['source'] === 'manual') { $form['membership']['subscription_manual_notice'] = [ '#markup' => 'Du abonnerer offsite, så du kan ikke ændre dit abonnement via denne grænseflade.
' ]; } } if ($data['customer']) { try { $defaultPaymentMethod = \Stripe\PaymentMethod::retrieve( $data['customer']->invoice_settings->default_payment_method ?? $data['customer']['default_source'] ?? $data['subscription']['default_source'] ); $currentCard = $defaultPaymentMethod->card; if ($currentCard) { $form['membership']['update_payment_details'] = [ '#type' => '#container', '#attributes' => [ 'class' => ['update-payment-details'], ], '#weight' => 512, ]; $form['membership']['update_payment_details']['current_card'] = [ '#markup' => 'Du betaler med kort ' . strtoupper($currentCard->brand) . ' XXXX-XXXX-XXXX-' . $currentCard->last4 . '
Du har et aktivt abonnement med MobilePay.
' ]; break; } } else { $form['membership']['status'] = [ '#markup' => 'Du har ingen aktive medlemskaber eller abonnementer.
Du kan blive medlem på medlems-siden.
Du kan tegne erhvervsabonnement på abonnements-siden.
', ]; $masterEmployeeRelation = database()->table('mkbh_business_sub_accounts')->where('sub_uid', '=', $accountWrapper->getIdentifier())->first(); if ($masterEmployeeRelation !== null && $masterAccount = user_load($masterEmployeeRelation->master_uid)) { $form['membership']['status'] = [ '#markup' => "Dit abonnement forvaltes af virksomhedskonto {$masterAccount->mail}
", ]; } } if (isset($form['membership']['subscription'])) { $form['membership']['actions'] = [ '#type' => 'actions', ]; $form['membership']['actions']['save'] = [ '#type' => 'submit', '#value' => 'gem ændringer', '#submit' => ['mkbh_account_page_form_membership_change_subscription_submit'], '#name' => 'mkbh_account_page_form_membership_change_subscription_button', '#asaf_target_area' => 'form', ]; } $form['#attributes']['class'] = ['mkbh-account-page-form-membership']; if (module_exists('asaf')) { asaf_prepare_form($form, $form_state); } return $form; } function mkbh_account_page_form_membership_save_business_employee_accounts_submit($form, &$form_state) { $form_state['rebuild'] = true; try { mkbh_general_stripe_initialization(); $masterAccountWrapper = $form_state['storage']['account_wrapper']; $data = $form_state['storage']['data']; $subAccounts = mkbh_general_stripe_business_get_sub_accounts( $masterAccountWrapper->value() ); $formEmails = collect($form_state['values'])->filter(function ($value, $key) { return str_is('sub_account__employee_*', $key) && trim($value) !== '' && filter_var($value, FILTER_VALIDATE_EMAIL); }); /** @var \Illuminate\Support\Collection $emailsToAdd */ $emailsToAdd = $formEmails->values()->map(function ($email) use ($masterAccountWrapper) { $account = user_load_by_mail($email); if ($account === false) { $password = user_password(8); $fields = [ 'name' => email_registration_unique_username(explode("@", $email)[0]), 'mail' => $email, 'init' => $email, 'pass' => $password, 'status' => true, 'roles' => [ DRUPAL_AUTHENTICATED_RID => 'authenticated user', ], ]; $account = user_save(null, $fields); $account->password = $fields['pass']; rules_invoke_event( 'mkbh_donate_business_employee_created', trim($masterAccountWrapper->value()->mail), trim($email), $fields['pass'], user_pass_reset_url($account) ); $account = user_load_by_mail($email); $account->employee_notified = true; } return $account; }); $emailsToAdd->each(function ($account) use ($masterAccountWrapper, $subAccounts, $data) { if ($data['customer'] && $data['subscription']) { mkbh_general_stripe_create_local_business_employee_subscription($data['customer'], $data['subscription'], $account); } mkbh_general_stripe_business_link_sub_account($masterAccountWrapper->value(), $account); if (data_get($account, 'employee_notified', false) === false && !$subAccounts->has($account->mail)) { rules_invoke_event( 'mkbh_donate_business_employee_attached', $masterAccountWrapper->value()->mail, $account->mail ); } }); $subAccounts->keys()->diff($formEmails)->values()->each(function ($email) use ($masterAccountWrapper) { if ($account = user_load_by_mail($email)) { mkbh_general_stripe_delete_local_subscription($account); mkbh_general_stripe_business_unlink_sub_account($masterAccountWrapper->value(), $account); rules_invoke_event( 'mkbh_donate_business_employee_detached', $masterAccountWrapper->value()->mail, $account->mail ); } }); drupal_set_message('Medarbejderkonti er blevet gemt.'); } catch (Exception $e) { drupal_set_message('Ups! Noget gik galt. Opdater venligst siden og prøv igen.', 'error'); watchdog('mkbh_general', $e->getMessage(), [], WATCHDOG_ERROR); } $form_state['asaf_ajax_commands'][] = ajax_command_html('#mkbh-account-page-form-membership-messages', theme('status_messages')); } function mkbh_account_page_form_membership_change_subscription_submit($form, &$form_state) { $form_state['rebuild'] = true; try { mkbh_general_stripe_initialization(); $accountWrapper = $form_state['storage']['account_wrapper']; $data = $form_state['storage']['data']; if ($data['customer'] && $data['subscription']) { $newPlan = $form_state['values']['subscription']; if ($data['subscription']) { if ($newPlan == 'cancel') { $data['subscription']->cancel(); drupal_set_message('Dit medlemskab er blevet afmeldt.'); if ($accountWrapper->getIdentifier() > 0) { rules_invoke_event('stripe_subscription_cancel', $accountWrapper->value()); } database()->table('mkbh_stripe_subscriptions')->where('customer_id', '=', $data['customer']->id)->delete(); } elseif ($newPlan != '---') { if (is_numeric($newPlan)) { if ($newPlan < 5) { $quantity = (int)$newPlan; } else { $quantity = (int)$form_state['values']['subscription_quantity']; } $subAccounts = mkbh_general_stripe_business_get_sub_accounts($accountWrapper->value()); if ($quantity < $subAccounts->count()) { throw new OutOfBoundsException(); } \Stripe\Subscription::update($data['subscription']->id, [ 'cancel_at_period_end' => false, 'proration_behavior' => 'always_invoice', 'items' => [ [ 'id' => $data['subscription']->items->data[0]->id, 'price' => $data['subscription']->plan->id, 'quantity' => $quantity, ], ], ]); database()->table('mkbh_stripe_subscriptions')->where('customer_id', '=', $data['customer']->id)->update([ 'subscription_id' => $data['subscription']->id, 'plan_id' => $data['subscription']->plan->id, 'plan_name' => $data['subscription']->plan->nickname, 'frequency' => $data['subscription']->plan->interval, 'quantity' => $data['subscription']->quantity, ]); drupal_set_message('Antal ansatte i abonnement er ændret til ' . $newPlan); } else { $stripePlan = \Stripe\Plan::retrieve($newPlan); \Stripe\Subscription::update($data['subscription']->id, [ 'cancel_at_period_end' => false, 'proration_behavior' => 'always_invoice', 'items' => [ [ 'id' => $data['subscription']->items->data[0]->id, 'price' => $stripePlan->id, ], ], ]); database()->table('mkbh_stripe_subscriptions')->where('customer_id', '=', $data['customer']->id)->update([ 'subscription_id' => $data['subscription']->id, 'plan_id' => $stripePlan->id, 'plan_name' => $stripePlan->nickname, 'frequency' => $stripePlan->interval, ]); drupal_set_message('Dit medlemskab er blevet ændret til ' . $stripePlan->nickname); } } } else { throw new Exception('Trying to change plan on empty subscription.'); } } } catch (OutOfBoundsException $e) { drupal_set_message('Ups! Fjern venligst medarbejdere før nedgradering af dit abonnement.', 'warning'); } catch (Exception $e) { drupal_set_message('Ups! Noget gik galt. Opdater venligst siden og prøv igen.', 'error'); watchdog('mkbh_general', 'Stripe Error: ' . $e->getMessage(), [], WATCHDOG_ERROR); } $form_state['asaf_ajax_commands'][] = ajax_command_html('#mkbh-account-page-form-membership-messages', theme('status_messages')); }