A recent membership site we've built using Expression Engine and the add-on Zoo Visitor highlighted a 'quirk' that could easily catch others out. To save others who might be headscratching with a similar scenario, I thought I'd quickly summarise the problem and how we got around it.
To be honest, the issue arose as a result of our clients workflow. As we're in the business of providing solutions to client's problems, I didn't want to just give the easy answer which could have been to say 'change your workflow', so this needed a little extra digging around in Expression Engine's control panel.
Being a membership site, members pay an annual subscription for access. The current application process is by a printed application form sent to the site administrator, with an invoice then sent for payment by return. The administrator found the easiest way to manage registrations on the site was to register members as pending, switching them to the members group on receipt of their payment.
With Zoo Visitor installed on the site, all registrations were going to be added manually through the control panel. The problem we had was later changing members from the pending group to the members group, with the error being less than obvious.
Zoo visitor creates members as channel entries, and by default, sets the author field to the name of the person who's just been registered, based on their first and last name. However, by default, the author field is hidden in the publish page, so while this makes sense, it can be easily missed. This means that when the administrator goes to change the member group on the channel entry page, the hidden author field throws an error, because our member is still pending and shouldn't really be in the author list yet. However, because the author field is hidden, the only indicator that something didn't work looks like this.
There are actually 2 ways around this. The obvious way is to use EE's built in member activations. This would be the best approach, as several members could be activated together and they can optionally get a nice welcome email. However, this would mean enabling access to the Members menu, which could lead to all sorts of confusion about how and where members are created. This is the only menu option in EE that is either on or off, with no option to choose the sub-menu options. Using the Zoo Visitor field type, members are created by going to Content > Publish > Member, and I've never liked the idea of a feature or menu being on display, but telling someone not to use it. Perhaps we're being a little 'over controlling' on the permissions here, but invariably, the control panel is best kept as simple as possible.
The second approach (which was preferable for our client in this case), was actually a simple and quick change to the pending group permissions.
With Include Members in PUBLISH page multi-author list set to no, EE sees the author name as invalid when the member entry is updated. By setting this to Yes, EE can legitimately include the pending members name in the author list, and will happily accept the update to the member group via the channel entry.