$MaxTime = clean_int($_POST['MaxTime']); } if ($_POST['Max_Time'] == 'inherit') { $MaxTime = @$groupSettings[$group]['MaxTime']; } // We create the batch first, then add users to it (prevents us having unattached users if the batch dies for some reason) $batchID = $Settings->nextBatchID(); $Settings->saveBatch($batchID, array(), $Auth->getUsername(), \Grase\Clean::text($_POST['Comment'])); $Settings->setSetting('lastbatch', $batchID); $failedUsers = 0; for ($i = 0; $i < $user['numberoftickets']; $i++) { // Creating lots of users at once could timeout a script. Maybe add a set_time_limit(1) on each loop? if ($Settings->getSetting('simpleUsername')) { $username = \Grase\Util::randomLowercase($Settings->getSetting('usernameLength')); } else { $username = \Grase\Util::randomUsername($Settings->getSetting('usernameLength')); } if ($Settings->getSetting('numericPassword')) { $password = \Grase\Util::randomNumericPassword($Settings->getSetting('passwordLength')); } else { $password = \Grase\Util::randomPassword($Settings->getSetting('passwordLength')); } // Attempt to create user. Will error if it's not a unique username if (DatabaseFunctions::getInstance()->createUser($username, $password, $MaxMb, $MaxTime, expiry_for_group($group, $groupSettings), $groupSettings[$group]['ExpireAfter'], \Grase\Clean::text($_POST['Group']), \Grase\Clean::text($_POST['Comment']))) { AdminLog::getInstance()->log("Created new user {$username}"); $Settings->addUserToBatch($batchID, $username); $createdUsernames[] = $username; } else { // Failed to create. Most likely not a unique username. // Try again but only for so long (i.e. all usernames are in use) $i--;
$templateEngine->assign('selectedgateway', $_SESSION['selectedpaymentgateway']); $templateEngine->assign('selectedvoucher', $_SESSION['selectedvoucher']); $templateEngine->display('wizard_confirmselection.tpl'); break; case 'paymentpage': //TODO Create user account and lock it here, so it's ready for the plugin to do with as needed (i.e. send details) //var_dump($_SESSION); //var_dump($_POST); //var_dump($vouchers); if (!isset($_SESSION['PendingAccount'])) { /* Create our locked random user */ $MaxMb = $vouchers[$_SESSION['selectedvoucher']]['MaxMb']; $MaxTime = $vouchers[$_SESSION['selectedvoucher']]['MaxTime']; $Expiry = expiry_for_group($vouchers[$_SESSION['selectedvoucher']]['VoucherGroup']); $Comment = $_SESSION['selectedvoucher'] . " Voucher purchased " . date(); $Username = \Grase\Util::randomUsername(5); $Password = \Grase\Util::randomPassword(6); // TODO Maybe set expiry to a few days so if payment isn't valid then we expire soon, and after sucessful payment we update expiry? DatabaseFunctions::getInstance()->createUser($Username, $Password, $MaxMb, $MaxTime, $Expiry, false, $vouchers[$_SESSION['selectedvoucher']]['VoucherGroup'], $Comment); // Lock user account DatabaseFunctions::getInstance()->lockUser($Username, T_('Account Pending Payment and Activation')); // Store user account in session $_SESSION['PendingAccount'] = array('Username' => $Username, 'Password' => $Password); } /* */ require_once 'paymentgateways/PaymentGatewayPlugin.class.php'; if (!is_file('paymentgateways/' . $paymentgateways[$_SESSION['selectedpaymentgateway']]['pluginfile'])) { die('Invalid payment plugin<br/><form action="" method="POST"><input type="hidden" name="pgformsubmission" value="1"/><input name="restartwizard" type="submit" value="Restart Wizard"/>'); } // TODO Clean up and make error detection lots lots better require_once 'paymentgateways/' . $paymentgateways[$_SESSION['selectedpaymentgateway']]['pluginfile'];