$this->settings->get(Setting::DownloadIpLogging), 'account_erasure_grace_days' => $this->settings->get(Setting::AccountErasureGraceDays), 'account_erasure_content_action' => $this->settings->get(Setting::AccountErasureContentAction), 'account_erasure_reassign_to' => $this->settings->get(Setting::AccountErasureReassignTo), 'reassign_candidates' => $this->accountDeletion->candidates(), 'api_request_log_retention_days' => $this->settings->get(Setting::ApiRequestLogRetentionDays), 'discourage_search_indexing' => $this->settings->get(Setting::DiscourageSearchIndexing), ]); } public function update(Request $request): RedirectResponse { $validated = $request->validate([ 'download_ip_logging' => ['required', Rule::in(['all', 'anonymous_only', 'none'])], 'account_erasure_grace_days' => ['required', 'integer', 'min:0'], 'account_erasure_content_action' => ['required', Rule::in(['cascade_delete', 'reassign'])], 'account_erasure_reassign_to' => [ 'nullable', 'integer', 'required_if:account_erasure_content_action,reassign', Rule::exists('users', 'id')->where('active', true), ], 'api_request_log_retention_days' => ['required', 'integer', 'min:0', 'max:3650'], 'discourage_search_indexing' => ['required', 'boolean'], ]); $this->settings->set(Setting::DownloadIpLogging, $validated['download_ip_logging']); $this->settings->set(Setting::AccountErasureGraceDays, $validated['account_erasure_grace_days']); $this->settings->set(Setting::AccountErasureContentAction, $validated['account_erasure_content_action']); // Only meaningful for 'reassign'; store 0 otherwise so a later switch // back to 'cascade_delete' doesn't leave a stale target lying around. $this->settings->set( Setting::AccountErasureReassignTo, $validated['account_erasure_content_action'] === 'reassign' ? (int) $validated['account_erasure_reassign_to'] : 0, ); $this->settings->set(Setting::ApiRequestLogRetentionDays, $validated['api_request_log_retention_days']); $this->settings->set(Setting::DiscourageSearchIndexing, $validated['discourage_search_indexing']); $this->activity->log(Action::SettingsUpdated, context: ['section' => 'privacy']); return back(); } }