false,
'regions' => Regions::get_regions(),
);
}
/**
* Gets the callback for sanitizing the setting's value before saving.
*
* @since 1.122.0
*
* @return callable Sanitize callback.
*/
protected function get_sanitize_callback() {
return function ( $value ) {
$new_value = $this->get();
if ( isset( $value['enabled'] ) ) {
$new_value['enabled'] = (bool) $value['enabled'];
}
if ( ! empty( $value['regions'] ) && is_array( $value['regions'] ) ) {
$region_codes = array_reduce(
$value['regions'],
static function ( $regions, $region_code ) {
$region_code = strtoupper( $region_code );
// Match ISO 3166-2 (`AB` or `CD-EF`).
if ( ! preg_match( '#^[A-Z]{2}(-[A-Z]{2})?$#', $region_code ) ) {
return $regions;
}
// Store as keys to remove duplicates.
$regions[ $region_code ] = true;
return $regions;
},
array()
);
$new_value['regions'] = array_keys( $region_codes );
}
return $new_value;
};
}
/**
* Accessor for the `enabled` setting.
*
* @since 1.122.0
*
* @return bool TRUE if consent mode is enabled, otherwise FALSE.
*/
public function is_consent_mode_enabled() {
return $this->get()['enabled'];
}
/**
* Accessor for the `regions` setting.
*
* @since 1.122.0
*
* @return array