XF 1.5 User Group Promotions question

Hi

20% of users on my forum haven't posted but log in regularly to read threads and log out without adding any value to the community.
'
I'd like to restrict access to all the nodes except the 'Say Hello' node until users have introduced themselves and have at least a post count of 1, then be promoted to have the same permissions as the registered users group.

This is my first time creating a group and the forum has no secondary groups, just the four default groups!

I've created a new user group 'SayHello' and promotion 'SayHelloProm'
I haven't touched the primary registered users group permissions
I have left the 'SayHello' group permissions all at Not Set (No)
I have revoked the View Node: permission for the nodes I would like to restrict access to
Rebuilt User Group Promotions caches

When I test the above with a dummy account with 0 posts, the dummy user can still see all the nodes when logged in and doesn't appear when I search in Promotion History after logging out.

Promotion Options:

Promotion is active: checked
Add User to User Groups: 'SayHello' checked

Apply this promotion while...

User Groups: User is a member of the 'SayHello' user group: checked/selected
Content and Achievements: User has posted at least 1 messages: checked*

I think I have the permissions and/or the promotion criteria set wrong but can't find the problem and would be very grateful for some help. I have read User Group Promotions and Implementing Permissions again but it isn't helping.

Edit: * I see I have posts set to at least 1 message which is 80% of the users and this is the problem I think. What criteria would I need to restrict users with 0 posts?
 
Last edited:
I'm not 100% clear on your exact setup from your description but this is what you want to get it working:

Nodes: Make all nodes except the 'Say Hello' node private by following the instructions here:
https://xenforo.com/community/resou...user-groups.358/updates#resource-update-16595
(you can use either option, I suspect you using Revoke may have been on the 'SayHello' group rather than the Registered group? You then need to set Allow on the 'SayHello' group)


Set up the promotion as follows:

Promotion is active: checked
Add User to User Groups: 'SayHello' checked

Apply this promotion while...

User Groups: Leave blank
Content and Achievements: User has posted at least 1 messages: checked

Previously you had "User Groups: User is a member of the 'SayHello' user group: checked/selected" which means they will never get added to the 'SayHello' group as they have to be in the group to be added to the group!

Hopefully that will now work.
 
I'll quote my post from another thread, I believe you forgot a key thing.

This is sadly one of the problems with XenForo. You would think it should work, but it doesn't, because you miss a key point.

By default user promotions don't work immediately. If you go to your ACP->Tools->Cron entries, then you see bunch of crons.
One of them is "User group promotions". As you see, it runs every hour on the minute of 20. Not immediately as you would think, every hour...

So if your criteria is set correctly, you would have to wait till the time reaches the minute 20 of any hour.

The good news however is, you can trigger the cron manually by clicking on the circle shaped 2 arrows button. That would trigger the promotion. Then you can check Logs->User change logs, if anything happened like a promotion (or search individiually the user in the ACP userslist and look at his usergroups).
Also you can set create the same cron and set it to every minute, would be much faster.
 
Thank you for such a speed reply

I've made the tweaks you suggest and it works on the 'Say Hello' group but it is also working on the registered user group who cannot see the private nodes. The User Group Permissions : Registered, Views: is set to Allow
 
The Registered user group is the group that everyone on your forum should be in. This is described in the guide that you linked to (and I assumed you have read) https://xenforo.com/community/resources/implementing-permissions-across-multiple-user-groups.358/

As everyone is in this group (including 0 posters), the user group promotion you set up should be giving users who have made a post a promotion to a user group (the 'Say Hello' group) which should have permission to view the other nodes.

So, to hide all nodes from those with 0 posts (and also guests):

Usergroup permissions
Unregistered/Unconfirmed - set their user group permission for View Node to Not Set (No)
Registered - set their user group permission for View Node to Not Set (No)
Say Hello - set their user group permission for View Node to Allow

Node permissions
Say Hello node - set the view permission to Allow for both Unregistered/Unconfirmed and Registered user groups
All other node permissions should be left at the default (which is view permission of Inherit).

This is the easiest way to hide all nodes from guests and 0 posters (leaving the Hello node visible to all) and showing all other nodes to those who have made at least 1 post (with the user group promotion set up as before).
 
Last edited:
Yes, everyone is in the registered users group.

I'm still not getting the desired result. Registered users are still being restricted and the SayHello group can't view anything.

It is working though so I'm sure I can tweak it from here to get what I need

Thank you for your help
 
I can't comment on from here, it is difficult to find the culprit from here.
I have revoked the View Node: permission for the nodes I would like to restrict access to
Did you do this only for the new usergroup? Not in general or for registered, but for the new one?
Other than that, take you time and you'll figure it out eventually.
 
Yes, I left the registered user group how it was and revoked the View Node: permission from the nodes I want to restrict access to.
But from what I understand you want only the usergroup SayHello to get restricted, right? In that case you shouldn't revoke the view node permissio from the nodes, as that would override the registered one. You need to revoke it only for the usergroup SayHello in the nodes.
 
Yes, I left the registered user group how it was and revoked the View Node: permission from the nodes I want to restrict access to.
Have you got everything set up exactly as I suggested in my last post? That will work.

But from what I understand you want only the usergroup SayHello to get restricted, right? In that case you shouldn't revoke the view node permissio from the nodes, as that would override the registered one. You need to revoke it only for the usergroup SayHello in the nodes.
From my understanding, the OP wants to restrict the nodes from those who have 0 posts. Therefore it should be the Registered group that has the view restriction and the 'Say Hello' group (who people go in once they have made a post) will not have any view restriction.
 
  • Like
Reactions: sbj
From my understanding, the OP wants to restrict the nodes from those who have 0 posts. Therefore it should be the Registered group that has the view restriction and the 'Say Hello' group (who people go in once they have made a post) will not have any view restrictio
It is difficult to understand from far what he wants to do. Debugging without seeing the setup of the usergroups and wishes is difficult. If what you understood is right, then you are right :). I agree with you.
It's just you can do both ways. Either allow everyone to see everything, and then let a selected group of people not to see some parts. Or like you explained, you let nobody see anything and only allow seeing for a selected group of people. It depends on the situation what is best but I'd say your approach is better in this case, if what you understood is right, cause I can't debug from far permissions.
 
It's just you can do both ways. Either allow everyone to see everything, and then let a selected group of people not to see some parts.
You are indeed correct about this. However in this scenario with users who have 0 posts, it can be up to an hour before the user group promotion cron runs that would add them to the user group restricting what they could see. So they would have up to an hour to look at threads. Or they could simply log out and view all of the threads anyway. The way I have suggested, in this particular instance, I think is the better approach as it means only those who have actually made a post can see all forums, guest and users with 0 posts will only see the 'Say Hello' forum.
 
  • Like
Reactions: sbj
As everyone is in this group (including 0 posters), the user group promotion you set up should be giving users who have made a post a promotion to a user group (the 'Say Hello' group) which should have permission to view the other nodes.

Everyone including 0 posters are in the registered user group.

I want to put the 0 posters in a secondary group where they only have access to the Say Hello node on the index page while logged in. Once they've made a post and introduced themselves they are then promoted and have the same permissions as the registered user group.

Does that description make more sense? Sorry if I'm confusing matters
 
Everyone including 0 posters are in the registered user group.

I want to put the 0 posters in a secondary group where they only have access to the Say Hello node on the index page while logged in. Once they've made a post and introduced themselves they are then promoted and have the same permissions as the registered user group.

Does that description make more sense? Sorry if I'm confusing matters
I understand what you are asking. However, this:

The big question is: can your unregistered usergroup (guests who surf the site without logging in) see everything or not?

To do what you ask means 2 things:

  • Guests can still view posts (if you haven't done anything about this
  • Users with 0 posts will be able to view all nodes and threads for up to an hour until the user group promotion kicks in and they are added to the 'Say Hello' group that can only view one node. Even then, if guests can view all nodes, these users will simply log out and view the site as guests, which won't get them to post anything.
The solution I gave you I believe is what you want? Guests and 0 posters can only view the Hello node and those who post can then view everything.
 
It is difficult to understand from far what he wants to do.

...allow everyone to see everything, and then let a selected group of people not to see some parts.......until they have made at least one post

This is what I'm trying to do. The 0 post users in the registered group can currently see everything. The forum has 57 nodes including a 'Say Hello' node. I want the 0 post user's access to be restricted to the Say Hello node. When they've made one post they will then have access to the rest of the nodes.
 
@The West wind
I understand but before that, can you answer the question what the unregistered usergroup can see?
Cause in case that a normal guest (someone not registered) can see everything, than it makes no sense to demote a registered one to a group which can't see everything. Why would I bother to login if I can see everything while unlogged? So answer that question please, so we can help you.
 
This is what I'm trying to do. The 0 post users in the registered group can currently see everything. The forum has 57 nodes including a 'Say Hello' node. I want the 0 post user's access to be restricted to the Say Hello node. When they've made one post they will then have access to the rest of the nodes.

Do you realise that by doing that, you aren't exactly encouraging people to join your forum?

Maybe if they see the other nodes and the content, but can't post in them until they have posted in the welcome forum, it makes more sense?
 
  • Like
Reactions: sbj
Top Bottom