Implementing a custom ACL system in CiviCRM