*/ public array $internal_domains; /** * @since 1.0.0 * * @param bool $debug_logging Optional. Default false. * @param bool $delete_data_on_uninstall Optional. Default true. * @param int $suggestion_cache_ttl_hours Optional. Default 12. * @param int $scan_batch_size Optional. Default 50. * @param array $internal_domains Optional. Default []. */ public function __construct( bool $debug_logging = false, bool $delete_data_on_uninstall = true, int $suggestion_cache_ttl_hours = 12, int $scan_batch_size = 50, array $internal_domains = array() ) { $this->debug_logging = $debug_logging; $this->delete_data_on_uninstall = $delete_data_on_uninstall; $this->suggestion_cache_ttl_hours = max( 1, $suggestion_cache_ttl_hours ); $this->scan_batch_size = max( 10, min( 200, $scan_batch_size ) ); $this->internal_domains = $internal_domains; } /** * Creates an instance from a raw settings array. * * @since 1.0.0 * * @param array $data Raw settings data. * * @return self */ public static function from_array( array $data ): self { $domains = isset( $data['internal_domains'] ) && is_array( $data['internal_domains'] ) ? array_values( array_filter( $data['internal_domains'], 'is_string' ) ) : array(); return new self( (bool) ( $data['debug_logging'] ?? false ), (bool) ( $data['delete_data_on_uninstall'] ?? true ), (int) ( $data['suggestion_cache_ttl_hours'] ?? 12 ), (int) ( $data['scan_batch_size'] ?? 50 ), $domains ); } /** * Serializes settings to an array for storage. * * @since 1.0.0 * * @return array */ public function to_array(): array { return array( 'debug_logging' => $this->debug_logging, 'delete_data_on_uninstall' => $this->delete_data_on_uninstall, 'suggestion_cache_ttl_hours' => $this->suggestion_cache_ttl_hours, 'scan_batch_size' => $this->scan_batch_size, 'internal_domains' => $this->internal_domains, ); } }