fieldsFetch acting on wrong user object
When getFields is called it triggers onAfterFieldsFetch with the viewing user object instead of the CBuser user object. This results in the conditions being applied to the wrong user. The conditioning in fieldsFetch can PROBABLY just be applied to SAVE states only. For example during profile edit or registration save. The same will have to apply to tabsFetch most likely as well.
Updated by krileon over 5 years ago
Calling of _getTabFieldsDb with the viewing user object isn't always the case. So the proposed possible fix likely isn't viable. The trigger needs to send more information like $this or $this->_cbuser so the conditions can be done against the CBuser object and not the viewing user.