$changes */ public function apply( JobId $job, JobState $state, array $changes ): JobState|WP_Error { $enabled = $this->changed_or( $changes, 'enabled', $state->enabled ); $frequency_name = $this->changed_or( $changes, 'frequency', $state->frequency->value ); $frequency = $job->accepted_frequency( $frequency_name ); $is_valid = is_bool( $enabled ) && null !== $frequency; if ( ! $is_valid ) { return new WP_Error( self::INVALID_PARAMETER_CODE, __( 'Turn the job on or off, or pick one of its frequencies.', 'aiplaz-link-checkup' ), array( 'status' => self::BAD_REQUEST_STATUS ) ); } return $state->with_schedule( $enabled, $frequency ); } /** @param array $changes */ private function changed_or( array $changes, string $field_name, mixed $current_value ): mixed { return array_key_exists( $field_name, $changes ) ? $changes[ $field_name ] : $current_value; } }