Added 'minimum user age' setting
authorMarcel Werk <burntime@woltlab.com>
Mon, 7 Jul 2014 23:26:41 +0000 (01:26 +0200)
committerMarcel Werk <burntime@woltlab.com>
Mon, 7 Jul 2014 23:26:41 +0000 (01:26 +0200)
com.woltlab.wcf/option.xml
wcfsetup/install/files/lib/system/option/user/UserOptionHandler.class.php
wcfsetup/install/lang/de.xml
wcfsetup/install/lang/en.xml

index a0f74755cdcdb36706a6eb9bc3605fe1f6554a61..fbedf945fa3e86761b12574c38d7269ec3f262ab 100644 (file)
@@ -945,6 +945,12 @@ no:!cache_source_memcached_host]]></enableoptions>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>1</defaultvalue>
                        </option>
+                       <option name="register_min_user_age">
+                               <categoryname>user.register</categoryname>
+                               <optiontype>integer</optiontype>
+                               <defaultvalue>0</defaultvalue>
+                               <minvalue>0</minvalue>
+                       </option>
                        
                        <option name="register_disabled">
                                <categoryname>user.register</categoryname>
index 6c2d28e1d85799f64b86a1742296a4ea25f2d439..d44720b7dd3f7709173142137dabcc8300b6ebb7 100644 (file)
@@ -7,6 +7,7 @@ use wcf\data\user\User;
 use wcf\system\exception\UserInputException;
 use wcf\system\option\ISearchableConditionUserOption;
 use wcf\system\option\OptionHandler;
+use wcf\util\DateUtil;
 
 /**
  * Handles user options.
@@ -188,6 +189,18 @@ class UserOptionHandler extends OptionHandler {
                if ($option->required && 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');
+                               }
+                       }
+               }
        }
        
        /**
@@ -210,7 +223,7 @@ class UserOptionHandler extends OptionHandler {
                }
                
                // in registration
-               if ($this->inRegistration && !$option->askDuringRegistration && !$option->required) {
+               if ($this->inRegistration && !$option->askDuringRegistration && !$option->required && ($option->optionName != 'birthday' || !REGISTER_MIN_USER_AGE)) {
                        return false;
                }
                
index b2f1186a41e0951c25afa5958184f326cec181cf..a8486e735112c236c6f8c7b8b0187b9ffb56b4ab 100644 (file)
                <item name="wcf.acp.option.register_username_min_length"><![CDATA[Minimale Benutzernamenlänge]]></item>
                <item name="wcf.acp.option.register_username_max_length"><![CDATA[Maximale Benutzernamenlänge]]></item>
                <item name="wcf.acp.option.register_username_force_ascii"><![CDATA[Benutzernamen auf ASCII-Zeichen beschränken]]></item>
+               <item name="wcf.acp.option.register_min_user_age"><![CDATA[Mindestalter]]></item>
                <item name="wcf.acp.option.register_disabled"><![CDATA[Registrierung deaktivieren]]></item>
                <item name="wcf.acp.option.register_disabled.description"><![CDATA[Schaltet die Registrierung für neue Benutzer gänzlich ab. Neue Benutzer können nur noch manuell durch den Administrator angelegt werden.]]></item>
                <item name="wcf.acp.option.register_enable_disclaimer"><![CDATA[Nutzungsbedingungen aktivieren]]></item>
@@ -2479,6 +2480,7 @@ Fehler sind beispielsweise:
                <item name="wcf.user.option.error.tooLong"><![CDATA[Der eingegebene Text ist zu lang.]]></item>
                <item name="wcf.user.option.error.tooShort"><![CDATA[Der eingegebene Text ist zu kurz.]]></item>
                <item name="wcf.user.option.error.validationFailed"><![CDATA[Sie haben einen ungültigen Inhalt eingegeben.]]></item>
+               <item name="wcf.user.option.error.birthdayTooYoung"><![CDATA[Sie sind zu jung. Für eine Anmeldung auf dieser Seite müssen Sie mindestens {#REGISTER_MIN_USER_AGE} Jahre alt sein.]]></item>
                <item name="wcf.user.error.isBanned"><![CDATA[Ihr Benutzeraccount wurde gesperrt{if $__wcf->user->banReason}: {@$__wcf->user->banReason|htmlspecialchars|nl2br}{else}.{/if}]]></item>
                <item name="wcf.user.access.everyone"><![CDATA[Jeder]]></item>
                <item name="wcf.user.access.following"><![CDATA[Benutzer, denen ich folge]]></item>
index ab8369ddd58214617ac02f2ad768689e55ebfe38..44cf656dcb52f60a69c8c48243378d93843b0e7f 100644 (file)
@@ -897,6 +897,7 @@ Examples for medium ID detection:
                <item name="wcf.acp.option.register_username_min_length"><![CDATA[Minimum Username Length]]></item>
                <item name="wcf.acp.option.register_username_max_length"><![CDATA[Maximum Username Length]]></item>
                <item name="wcf.acp.option.register_username_force_ascii"><![CDATA[Require ASCII characters for usernames]]></item>
+               <item name="wcf.acp.option.register_min_user_age"><![CDATA[TODO: Mindestalter]]></item>
                <item name="wcf.acp.option.register_disabled"><![CDATA[Disable registration]]></item>
                <item name="wcf.acp.option.register_disabled.description"><![CDATA[Disables registration for all users, new users may be created through an administrator.]]></item>
                <item name="wcf.acp.option.register_enable_disclaimer"><![CDATA[Enable disclaimer]]></item>
@@ -2340,6 +2341,7 @@ Errors are:
                <item name="wcf.user.option.error.tooLong"><![CDATA[Entered text is too long.]]></item>
                <item name="wcf.user.option.error.tooShort"><![CDATA[Entered text is too short.]]></item>
                <item name="wcf.user.option.error.validationFailed"><![CDATA[Entered text is invalid.]]></item>
+               <item name="wcf.user.option.error.birthdayTooYoung"><![CDATA[TODO: Sie sind zu jung. Für eine Anmeldung auf dieser Seite müssen Sie mindestens {#REGISTER_MIN_USER_AGE} Jahre alt sein.]]></item>
                <item name="wcf.user.error.isBanned"><![CDATA[Your user account has been banned{if $__wcf->user->banReason}: {@$__wcf->user->banReason|htmlspecialchars|nl2br}{else}.{/if}]]></item>
                <item name="wcf.user.access.everyone"><![CDATA[Everyone]]></item>
                <item name="wcf.user.access.following"><![CDATA[Users I’m following]]></item>