HEX
Server: Apache/2
System: Linux server1c 2.6.32-042stab145.3 #1 SMP Thu Jun 11 14:05:04 MSK 2020 x86_64
User: jandjware (1008)
PHP: 8.2.23
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/jandjware/public_html/wp-content/plugins/polylang/include/Options/Primitive/Abstract_List.php
<?php
/**
 * @package Polylang
 */

namespace WP_Syntex\Polylang\Options\Primitive;

use WP_Syntex\Polylang\Options\Abstract_Option;

defined( 'ABSPATH' ) || exit;

/**
 * Class defining single list option, default value type to mixed.
 *
 * @since 3.7
 *
 * @phpstan-import-type SchemaType from Abstract_Option
 */
abstract class Abstract_List extends Abstract_Option {
	/**
	 * Prepares a value before validation.
	 * Allows to receive a string-keyed array but returns an integer-keyed array.
	 *
	 * @since 3.7
	 *
	 * @param mixed $value Value to format.
	 * @return mixed
	 */
	protected function prepare( $value ) {
		if ( is_array( $value ) ) {
			return array_values( array_unique( $value ) );
		}
		return $value;
	}

	/**
	 * Returns the JSON schema value type for the list items.
	 * Possible values are `'string'`, `'null'`, `'number'` (float), `'integer'`, `'boolean'`,
	 * `'array'` (array with integer keys), and `'object'` (array with string keys).
	 *
	 * @since 3.7
	 * @see https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#primitive-types
	 *
	 * @return string
	 *
	 * @phpstan-return SchemaType
	 */
	protected function get_type(): string {
		return 'string';
	}

	/**
	 * Returns the default value.
	 *
	 * @since 3.7
	 *
	 * @return array
	 */
	protected function get_default() {
		return array();
	}

	/**
	 * Returns the JSON schema part specific to this option.
	 *
	 * @since 3.7
	 *
	 * @return array Partial schema.
	 *
	 * @phpstan-return array{type: 'array', items: array{type: SchemaType}}
	 */
	protected function get_data_structure(): array {
		return array(
			'type'  => 'array',
			'items' => array(
				'type' => $this->get_type(),
			),
		);
	}
}