/** * @see wcf\form\IForm::validate() */ public function validate() { // validate static user options try { $this->validateUsername($this->username); } catch (UserInputException $e) { $this->errorType[$e->getField()] = $e->getType(); } try { $this->validateEmail($this->email, $this->confirmEmail); } catch (UserInputException $e) { $this->errorType[$e->getField()] = $e->getType(); } try { $this->validatePassword($this->password, $this->confirmPassword); } catch (UserInputException $e) { $this->errorType[$e->getField()] = $e->getType(); } // validate user groups if (!empty($this->groupIDs)) { $conditions = new PreparedStatementConditionBuilder(); $conditions->add("groupID IN (?)", array($this->groupIDs)); $conditions->add("groupType NOT IN (?)", array(array(UserGroup::GUESTS, UserGroup::EVERYONE, UserGroup::USERS))); $sql = "SELECT groupID FROM wcf".WCF_N."_user_group ".$conditions; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute($conditions->getParameters()); $this->groupIDs = array(); while ($row = $statement->fetchArray()) { if (UserGroup::isAccessibleGroup(array($row['groupID']))) { $this->groupIDs[] = $row['groupID']; } } } // validate user language $language = LanguageFactory::getInstance()->getLanguage($this->languageID); if ($language === null || !$language->languageID) { // use default language $this->languageID = LanguageFactory::getInstance()->getDefaultLanguageID(); } // validate visible languages foreach ($this->visibleLanguages as $key => $visibleLanguage) { $language = LanguageFactory::getInstance()->getLanguage($visibleLanguage); if (!$language->languageID || !$language->hasContent) { unset($this->visibleLanguages[$key]); } } if (empty($this->visibleLanguages) && ($language = LanguageFactory::getInstance()->getLanguage($this->languageID)) && $language->hasContent) { $this->visibleLanguages[] = $this->languageID; } // validate dynamic options parent::validate(); }