0) { return; } $project->loadMissing('projectTemplate'); if ($project->projectTemplate === null || ! $project->projectTemplate->is_published) { return; } $overrides = array_values(array_unique([ ...($project->template_overrides ?? []), $area, ])); $project->forceFill(['template_overrides' => $overrides])->saveQuietly(); } /** * @param list $areas */ public function clear(Project $project, array $areas): void { $remaining = array_values(array_diff($project->template_overrides ?? [], $areas)); $project->forceFill(['template_overrides' => $remaining])->saveQuietly(); } public function withoutRecording(callable $callback): mixed { self::$suppressionDepth++; try { return $callback(); } finally { self::$suppressionDepth--; } } public function isRecording(): bool { return self::$suppressionDepth === 0; } }