示例#1
0
 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);
 }