AuditableBehavior::setup PHP Method

setup() public method

Available settings: - ignore array, optional An array of property names to be ignored when records are created in the deltas table. - habtm array, optional An array of models that have a HABTM relationship with the acting model and whose changes should be monitored with the model.
public setup ( Model $Model, array $settings = [] ) : void
$Model Model The model using the behavior.
$settings array The settings overrides.
return void
    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]);
            }
        }
    }