private static function _handlePremiumAction(WebSoccer $website, DbConnection $db, I18n $i18n, $actionId, $creditsRequired, $validatedParams, $controllerName) { // check if user has enough credit if ($creditsRequired > $website->getUser()->premiumBalance) { $targetPage = $website->getConfig('premium_infopage'); // redirect to external info page if (filter_var($targetPage, FILTER_VALIDATE_URL)) { header('location: ' . $targetPage); exit; // render info page } else { $website->addContextParameter('premium_balance_required', $creditsRequired); return $targetPage; } } // debit amount and execute action if ($website->getRequestParameter('premiumconfirmed')) { PremiumDataService::debitAmount($website, $db, $website->getUser()->id, $creditsRequired, $actionId); return self::_executeAction($website, $db, $i18n, $actionId, $controllerName, $validatedParams); } // redirect to confirmation page $website->addContextParameter('premium_balance_required', $creditsRequired); $website->addContextParameter('actionparameters', $validatedParams); $website->addContextParameter('actionid', $actionId); $website->addContextParameter('srcpage', $website->getPageId()); return 'premium-confirm-action'; }