No friends yet.
Sorry. But I don't think the validate:after event even exists in Elgg 2.2 (or 2.3). It was added by https://github.com/Elgg/Elgg/commit/3b4fcbb2e67a51419ee64becb3d405071e5db689 to the master branch (future Elgg 3.0) but never in any 2.x branch.
And after reading https://elgg.org/discussion/view/2568003/how-to-perform-something-after-user-validates-registration-by-email I think you had customized your Elgg code to add this event yourself. So, it's quite clear that it won't work on Elgg 2.3 if you don't do the same customization again (if you would add it in your plugin code you wouldn't lose the modification when updating Elgg core...).
Oh snap! Thanks iionly! That was sufficiently long ago for me to forget about it. I'll have it fixed in no time thanks to you for pointing me in the right direction.
owner_black, user_hover, entity and other menus are dynamic, meaning the set of items changes depending on a context entity. The above would work with something static, like a footer or extras menu. You need to write a hook handler for 'register', 'menu:owner_block'. Search the documentation and the community, this has been asked and answered a few hundred times.
It's definitely possible, but definitely some custom coding involved. I have also done this, complexity probably depends on the capabilities of the roles.
Thank you all for answers.
RvR, I took a look at Roles plugin before posting here, but it does not meet my needs, as it sets "global" roles, while I need group specific roles.
It appears I'll have to code it myself, so a few pointers how to do it would be very useful. What would be the best way to store the roles and user - group - role relationships?
The project I was working on had a twofold requirement:
So, I created a new object type owned and contained by the group that had email address and role as metadata. Whenever a user joins the site, they automatically become members of the groups where they have a membership record. All matching done via email address. When checking permissions, I just load the membership record for the group/email and allow/deny permissions based on role metadata.