XF 2.0 Disabling show online status option

sixlxvi

Active member
I thought I have disabled the ability for users to hide their online status by removing this option from the templates it is in. However, about 1 in 10 new members find a way to make themselves invisible. I tried making a test account to see where they are seeing this option, but I cannot find it. Is there a template I missed? How are they still doing this?
 

SyTry

Well-known member
Hello,

You have disabled this option in /account/preferences and /account/privacy ?

Regards, SyTry
 

sixlxvi

Active member
You also need to remove the option from the account_preferences template.
I believe I have removed it from both templates already. Maybe I missed it?

Code:
<xf:title>{{ phrase('preferences') }}</xf:title>

<xf:wrap template="account_wrapper" />

<xf:form action="{{ link('account/preferences') }}" ajax="true" class="block" data-force-flash-message="true">
    <div class="block-container">
        <div class="block-body">
            <xf:if is="$xf.visitor.canChangeStyle()">

                <xf:selectrow name="user[style_id]" value="{$xf.visitor.style_id}"
                    label="{{ phrase('style') }}">

                    <xf:option value="0">{{ phrase('use_default_style:') }} {$defaultStyle.title}</xf:option>
                    <xf:optgroup label="{{ phrase('styles:') }}">
                        <xf:foreach loop="$styles" value="$style">
                            <xf:option value="{$style.style_id}">{{ repeat('--', $style.depth) }} {$style.title}{{ !$style.user_selectable ? ' *' : '' }}</xf:option>
                        </xf:foreach>
                    </xf:optgroup>
                </xf:selectrow>
            <xf:else />
                <xf:hiddenval name="user[style_id]">{$xf.visitor.style_id}</xf:hiddenval>
            </xf:if>

            <xf:if is="$xf.visitor.canChangeLanguage()">
                <xf:selectrow name="user[language_id]" value="{$xf.visitor.language_id}"
                    label="{{ phrase('language') }}">

                    <xf:foreach loop="$languageTree.getFlattened(0)" value="$treeEntry">
Code:
<xf:title>{{ phrase('privacy') }}</xf:title>

<xf:wrap template="account_wrapper" />

<xf:form action="{{ link('account/privacy') }}" ajax="true" class="block" data-force-flash-message="true">
    <div class="block-container">
        <div class="block-body">
            
            <xf:macro template="helper_account" name="dob_privacy_row" />

            <xf:formrow rowtype="inputLabelPair noColon"
                label="{{ phrase('allow_users_to...') }}">

                <xf:macro name="privacy_option"
                    arg-user="{$xf.visitor}"
                    arg-name="allow_view_profile"
                    arg-label="{{ phrase('view_your_details_on_your_profile_page:') }}" />

                <xf:if is="$xf.visitor.canViewProfilePosts()">
                    <xf:macro name="privacy_option"
                        arg-user="{$xf.visitor}"
                        arg-name="allow_post_profile"
                        arg-label="{{ phrase('post_messages_on_your_profile_page:') }}"
                        arg-hideEveryone="{{true}}" />
                </xf:if>

                <xf:if is="$xf.options.enableNewsFeed">
                    <xf:macro name="privacy_option"
 

sixlxvi

Active member
Is it not bizarre that 1 in 10 new members are still going invisible after they register? There must be something I missed. I’m surprised this isn’t a regular settting.
 

ozzy47

Well-known member
Have you asked any of these members how they did it? Have any of these members actually posted on the site?
 

sixlxvi

Active member
I've asked a few of them and they say they aren't even sure what that setting is, which adds to my confusing. Yes, they post on the site and are real people and not bots.
 

Brogan

XenForo moderator
Staff member
If they aren't explicitly setting it then it can only be due to an add-on or customisation.
 

sledov

Member
However, about 1 in 10 new members find a way to make themselves invisible.
I think I know why this is happening.

When you remove a control from the page, absence of the control is treated as a negative value next time the form is submitted and processed.

So, if your form does not have user[visible] checkbox, and user decides to change some other option (for example, "don't show date of birth"), user[visible] will be set to 0, so the user will make himself invisible. Even though he was changing the date of birth option.

I think if you are taking checkboxes off, you need to replace them with hidden inputs with value of 1 like this

HTML:
<input type="hidden" name="user[visible]" value="1">
<input type="hidden" name="user[activity_visible]" value="1">
 

sixlxvi

Active member
I think I know why this is happening.

When you remove a control from the page, absence of the control is treated as a negative value next time the form is submitted and processed.

So, if your form does not have user[visible] checkbox, and user decides to change some other option (for example, "don't show date of birth"), user[visible] will be set to 0, so the user will make himself invisible. Even though he was changing the date of birth option.

I think if you are taking checkboxes off, you need to replace them with hidden inputs with value of 1 like this

HTML:
<input type="hidden" name="user[visible]" value="1">
<input type="hidden" name="user[activity_visible]" value="1">
Thank you!!!

You’re probably right because these members always say they didn’t set them self invisible. And I noticed they often DID change some other option. I will have to implement this and wait a few weeks to see if the problem went away.
 

sixlxvi

Active member
I think I know why this is happening.

When you remove a control from the page, absence of the control is treated as a negative value next time the form is submitted and processed.

So, if your form does not have user[visible] checkbox, and user decides to change some other option (for example, "don't show date of birth"), user[visible] will be set to 0, so the user will make himself invisible. Even though he was changing the date of birth option.

I think if you are taking checkboxes off, you need to replace them with hidden inputs with value of 1 like this

HTML:
<input type="hidden" name="user[visible]" value="1">
<input type="hidden" name="user[activity_visible]" value="1">
In comparison to the original, unedited code, how do I implement this? By replacing the lines for the option? Is it this line?:
Code:
<xf:macro template="helper_account" name="activity_privacy_row" />
 

sledov

Member
First, make sure that the way it is right now the visibility option is getting unset when you modify some other option on the form with your modification applied.

Then you need to replace this line

HTML:
<xf:macro template="helper_account" name="activity_privacy_row" />
for these two lines

HTML:
<input type="hidden" name="user[visible]" value="1">
<input type="hidden" name="user[activity_visible]" value="1">
Then repeat the previous experiment: try to modify some other option and make sure that user[visible] is not getting unset.
 
Last edited:

Osman

Active member
Perhaps such a plug-in can see your business.

 
Top