diff --git a/classes/lite/class.pmpro_register_hooks.php b/classes/lite/class.pmpro_register_hooks.php index 26e7816..2a46a8d 100644 --- a/classes/lite/class.pmpro_register_hooks.php +++ b/classes/lite/class.pmpro_register_hooks.php @@ -22,187 +22,185 @@ class PMPro_Register_Hooks_Lite */ public function __construct() { - if (class_exists(Loader::class)) { - Helpers::registerIntegration('pmpro'); - - if (is_admin()) { - new TransactionPage( - esc_html__('PMPro transactions', 'pmpro-cryptopay'), - 'pmpro', - 9, - [ - 'orderId' => function ($tx) { - if (!isset($tx->orderId)) { - return esc_html__('Not found', 'pmpro-cryptopay'); - } - - return '' . $tx->orderId . ''; + Helpers::registerIntegration('pmpro'); + + if (is_admin()) { + new TransactionPage( + esc_html__('PMPro transactions', 'pmpro-cryptopay'), + 'pmpro', + 9, + [ + 'orderId' => function ($tx) { + if (!isset($tx->orderId)) { + return esc_html__('Not found', 'pmpro-cryptopay'); } - ] - ); - } - Hook::addFilter('init_pmpro', function (PaymentDataType $data) { - global $pmpro_levels; + return '' . $tx->orderId . ''; + } + ] + ); + } - if (!isset($pmpro_levels[$data->getParams()->get('levelId')])) { - Response::error(esc_html__('The relevant level was not found!', 'pmpro-cryptopay'), 'LEVEL_NOT_FOUND'); - } + Hook::addFilter('init_pmpro', function (PaymentDataType $data) { + global $pmpro_levels; - return $data; - }); + if (!isset($pmpro_levels[$data->getParams()->get('levelId')])) { + Response::error(esc_html__('The relevant level was not found!', 'pmpro-cryptopay'), 'LEVEL_NOT_FOUND'); + } - Hook::addFilter('before_payment_started_pmpro', function (PaymentDataType $data): PaymentDataType { - global $pmpro_levels; - $currentUser = wp_get_current_user(); + return $data; + }); - $order = new \MemberOrder(); - $level = $pmpro_levels[$data->getParams()->get('levelId')]; - pmpro_cryptopay_check_discount_code($level, $data->getParams()->get('discountCode')); + Hook::addFilter('before_payment_started_pmpro', function (PaymentDataType $data): PaymentDataType { + global $pmpro_levels; + $currentUser = wp_get_current_user(); - if (empty($order->code)) { - $order->code = $order->getRandomCode(); - } + $order = new \MemberOrder(); + $level = $pmpro_levels[$data->getParams()->get('levelId')]; + pmpro_cryptopay_check_discount_code($level, $data->getParams()->get('discountCode')); - // Set order values. - $order->membership_id = $level->id; - $order->membership_name = $level->name; - $order->InitialPayment = pmpro_round_price($level->initial_payment); - $order->PaymentAmount = pmpro_round_price($level->billing_amount); - $order->ProfileStartDate = date_i18n("Y-m-d\TH:i:s", current_time("timestamp")); - $order->BillingPeriod = $level->cycle_period; - $order->BillingFrequency = $level->cycle_number; - if ($level->billing_limit) { - $order->TotalBillingCycles = $level->billing_limit; - } - - // Set user info. - $order->FirstName = get_user_meta($currentUser->ID, 'first_name', true); - $order->LastName = get_user_meta($currentUser->ID, 'last_name', true); - $order->Email = $currentUser->user_email; - $order->Address1 = ""; - $order->Address2 = ""; - - // Set other values. - $order->billing = new \stdClass(); - $order->billing->name = $order->FirstName . " " . $order->LastName; - $order->billing->street = trim($order->Address1 . " " . $order->Address2); - $order->billing->city = ""; - $order->billing->state = ""; - $order->billing->country = ""; - $order->billing->zip = ""; - $order->billing->phone = ""; - - $order->gateway = 'cryptopay_lite'; - $order->payment_type = 'CryptoPay Lite'; - $order->setGateway(); - - // Set up level var. - $order->getMembershipLevelAtCheckout(); - - // Set tax. - $initialTax = $order->getTaxForPrice($order->InitialPayment); - $recurringTax = $order->getTaxForPrice($order->PaymentAmount); - - // Set amounts. - $order->initial_amount = pmpro_round_price((float) $order->InitialPayment + (float) $initialTax); - $order->subscription_amount = pmpro_round_price((float) $order->PaymentAmount + (float) $recurringTax); - - //just save, the user will go to PayPal to pay - $order->status = "review"; - $order->membership_id = $level->id; - $order->user_id = $data->getUserId(); - $order->payment_transaction_id = "PMPRO_CRYPTOPAY_LITE_" . $order->code; - $order->saveOrder(); - - $data->getOrder()->setId(intval($order->id)); - $data->getDynamicData()->set('orderId', intval($order->id)); + if (empty($order->code)) { + $order->code = $order->getRandomCode(); + } - return $data; - }); + // Set order values. + $order->membership_id = $level->id; + $order->membership_name = $level->name; + $order->InitialPayment = pmpro_round_price($level->initial_payment); + $order->PaymentAmount = pmpro_round_price($level->billing_amount); + $order->ProfileStartDate = date_i18n("Y-m-d\TH:i:s", current_time("timestamp")); + $order->BillingPeriod = $level->cycle_period; + $order->BillingFrequency = $level->cycle_number; + if ($level->billing_limit) { + $order->TotalBillingCycles = $level->billing_limit; + } - Hook::addFilter('before_payment_finished_pmpro', function (PaymentDataType $data): PaymentDataType { - $data->getOrder()->setId(intval($data->getDynamicData()->get('orderId'))); - return $data; - }); + // Set user info. + $order->FirstName = get_user_meta($currentUser->ID, 'first_name', true); + $order->LastName = get_user_meta($currentUser->ID, 'last_name', true); + $order->Email = $currentUser->user_email; + $order->Address1 = ""; + $order->Address2 = ""; + + // Set other values. + $order->billing = new \stdClass(); + $order->billing->name = $order->FirstName . " " . $order->LastName; + $order->billing->street = trim($order->Address1 . " " . $order->Address2); + $order->billing->city = ""; + $order->billing->state = ""; + $order->billing->country = ""; + $order->billing->zip = ""; + $order->billing->phone = ""; + + $order->gateway = 'cryptopay_lite'; + $order->payment_type = 'CryptoPay Lite'; + $order->setGateway(); + + // Set up level var. + $order->getMembershipLevelAtCheckout(); + + // Set tax. + $initialTax = $order->getTaxForPrice($order->InitialPayment); + $recurringTax = $order->getTaxForPrice($order->PaymentAmount); + + // Set amounts. + $order->initial_amount = pmpro_round_price((float) $order->InitialPayment + (float) $initialTax); + $order->subscription_amount = pmpro_round_price((float) $order->PaymentAmount + (float) $recurringTax); + + //just save, the user will go to PayPal to pay + $order->status = "review"; + $order->membership_id = $level->id; + $order->user_id = $data->getUserId(); + $order->payment_transaction_id = "PMPRO_CRYPTOPAY_LITE_" . $order->code; + $order->saveOrder(); + + $data->getOrder()->setId(intval($order->id)); + $data->getDynamicData()->set('orderId', intval($order->id)); + + return $data; + }); + + Hook::addFilter('before_payment_finished_pmpro', function (PaymentDataType $data): PaymentDataType { + $data->getOrder()->setId(intval($data->getDynamicData()->get('orderId'))); + return $data; + }); + + Hook::addAction('payment_finished_pmpro', function (PaymentDataType $data): void { + global $pmpro_levels, $wpdb; + + $orderId = $data->getDynamicData()->get('orderId'); + $order = new \MemberOrder($orderId); + if (!$order->id) { + return; + } - Hook::addAction('payment_finished_pmpro', function (PaymentDataType $data): void { - global $pmpro_levels, $wpdb; + if (!$data->getStatus()) { + $order->status = "error"; + $order->saveOrder(); + return; + } - $orderId = $data->getDynamicData()->get('orderId'); - $order = new \MemberOrder($orderId); - if (!$order->id) { - return; - } + $level = $pmpro_levels[$data->getParams()->get('levelId')]; + pmpro_cryptopay_check_discount_code($level, $data->getParams()->get('discountCode')); - if (!$data->getStatus()) { - $order->status = "error"; - $order->saveOrder(); - return; + $startdate = current_time("mysql"); + if (!empty($level->expiration_number)) { + if ('Hour' == $level->expiration_period) { + $enddate = date("Y-m-d H:i:s", strtotime("+ " . $level->expiration_number . " " . $level->expiration_period, current_time("timestamp"))); + } else { + $enddate = date("Y-m-d 23:59:59", strtotime("+ " . $level->expiration_number . " " . $level->expiration_period, current_time("timestamp"))); } + } else { + $enddate = "NULL"; + } - $level = $pmpro_levels[$data->getParams()->get('levelId')]; - pmpro_cryptopay_check_discount_code($level, $data->getParams()->get('discountCode')); + $discountCodeId = ""; + if ($data->getParams()->get('discountCode')) { + $discountCode = $data->getParams()->get('discountCode'); + $codeCheck = pmpro_checkDiscountCode($discountCode, $level->id, true); - $startdate = current_time("mysql"); - if (!empty($level->expiration_number)) { - if ('Hour' == $level->expiration_period) { - $enddate = date("Y-m-d H:i:s", strtotime("+ " . $level->expiration_number . " " . $level->expiration_period, current_time("timestamp"))); - } else { - $enddate = date("Y-m-d 23:59:59", strtotime("+ " . $level->expiration_number . " " . $level->expiration_period, current_time("timestamp"))); - } + if (false == $codeCheck[0]) { + $useDiscountCode = false; } else { - $enddate = "NULL"; + $useDiscountCode = true; } - $discountCodeId = ""; - if ($data->getParams()->get('discountCode')) { - $discountCode = $data->getParams()->get('discountCode'); - $codeCheck = pmpro_checkDiscountCode($discountCode, $level->id, true); + // update membership_user table. + if (!empty($discountCode) && !empty($useDiscountCode)) { + $discountCodeId = $wpdb->get_var("SELECT id FROM $wpdb->pmpro_discount_codes WHERE code = '" . esc_sql($discountCode) . "' LIMIT 1"); - if (false == $codeCheck[0]) { - $useDiscountCode = false; - } else { - $useDiscountCode = true; - } - - // update membership_user table. - if (!empty($discountCode) && !empty($useDiscountCode)) { - $discountCodeId = $wpdb->get_var("SELECT id FROM $wpdb->pmpro_discount_codes WHERE code = '" . esc_sql($discountCode) . "' LIMIT 1"); - - $wpdb->query("INSERT INTO $wpdb->pmpro_discount_codes_uses (code_id, user_id, order_id, timestamp) VALUES('" . $discountCodeId . "', '" . $data->getUserId() . "', '" . intval($orderId) . "', '" . current_time("mysql") . "')"); - } + $wpdb->query("INSERT INTO $wpdb->pmpro_discount_codes_uses (code_id, user_id, order_id, timestamp) VALUES('" . $discountCodeId . "', '" . $data->getUserId() . "', '" . intval($orderId) . "', '" . current_time("mysql") . "')"); } + } - $userLevel = [ - 'enddate' => $enddate, - 'startdate' => $startdate, - 'membership_id' => $level->id, - 'code_id' => $discountCodeId, - 'user_id' => $data->getUserId(), - 'trial_limit' => $level->trial_limit, - 'cycle_number' => $level->cycle_number, - 'cycle_period' => $level->cycle_period, - 'billing_limit' => $level->billing_limit, - 'trial_amount' => pmpro_round_price($level->trial_amount), - 'billing_amount' => pmpro_round_price($level->billing_amount), - 'initial_payment' => pmpro_round_price($level->initial_payment), - ]; - - pmpro_changeMembershipLevel($userLevel, $data->getUserId(), 'changed'); - - $order->status = "success"; - $order->saveOrder(); - }); - - Hook::addFilter('payment_redirect_urls_pmpro', function (PaymentDataType $data) { - return [ - 'failed' => pmpro_url("account"), - 'reminderEmail' => pmpro_url("account"), - 'success' => pmpro_url("confirmation", "?level=" . $data->getParams()->get('levelId')) - ]; - }); - } + $userLevel = [ + 'enddate' => $enddate, + 'startdate' => $startdate, + 'membership_id' => $level->id, + 'code_id' => $discountCodeId, + 'user_id' => $data->getUserId(), + 'trial_limit' => $level->trial_limit, + 'cycle_number' => $level->cycle_number, + 'cycle_period' => $level->cycle_period, + 'billing_limit' => $level->billing_limit, + 'trial_amount' => pmpro_round_price($level->trial_amount), + 'billing_amount' => pmpro_round_price($level->billing_amount), + 'initial_payment' => pmpro_round_price($level->initial_payment), + ]; + + pmpro_changeMembershipLevel($userLevel, $data->getUserId(), 'changed'); + + $order->status = "success"; + $order->saveOrder(); + }); + + Hook::addFilter('payment_redirect_urls_pmpro', function (PaymentDataType $data) { + return [ + 'failed' => pmpro_url("account"), + 'reminderEmail' => pmpro_url("account"), + 'success' => pmpro_url("confirmation", "?level=" . $data->getParams()->get('levelId')) + ]; + }); } } diff --git a/classes/pro/class.pmpro_register_hooks.php b/classes/pro/class.pmpro_register_hooks.php index 326db00..151ea8b 100644 --- a/classes/pro/class.pmpro_register_hooks.php +++ b/classes/pro/class.pmpro_register_hooks.php @@ -22,187 +22,185 @@ class PMPro_Register_Hooks */ public function __construct() { - if (class_exists(Loader::class)) { - Helpers::registerIntegration('pmpro'); - - if (is_admin()) { - new TransactionPage( - esc_html__('PMPro transactions', 'pmpro-cryptopay'), - 'pmpro', - 9, - [ - 'orderId' => function ($tx) { - if (!isset($tx->orderId)) { - return esc_html__('Not found', 'pmpro-cryptopay'); - } - - return '' . $tx->orderId . ''; + Helpers::registerIntegration('pmpro'); + + if (is_admin()) { + new TransactionPage( + esc_html__('PMPro transactions', 'pmpro-cryptopay'), + 'pmpro', + 9, + [ + 'orderId' => function ($tx) { + if (!isset($tx->orderId)) { + return esc_html__('Not found', 'pmpro-cryptopay'); } - ] - ); - } - Hook::addFilter('init_pmpro', function (PaymentDataType $data) { - global $pmpro_levels; + return '' . $tx->orderId . ''; + } + ] + ); + } - if (!isset($pmpro_levels[$data->getParams()->get('levelId')])) { - Response::error(esc_html__('The relevant level was not found!', 'pmpro-cryptopay'), 'LEVEL_NOT_FOUND'); - } + Hook::addFilter('init_pmpro', function (PaymentDataType $data) { + global $pmpro_levels; - return $data; - }); + if (!isset($pmpro_levels[$data->getParams()->get('levelId')])) { + Response::error(esc_html__('The relevant level was not found!', 'pmpro-cryptopay'), 'LEVEL_NOT_FOUND'); + } - Hook::addFilter('before_payment_started_pmpro', function (PaymentDataType $data): PaymentDataType { - global $pmpro_levels; - $currentUser = wp_get_current_user(); + return $data; + }); - $order = new \MemberOrder(); - $level = $pmpro_levels[$data->getParams()->get('levelId')]; - pmpro_cryptopay_check_discount_code($level, $data->getParams()->get('discountCode')); + Hook::addFilter('before_payment_started_pmpro', function (PaymentDataType $data): PaymentDataType { + global $pmpro_levels; + $currentUser = wp_get_current_user(); - if (empty($order->code)) { - $order->code = $order->getRandomCode(); - } + $order = new \MemberOrder(); + $level = $pmpro_levels[$data->getParams()->get('levelId')]; + pmpro_cryptopay_check_discount_code($level, $data->getParams()->get('discountCode')); - // Set order values. - $order->membership_id = $level->id; - $order->membership_name = $level->name; - $order->InitialPayment = pmpro_round_price($level->initial_payment); - $order->PaymentAmount = pmpro_round_price($level->billing_amount); - $order->ProfileStartDate = date_i18n("Y-m-d\TH:i:s", current_time("timestamp")); - $order->BillingPeriod = $level->cycle_period; - $order->BillingFrequency = $level->cycle_number; - if ($level->billing_limit) { - $order->TotalBillingCycles = $level->billing_limit; - } - - // Set user info. - $order->FirstName = get_user_meta($currentUser->ID, 'first_name', true); - $order->LastName = get_user_meta($currentUser->ID, 'last_name', true); - $order->Email = $currentUser->user_email; - $order->Address1 = ""; - $order->Address2 = ""; - - // Set other values. - $order->billing = new \stdClass(); - $order->billing->name = $order->FirstName . " " . $order->LastName; - $order->billing->street = trim($order->Address1 . " " . $order->Address2); - $order->billing->city = ""; - $order->billing->state = ""; - $order->billing->country = ""; - $order->billing->zip = ""; - $order->billing->phone = ""; - - $order->gateway = 'cryptopay'; - $order->payment_type = 'CryptoPay'; - $order->setGateway(); - - // Set up level var. - $order->getMembershipLevelAtCheckout(); - - // Set tax. - $initialTax = $order->getTaxForPrice($order->InitialPayment); - $recurringTax = $order->getTaxForPrice($order->PaymentAmount); - - // Set amounts. - $order->initial_amount = pmpro_round_price((float) $order->InitialPayment + (float) $initialTax); - $order->subscription_amount = pmpro_round_price((float) $order->PaymentAmount + (float) $recurringTax); - - //just save, the user will go to PayPal to pay - $order->status = "review"; - $order->membership_id = $level->id; - $order->user_id = $data->getUserId(); - $order->payment_transaction_id = "PMPRO_CRYPTOPAY_" . $order->code; - $order->saveOrder(); - - $data->getOrder()->setId(intval($order->id)); - $data->getDynamicData()->set('orderId', intval($order->id)); + if (empty($order->code)) { + $order->code = $order->getRandomCode(); + } - return $data; - }); + // Set order values. + $order->membership_id = $level->id; + $order->membership_name = $level->name; + $order->InitialPayment = pmpro_round_price($level->initial_payment); + $order->PaymentAmount = pmpro_round_price($level->billing_amount); + $order->ProfileStartDate = date_i18n("Y-m-d\TH:i:s", current_time("timestamp")); + $order->BillingPeriod = $level->cycle_period; + $order->BillingFrequency = $level->cycle_number; + if ($level->billing_limit) { + $order->TotalBillingCycles = $level->billing_limit; + } - Hook::addFilter('before_payment_finished_pmpro', function (PaymentDataType $data): PaymentDataType { - $data->getOrder()->setId(intval($data->getDynamicData()->get('orderId'))); - return $data; - }); + // Set user info. + $order->FirstName = get_user_meta($currentUser->ID, 'first_name', true); + $order->LastName = get_user_meta($currentUser->ID, 'last_name', true); + $order->Email = $currentUser->user_email; + $order->Address1 = ""; + $order->Address2 = ""; + + // Set other values. + $order->billing = new \stdClass(); + $order->billing->name = $order->FirstName . " " . $order->LastName; + $order->billing->street = trim($order->Address1 . " " . $order->Address2); + $order->billing->city = ""; + $order->billing->state = ""; + $order->billing->country = ""; + $order->billing->zip = ""; + $order->billing->phone = ""; + + $order->gateway = 'cryptopay'; + $order->payment_type = 'CryptoPay'; + $order->setGateway(); + + // Set up level var. + $order->getMembershipLevelAtCheckout(); + + // Set tax. + $initialTax = $order->getTaxForPrice($order->InitialPayment); + $recurringTax = $order->getTaxForPrice($order->PaymentAmount); + + // Set amounts. + $order->initial_amount = pmpro_round_price((float) $order->InitialPayment + (float) $initialTax); + $order->subscription_amount = pmpro_round_price((float) $order->PaymentAmount + (float) $recurringTax); + + //just save, the user will go to PayPal to pay + $order->status = "review"; + $order->membership_id = $level->id; + $order->user_id = $data->getUserId(); + $order->payment_transaction_id = "PMPRO_CRYPTOPAY_" . $order->code; + $order->saveOrder(); + + $data->getOrder()->setId(intval($order->id)); + $data->getDynamicData()->set('orderId', intval($order->id)); + + return $data; + }); + + Hook::addFilter('before_payment_finished_pmpro', function (PaymentDataType $data): PaymentDataType { + $data->getOrder()->setId(intval($data->getDynamicData()->get('orderId'))); + return $data; + }); + + Hook::addAction('payment_finished_pmpro', function (PaymentDataType $data): void { + global $pmpro_levels, $wpdb; + + $orderId = $data->getDynamicData()->get('orderId'); + $order = new \MemberOrder($orderId); + if (!$order->id) { + return; + } - Hook::addAction('payment_finished_pmpro', function (PaymentDataType $data): void { - global $pmpro_levels, $wpdb; + if (!$data->getStatus()) { + $order->status = "error"; + $order->saveOrder(); + return; + } - $orderId = $data->getDynamicData()->get('orderId'); - $order = new \MemberOrder($orderId); - if (!$order->id) { - return; - } + $level = $pmpro_levels[$data->getParams()->get('levelId')]; + pmpro_cryptopay_check_discount_code($level, $data->getParams()->get('discountCode')); - if (!$data->getStatus()) { - $order->status = "error"; - $order->saveOrder(); - return; + $startdate = current_time("mysql"); + if (!empty($level->expiration_number)) { + if ('Hour' == $level->expiration_period) { + $enddate = date("Y-m-d H:i:s", strtotime("+ " . $level->expiration_number . " " . $level->expiration_period, current_time("timestamp"))); + } else { + $enddate = date("Y-m-d 23:59:59", strtotime("+ " . $level->expiration_number . " " . $level->expiration_period, current_time("timestamp"))); } + } else { + $enddate = "NULL"; + } - $level = $pmpro_levels[$data->getParams()->get('levelId')]; - pmpro_cryptopay_check_discount_code($level, $data->getParams()->get('discountCode')); + $discountCodeId = ""; + if ($data->getParams()->get('discountCode')) { + $discountCode = $data->getParams()->get('discountCode'); + $codeCheck = pmpro_checkDiscountCode($discountCode, $level->id, true); - $startdate = current_time("mysql"); - if (!empty($level->expiration_number)) { - if ('Hour' == $level->expiration_period) { - $enddate = date("Y-m-d H:i:s", strtotime("+ " . $level->expiration_number . " " . $level->expiration_period, current_time("timestamp"))); - } else { - $enddate = date("Y-m-d 23:59:59", strtotime("+ " . $level->expiration_number . " " . $level->expiration_period, current_time("timestamp"))); - } + if (false == $codeCheck[0]) { + $useDiscountCode = false; } else { - $enddate = "NULL"; + $useDiscountCode = true; } - $discountCodeId = ""; - if ($data->getParams()->get('discountCode')) { - $discountCode = $data->getParams()->get('discountCode'); - $codeCheck = pmpro_checkDiscountCode($discountCode, $level->id, true); + // update membership_user table. + if (!empty($discountCode) && !empty($useDiscountCode)) { + $discountCodeId = $wpdb->get_var("SELECT id FROM $wpdb->pmpro_discount_codes WHERE code = '" . esc_sql($discountCode) . "' LIMIT 1"); - if (false == $codeCheck[0]) { - $useDiscountCode = false; - } else { - $useDiscountCode = true; - } - - // update membership_user table. - if (!empty($discountCode) && !empty($useDiscountCode)) { - $discountCodeId = $wpdb->get_var("SELECT id FROM $wpdb->pmpro_discount_codes WHERE code = '" . esc_sql($discountCode) . "' LIMIT 1"); - - $wpdb->query("INSERT INTO $wpdb->pmpro_discount_codes_uses (code_id, user_id, order_id, timestamp) VALUES('" . $discountCodeId . "', '" . $data->getUserId() . "', '" . intval($orderId) . "', '" . current_time("mysql") . "')"); - } + $wpdb->query("INSERT INTO $wpdb->pmpro_discount_codes_uses (code_id, user_id, order_id, timestamp) VALUES('" . $discountCodeId . "', '" . $data->getUserId() . "', '" . intval($orderId) . "', '" . current_time("mysql") . "')"); } + } - $userLevel = [ - 'enddate' => $enddate, - 'startdate' => $startdate, - 'membership_id' => $level->id, - 'code_id' => $discountCodeId, - 'user_id' => $data->getUserId(), - 'trial_limit' => $level->trial_limit, - 'cycle_number' => $level->cycle_number, - 'cycle_period' => $level->cycle_period, - 'billing_limit' => $level->billing_limit, - 'trial_amount' => pmpro_round_price($level->trial_amount), - 'billing_amount' => pmpro_round_price($level->billing_amount), - 'initial_payment' => pmpro_round_price($level->initial_payment), - ]; - - pmpro_changeMembershipLevel($userLevel, $data->getUserId(), 'changed'); - - $order->status = "success"; - $order->saveOrder(); - }); - - Hook::addFilter('payment_redirect_urls_pmpro', function (PaymentDataType $data) { - return [ - 'failed' => pmpro_url("account"), - 'reminderEmail' => pmpro_url("account"), - 'success' => pmpro_url("confirmation", "?level=" . $data->getParams()->get('levelId')) - ]; - }); - } + $userLevel = [ + 'enddate' => $enddate, + 'startdate' => $startdate, + 'membership_id' => $level->id, + 'code_id' => $discountCodeId, + 'user_id' => $data->getUserId(), + 'trial_limit' => $level->trial_limit, + 'cycle_number' => $level->cycle_number, + 'cycle_period' => $level->cycle_period, + 'billing_limit' => $level->billing_limit, + 'trial_amount' => pmpro_round_price($level->trial_amount), + 'billing_amount' => pmpro_round_price($level->billing_amount), + 'initial_payment' => pmpro_round_price($level->initial_payment), + ]; + + pmpro_changeMembershipLevel($userLevel, $data->getUserId(), 'changed'); + + $order->status = "success"; + $order->saveOrder(); + }); + + Hook::addFilter('payment_redirect_urls_pmpro', function (PaymentDataType $data) { + return [ + 'failed' => pmpro_url("account"), + 'reminderEmail' => pmpro_url("account"), + 'success' => pmpro_url("confirmation", "?level=" . $data->getParams()->get('levelId')) + ]; + }); } }