public function setup(Model $Model, $settings = array())
{
// Do not act on the AuditLog related models.
if ($this->_isAuditLogModel($Model)) {
return;
}
if (!isset($this->settings[$Model->alias])) {
$this->settings[$Model->alias]['ignore'] = array('created', 'updated', 'modified');
$this->settings[$Model->alias]['habtm'] = array();
if (!isset($settings['habtm'])) {
$this->settings[$Model->alias]['habtm'] = count($Model->hasAndBelongsToMany) > 0 ? array_keys($Model->hasAndBelongsToMany) : array();
}
}
if (!is_array($settings)) {
$settings = array();
}
$this->settings[$Model->alias] = array_merge_recursive($this->settings[$Model->alias], $settings);
// Ensure that no HABTM models, which are already auditable,
// snuck into the settings array. That would be bad. Same for
// any model which isn't a HABTM association.
foreach ($this->settings[$Model->alias]['habtm'] as $index => $modelName) {
// Note the "===" in the condition. The type check is important,
// so don't change it just because it may look like a mistake.
if (!array_key_exists($modelName, $Model->hasAndBelongsToMany) || is_array($Model->{$modelName}->actsAs) && array_search('Auditable', $Model->{$modelName}->actsAs) === true) {
unset($this->settings[$Model->alias]['habtm'][$index]);
}
}
}