/** * This will create a permanent (non-provisional) public login record for a specific person. * If the person already has a public login record, this will likely throw a database error. * If the username is already taken, this will likely throw a database error. * @param Person $objPerson * @param string $strUsername * @param string $strPassword * @param string $strLostPasswordQuestion * @param string $strLostPasswordAnswer * @return PublicLogin */ public static function CreateForPerson(Person $objPerson, $strUsername, $strPassword, $strLostPasswordQuestion, $strLostPasswordAnswer) { $strUsername = QApplication::Tokenize($strUsername, false); if (strlen($strUsername) < 4) { throw new QCallerException('Username is too short: ' . $strUsername); } if (!self::IsProvisionalCreatableForUsername($strUsername)) { throw new QCallerException('Username is already taken: ' . $strUsername); } $objPublicLogin = new PublicLogin(); $objPublicLogin->ActiveFlag = true; $objPublicLogin->Person = $objPerson; $objPublicLogin->Username = $strUsername; $objPublicLogin->SetPassword($strPassword); $objPublicLogin->LostPasswordQuestion = trim($strLostPasswordQuestion); $objPublicLogin->LostPasswordAnswer = trim($strLostPasswordAnswer); $objPublicLogin->TemporaryPasswordFlag = false; $objPublicLogin->DateRegistered = QDateTime::Now(); $objPublicLogin->Save(); return $objPublicLogin; }