Community Builder offers all the functionalities, better than its competitors, but for my specific case it is necessary to consider that each author has his own community, his own independent cb from each other.
That's exactly what CB GroupJive aims to provide. They're independently ran communities. Your author's could simply be owners of a group. If they want the group private they can set its mode to Invite and turn invites off so only they can invite others to join. You can demo CB GroupJive below.
demo.cbdemosites.com/demos/cb-groupjive/all-groups
CB GroupJive can be integrated with CB Activity and CB Gallery using CB Auto Actions and its System Actions as well so each group would have its own group specific activity stream and gallery. Note you will not need to use CB GroupJive Photos, CB GroupJive Files, CB GroupJive Videos, or CB GroupJive Wall if integrating CB Activity and CB Gallery.
I understand why you're using usergroups, but over time that will significantly bloat your sites ACL and slow it down more and more. I do not recommend going that direction and highly recommend considering using CB GroupJive instead.
If CB GroupJive won't fit your needs your best option is to use a Query Select to query for all authors. Then you'd have a CB Auto Actions act on the value of that query select field to establish a connection. Next your authors would simply use the Connections privacy rule instead of needing to use an ACL privacy rule. Example of how to do this as follows.
Query Field
Name: cb_author
Type: Query Drop Down (Single Select)
Parameters > Query
Query:
Code:
SELECT u.`id`, u.`name`
FROM `#__users` AS u
INNER JOIN `#__user_usergroup_map` AS g
ON g.`user_id` = u.`id`
WHERE g.`group_id` = AUTHOR_GROUP_ID
Parameters > Options
Value Column: id
Label Column: name
With the above you only need 1 usergroup that you'd assign to every author. You don't need a per-author usergroup. You'd set its ID to AUTHOR_GROUP_ID. It will display a dropdown field with their names that you can select within a users profile. Now we just need to act on this field changing to establish the connections. This is done using the below in CB Auto Actions.
Global
Triggers: onAfterUserUpdate, onAfterUpdateUser
Type: Connection
User: Automatic
Access: Everybody
Conditions
Condition 1
Field: Custom > Value
Custom Value: [var1_cb_author]
Operator: Not Equal To
Value: [var3_cb_author]
Condition 2
Field: cb_author
Operator: Not Empty
Action
Users: [cb_author]
This should connect the user being edited to whatever author is selected in cb_author. You can turn off profile edit display for the field if you only want it accessible in backend otherwise you can use CB Privacy edit permissions to limit access in profile edit to just moderators for example.