detectorClassName(); if (! $detector) { return []; } $fields = call_user_func([$detector, "fields"]); $diffFields = call_user_func([$detector, "diffFields"]); if (!$fields) { return []; } $items = []; foreach ($fields as $field) { if (! $model->isDirty($field)) { continue; } $items[] = [ 'old' => is_array($model->getOriginal($field)) ? json_encode($model->getOriginal($field)) : $model->getOriginal($field), 'field' => $field, 'new' => is_array($model->$field) ? json_encode($model->$field) : $model->$field, 'diff' => in_array($field, $diffFields) ? text_diff($model->getOriginal($field), $model->$field) : null, ]; } return $items; } }