Yes, that was it! I'm sure a lot of other people have this problem (although it wont be noticable until someone reports it, and no one ever does!) - it is likely that if you have an older DNN 4.4.x version (when the control panel appeared for all users who had edit rights on a module (e.g. for creating items/groups etc) and then upgraded to 4.6.x and changed the new system setting to "Page Editors Only" then you may have an issue. Any users who were left in View mode would be stuck in it.
If you suspect you may have this problem (I've had several users report this on Smart-Thinker thinking it was a module-specific problem), you can adapt and run the query below to fix it (this is specific to my DNN install):
Firstly, I did a query on that table to find the rogue records:
SELECT *
FROM Profile
--Find users where the value of "Usability:UserMode6" is set to View
WHERE ProfileData like '%<item key="Usability:UserMode6" type="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"><string>View</string></item>%'
--exclude Admins
AND UserID NOT IN (1,2)
I am not sure if "Usability:UserMode6" is dynamically generated per DNN install or if it is always called this. The Admins (Page Editiors) can still choose their view, so I excluded them. My query returned 33 users which means 33 users could not post new content on any module that required Edit rights.
I examined the ProfileData and there was nothing very important that was being stored (Text Editor view etc.) so I decided to take the easy approach and wipe these records:
DELETE FROM Profile
--Find users where the value of "Usability:UserMode6" is set to View
WHERE ProfileData like '%<item key="Usability:UserMode6" type="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"><string>View</string></item>%'
--exclude Admins
AND UserID NOT IN (1,2)
And that fixed the problems - my users can now post content again...
In a future version of DNN, tt may be worth running a (better) script when the site setting is changed to prevent this issue (clear out the old settings in the Profile table).