Using the existing setting would enable/disable the behavior for all models which is not what I'm after. I need to turn it on/off per model without editing code in my plugins for each project.
I can override the <Plugin>AppModel::__constructor() in each plugin and make it enable/disable the behaviors after the parent::__constructor() has executed but this then means that each plugin has to know about the others. Although this is possible and might be my only solution it does mean maintainability of the code becomes more complex as our code base gets bigger.
What I am doing:
I have a CMS which is built from a few plugins like core CMS, user/permissions, perma links and a couple of others. I also have a versioning plugin which adds the ability to version control all tables in the database. The version control needs to be able to be turned on/off on a per model basis depending on what a client want to have controlled. I am trying to achieve this through use of configuration to avoid changing the plugins per project.
Calling setup before the methods/mapped methods are handled is not too much of a problem for me as I can easily call them directly on the behavior. Not being able to disable the behavior is a big problem though as doing it post setup in the plugins AppModel is messy.
One other thought I had was to mode the setting of $configDisabled to after setup was called, this way the setup method could alter $config that is passed in to set 'enabled' to false. This shouldn't impact any existing user land behaviors.