/**
  * @see	\wcf\system\option\OptionHandler::validateOption()
  */
 protected function validateOption(Option $option)
 {
     parent::validateOption($option);
     if ($option->required && $option->optionType != 'boolean' && empty($this->optionValues[$option->optionName])) {
         throw new UserInputException($option->optionName);
     }
     if (REGISTER_MIN_USER_AGE) {
         if ($this->inRegistration && $option->optionName == 'birthday') {
             if (empty($this->optionValues[$option->optionName])) {
                 throw new UserInputException($option->optionName);
             }
             if (DateUtil::getAge($this->optionValues[$option->optionName]) < REGISTER_MIN_USER_AGE) {
                 throw new UserInputException($option->optionName, 'birthdayTooYoung');
             }
         }
     }
 }
 /**
  * @see	\wcf\system\option\OptionHandler::validateOption()
  */
 protected function validateOption(Option $option)
 {
     parent::validateOption($option);
     if (!$this->isAdmin()) {
         // get type object
         $typeObj = $this->getTypeObject($option->optionType);
         if ($typeObj->compare($this->optionValues[$option->optionName], WCF::getSession()->getPermission($option->optionName)) == 1) {
             throw new UserInputException($option->optionName, 'exceedsOwnPermission');
         }
     } else {
         if ($option->optionName == 'admin.user.accessibleGroups' && $this->group !== null && $this->group->isAdminGroup()) {
             $hasOtherAdminGroup = false;
             foreach (UserGroup::getGroupsByType() as $userGroup) {
                 if ($userGroup->groupID != $this->group->groupID && $userGroup->isAdminGroup()) {
                     $hasOtherAdminGroup = true;
                     break;
                 }
             }
             // prevent users from dropping their own admin state
             if (!$hasOtherAdminGroup) {
                 // get type object
                 $typeObj = $this->getTypeObject($option->optionType);
                 if ($typeObj->compare($this->optionValues[$option->optionName], WCF::getSession()->getPermission($option->optionName)) == -1) {
                     throw new UserInputException($option->optionName, 'cannotDropPrivileges');
                 }
             }
         }
     }
 }
 /**
  * @see	wcf\system\option\OptionHandler::validateOption()
  */
 protected function validateOption(Option $option)
 {
     parent::validateOption($option);
     if ($option->required && empty($this->optionValues[$option->optionName])) {
         throw new UserInputException($option->optionName);
     }
 }