Proposal move weird acl stuff to extension
I've been cleaning up the civicrm_acl table and the code supports 3 types of acls but the UI doesn't and hooks don't leverage them.
My take is that they started out with 2 - contact based & non-smart-group-based and then added a new replacement - role based - without ever removing the first 2
The different types are denoted by the value entity_table in civicrm_acl. I believe this is only ever equal to civicrm_acl_role
I think we could simplify the code by moving the support for the other 2 to a core extension which ideally we only enable on upgrade IF we get results from
SELECT * FROM civicrm_acl WHERE entity_table != 'civicrm_acl_role'