XF 1.5 Legal issue: User needs to delete his date of birth himself

snoopy5

Well-known member
Hi,

as far as I know, there is no possibility in XF 1.5.2 for the user to delete his date of birth (dob) himself in his user profile. I know that he can hide it, but legally this is something different.

I am afraid that by German law. I need to offer the possibility for the user to delete, not just hide, or at least change his dob. In Germany we are not allowed to store private data against the will of the user. So once he changes his mind, we need to change this.

But it does not make sens to make it in ACP. This wastes only the time of the admin.

Is there a possibility to change this for the user? If not, will this be possible for the user in a future version to be in line with the law of other countries?
 
you can delete that part in the template account_personal_details
Rich (BB code):
<xen:title>{xen:phrase personal_details}</xen:title>

<xen:require css="account.css" />
<xen:require js="js/xenforo/personal_details_editor.js" />

<xen:edithint template="account_avatar_overlay.css" />
<xen:edithint template="account_avatar_overlay" />

<form method="post" class="xenForm personalDetailsForm AutoValidator"
    action="{xen:link 'account/personal-details-save'}"
    data-fieldValidatorUrl="{xen:link 'account/validate-field.json'}">

    <xen:hook name="account_personal_details_status">
    <xen:if is="{$canUpdateStatus}">
        <dl class="ctrlUnit">
            <dt><label for="ctrl_status">{xen:phrase status_message}:</label></dt>
            <dd>
                <textarea name="status" rows="2" cols="60" id="ctrl_status" autofocus="autofocus" class="textCtrl StatusEditor UserTagger Elastic OptOut" data-statusEditorCounter="#statusEditorCounter"></textarea>
                <span id="statusEditorCounter" title="{xen:phrase characters_remaining}"></span>
                <div class="explain"><h3 class="statusHeader">{xen:phrase current_status}:</h3> <span class="CurrentStatus"><xen:if is="{$visitor.status}">{xen:helper bodytext, $visitor.status}<xen:else />({xen:phrase none})</xen:if></span><!--TODO: clearing--></div>
            </dd>
        </dl>
    </xen:if>
    </xen:hook>

    <xen:if hascontent="true">
        <fieldset>
            <xen:contentcheck>
                <xen:if is="{$canEditAvatar}">
                    <dl class="ctrlUnit avatarEditor">
                        <dt><label>{xen:phrase avatar}:</label></dt>
                        <dd>
                            <xen:avatar user="$visitor" size="m" class="OverlayTrigger" href="{xen:link account/avatar}" />
                            <p class="explain">{xen:phrase click_image_to_change_your_avatar}</p>
                        </dd>
                    </dl>
                </xen:if>
           
                <xen:if is="{$canEditCustomTitle}">
                    <dl class="ctrlUnit">
                        <dt><label for="ctrl_custom_title">{xen:phrase custom_title}:</label></dt>
                        <dd>
                            <input type="text" name="custom_title" value="{$visitor.custom_title}" id="ctrl_custom_title" class="textCtrl" />
                            <p class="explain">{xen:phrase if_specified_replace_title_that_displays_under_name_in_posts}</p>
                        </dd>
                    </dl>
                </xen:if>
            </xen:contentcheck>
        </fieldset>
    </xen:if>

    <xen:hook name="account_personal_details_biometrics">
    <fieldset>
        <dl class="ctrlUnit">
            <dt><label>{xen:phrase gender}:</label></dt>
            <dd>
                <ul>
                    <li><label for="ctrl_gender_male"><input type="radio" name="gender" value="male" id="ctrl_gender_male" {xen:checked "{$visitor.gender} == 'male'"} /> {xen:phrase male}</label></li>
                    <li><label for="ctrl_gender_female"><input type="radio" name="gender" value="female" id="ctrl_gender_female" {xen:checked "{$visitor.gender} == 'female'"}  /> {xen:phrase female}</label></li>
                    <li><label for="ctrl_gender_"><input type="radio" name="gender" value="" id="ctrl_gender_" {xen:checked "{$visitor.gender} == ''"}  /> ({xen:phrase unspecified})</label></li>
                </ul>
            </dd>
        </dl>
<xen:comment>
        <dl class="ctrlUnit OptOut">
            <dt>{xen:phrase date_of_birth}:</dt>
            <dd>
                <xen:if is="{$visitor.dob_day} && {$visitor.dob_month} && {$visitor.dob_year}">
                    {xen:date $birthday.timeStamp, $birthday.format}
                    <p class="explain">{xen:phrase once_your_birthday_has_been_entered_it_cannot_be_changed}</p>
                <xen:else />
                    <xen:include template="helper_birthday_input">
                        <xen:map from="$visitor" to="$user" />
                    </xen:include>
                </xen:if>
            </dd>
        </dl>
        <xen:include template="account_privacy_dob" />
</xen:comment>  

    </fieldset>
    </xen:hook>

    <xen:hook name="account_personal_details_information">
    <fieldset>
        <dl class="ctrlUnit">
            <dt><label for="ctrl_location">{xen:phrase location}:</label></dt>
            <dd><input type="text" name="location" value="{$visitor.location}" id="ctrl_location" class="textCtrl OptOut" /></dd>
        </dl>

        <dl class="ctrlUnit">
            <dt><label for="ctrl_occupation">{xen:phrase occupation}:</label></dt>
            <dd><input type="text" name="occupation" value="{$visitor.occupation}" id="ctrl_occupation" class="textCtrl OptOut" /></dd>
        </dl>

        <dl class="ctrlUnit">
            <dt><label for="ctrl_homepage">{xen:phrase home_page}:</label></dt>
            <dd><input type="url" name="homepage" value="{$visitor.homepage}" id="ctrl_homepage" class="textCtrl" /></dd>
        </dl>
   
        <xen:include template="custom_fields_edit" />
    </fieldset>
    </xen:hook>

    <xen:hook name="account_personal_details_about">
    <dl class="ctrlUnit OptOut">
        <dt><label for="ctrl_about">{xen:phrase about_you}:</label> <dfn>{xen:phrase you_may_use_bb_code}</dfn></dt>
        <dd>{xen:raw $aboutEditor}</dd>
    </dl>
    </xen:hook>

    <dl class="ctrlUnit submitUnit">
        <dt></dt>
        <dd><input type="submit" name="save" value="{xen:phrase save_changes}" accesskey="s" class="button primary" /></dd>
    </dl>

    <input type="hidden" name="_xfToken" value="{$visitor.csrf_token_page}" />
</form>
 
Last edited:
you can delete that part in the template account_personal_details
Rich (BB code):
<xen:title>{xen:phrase personal_details}</xen:title>

<xen:require css="account.css" />
<xen:require js="js/xenforo/personal_details_editor.js" />

<xen:edithint template="account_avatar_overlay.css" />
<xen:edithint template="account_avatar_overlay" />

<form method="post" class="xenForm personalDetailsForm AutoValidator"
    action="{xen:link 'account/personal-details-save'}"
    data-fieldValidatorUrl="{xen:link 'account/validate-field.json'}">

    <xen:hook name="account_personal_details_status">
    <xen:if is="{$canUpdateStatus}">
        <dl class="ctrlUnit">
            <dt><label for="ctrl_status">{xen:phrase status_message}:</label></dt>
            <dd>
                <textarea name="status" rows="2" cols="60" id="ctrl_status" autofocus="autofocus" class="textCtrl StatusEditor UserTagger Elastic OptOut" data-statusEditorCounter="#statusEditorCounter"></textarea>
                <span id="statusEditorCounter" title="{xen:phrase characters_remaining}"></span>
                <div class="explain"><h3 class="statusHeader">{xen:phrase current_status}:</h3> <span class="CurrentStatus"><xen:if is="{$visitor.status}">{xen:helper bodytext, $visitor.status}<xen:else />({xen:phrase none})</xen:if></span><!--TODO: clearing--></div>
            </dd>
        </dl>
    </xen:if>
    </xen:hook>

    <xen:if hascontent="true">
        <fieldset>
            <xen:contentcheck>
                <xen:if is="{$canEditAvatar}">
                    <dl class="ctrlUnit avatarEditor">
                        <dt><label>{xen:phrase avatar}:</label></dt>
                        <dd>
                            <xen:avatar user="$visitor" size="m" class="OverlayTrigger" href="{xen:link account/avatar}" />
                            <p class="explain">{xen:phrase click_image_to_change_your_avatar}</p>
                        </dd>
                    </dl>
                </xen:if>
              
                <xen:if is="{$canEditCustomTitle}">
                    <dl class="ctrlUnit">
                        <dt><label for="ctrl_custom_title">{xen:phrase custom_title}:</label></dt>
                        <dd>
                            <input type="text" name="custom_title" value="{$visitor.custom_title}" id="ctrl_custom_title" class="textCtrl" />
                            <p class="explain">{xen:phrase if_specified_replace_title_that_displays_under_name_in_posts}</p>
                        </dd>
                    </dl>
                </xen:if>
            </xen:contentcheck>
        </fieldset>
    </xen:if>

    <xen:hook name="account_personal_details_biometrics">
    <fieldset>
        <dl class="ctrlUnit">
            <dt><label>{xen:phrase gender}:</label></dt>
            <dd>
                <ul>
                    <li><label for="ctrl_gender_male"><input type="radio" name="gender" value="male" id="ctrl_gender_male" {xen:checked "{$visitor.gender} == 'male'"} /> {xen:phrase male}</label></li>
                    <li><label for="ctrl_gender_female"><input type="radio" name="gender" value="female" id="ctrl_gender_female" {xen:checked "{$visitor.gender} == 'female'"}  /> {xen:phrase female}</label></li>
                    <li><label for="ctrl_gender_"><input type="radio" name="gender" value="" id="ctrl_gender_" {xen:checked "{$visitor.gender} == ''"}  /> ({xen:phrase unspecified})</label></li>
                </ul>
            </dd>
        </dl>
        <xen:comment>
        <dl class="ctrlUnit OptOut">
            <dt>{xen:phrase date_of_birth}:</dt>
            <dd>
                <xen:if is="{$visitor.dob_day} && {$visitor.dob_month} && {$visitor.dob_year}">
                    {xen:date $birthday.timeStamp, $birthday.format}
                    <p class="explain">{xen:phrase once_your_birthday_has_been_entered_it_cannot_be_changed}</p>
                <xen:else />
                    <xen:include template="helper_birthday_input">
                        <xen:map from="$visitor" to="$user" />
                    </xen:include>
                </xen:if>
            </dd>
        </dl>
        </xen:comment>
        <xen:include template="account_privacy_dob" />
    </fieldset>
    </xen:hook>

    <xen:hook name="account_personal_details_information">
    <fieldset>
    <xen:comment>
        <dl class="ctrlUnit">
            <dt><label for="ctrl_location">{xen:phrase location}:</label></dt>
            <dd><input type="text" name="location" value="{$visitor.location}" id="ctrl_location" class="textCtrl OptOut" /></dd>
        </dl>

        <dl class="ctrlUnit">
            <dt><label for="ctrl_occupation">{xen:phrase occupation}:</label></dt>
            <dd><input type="text" name="occupation" value="{$visitor.occupation}" id="ctrl_occupation" class="textCtrl OptOut" /></dd>
        </dl>

        <dl class="ctrlUnit">
            <dt><label for="ctrl_homepage">{xen:phrase home_page}:</label></dt>
            <dd><input type="url" name="homepage" value="{$visitor.homepage}" id="ctrl_homepage" class="textCtrl" /></dd>
        </dl>
        </xen:comment>
        <xen:include template="custom_fields_edit" />
    </fieldset>
    </xen:hook>

    <xen:hook name="account_personal_details_about">
    <dl class="ctrlUnit OptOut">
        <dt><label for="ctrl_about">{xen:phrase about_you}:</label> <dfn>{xen:phrase you_may_use_bb_code}</dfn></dt>
        <dd>{xen:raw $aboutEditor}</dd>
    </dl>
    </xen:hook>

    <dl class="ctrlUnit submitUnit">
        <dt></dt>
        <dd><input type="submit" name="save" value="{xen:phrase save_changes}" accesskey="s" class="button primary" /></dd>
    </dl>

    <input type="hidden" name="_xfToken" value="{$visitor.csrf_token_page}" />
</form>


I do not want to delete it for everybody. I like the ability of this option and I use addons to send birthday greetings. It is just that I am foced by law to delete it if the users wishes that. And I need this functionality in the software so that I do not need to do it manually.

I just do not understand why this is not already possible. All fileds in the user profiles can be changed adn/or deleted. Why not this field? If theer is a reasning behind this, why not offering an option in ACP to enable/disable the option for the user tp delete his birthday?

At the end of the day, I have to be in line with the law without having more work than absolute necessary...
 
There are plenty of reasons for not allowing a user to change their DOB, especially on sites that have children/underage members.

That is fine with me. But why not offering an option in ACP to enable/disable the option for the user to delete his birthday? It has to be the decision of the administrator, not of the software developer.

And if I have to decide between legal requirements and personal preferences because some clients might run an adult board, it is easy to decide what is more important ;)

At the end of the day, if you give the admin in the ACP the power to decide how to set up this "dob issue", it is the best solution for all parties involved in this.
 
Absolutely agree. every forum is different and many things should be optional.
Snoopy5, you can open a tread here and suggest that.
and you can also open a thread here asking for a custom addon.
 
Top Bottom