protected function processCode() { global $lng, $ilAuth, $ilCtrl; $uname = $_POST["uname"]; $form = $this->initCodeForm($uname); if ($uname && $form->checkInput()) { $code = $form->getInput("code"); include_once "Services/User/classes/class.ilAccountCode.php"; if (ilAccountCode::isUnusedCode($code)) { $valid_until = ilAccountCode::getCodeValidUntil($code); if (!($user_id = ilObjUser::_lookupId($uname))) { $this->showLogin(); return false; } $invalid_code = false; $user = new ilObjUser($user_id); if ($valid_until === "0") { $user->setTimeLimitUnlimited(true); } else { if (is_numeric($valid_until)) { $valid_until = strtotime("+" . $valid_until . "days"); } else { $valid_until = explode("-", $valid_until); $valid_until = mktime(23, 59, 59, $valid_until[1], $valid_until[2], $valid_until[0]); if ($valid_until < time()) { $invalid_code = true; } } if (!$invalid_code) { $user->setTimeLimitUnlimited(false); $user->setTimeLimitUntil($valid_until); } } if (!$invalid_code) { $user->setActive(true); ilAccountCode::useCode($code); // apply registration code role assignments ilAccountCode::applyRoleAssignments($user, $code); // apply registration code time limits ilAccountCode::applyAccessLimits($user, $code); $user->update(); $ilCtrl->setParameter($this, "cu", 1); $ilCtrl->redirect($this, "showLogin"); } } $lng->loadLanguageModule("user"); $field = $form->getItemByPostVar("code"); $field->setAlert($lng->txt("user_account_code_not_valid")); } $form->setValuesByPost(); $this->showCodeForm($uname, $form); }