File "settings.php"
Full Path: /home/siazco/grocery.siazco.se/wp-content/plugins/better-wp-security/core/modules/feature-flags/settings.php
File size: 2.52 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace iThemesSecurity\FeatureFlags;
use iThemesSecurity\Config_Settings;
final class Settings extends Config_Settings {
public function show_ui(): bool {
return \ITSEC_Lib_Feature_Flags::show_ui();
}
public function get_settings_schema() {
$schema = parent::get_settings_schema();
foreach ( \ITSEC_Lib_Feature_Flags::get_available_flags() as $flag => $config ) {
list( $reason_code ) = \ITSEC_Lib_Feature_Flags::get_reason( $flag );
$schema['properties']['enabled']['items']['enum'][] = $flag;
$schema['properties']['enabled']['items']['enumNames'][] = $config['title'];
$schema['uiSchema']['enabled']['ui:enumDescriptions'][] = $this->prepare_flag_description( $flag );
if ( $reason_code === 'constant' ) {
$schema['uiSchema']['enabled']['ui:enumDisabled'][] = $flag;
}
}
return $schema;
}
private function prepare_flag_description( $flag ) {
$config = \ITSEC_Lib_Feature_Flags::get_flag_config( $flag );
list( $reason_code, $reason ) = \ITSEC_Lib_Feature_Flags::get_reason( $flag );
$description = $config['description'];
if ( $description ) {
$description .= '<br>';
}
if ( $reason_code === 'setting' ) {
return $description;
}
$description .= '<em>';
if ( in_array( $flag, $this->settings['enabled'], true ) ) {
$description .= sprintf( __( 'Enabled reason: %s' ), $reason );
} else {
$description .= sprintf( __( 'Disabled reason: %s' ), $reason );
}
$description .= '</em>';
return $description;
}
public function prepare_for_rest() {
$settings = parent::prepare_for_rest();
$settings['enabled'] = [];
foreach ( \ITSEC_Lib_Feature_Flags::get_available_flags() as $flag => $config ) {
if ( \ITSEC_Lib_Feature_Flags::is_enabled( $flag ) ) {
$settings['enabled'][] = $flag;
}
}
return $settings;
}
public function prepare_from_rest( $settings ) {
foreach ( $settings['enabled'] ?? [] as $i => $flag ) {
$is_enabled = \ITSEC_Lib_Feature_Flags::is_enabled( $flag );
if ( $is_enabled && ! in_array( $flag, $this->settings['enabled'], true ) ) {
unset( $settings['enabled'][ $i ] );
}
}
foreach ( \ITSEC_Lib_Feature_Flags::get_available_flags() as $flag => $config ) {
if (
\ITSEC_Lib_Feature_Flags::is_enabled( $flag ) &&
! in_array( $flag, $this->settings['enabled'], true ) &&
! in_array( $flag, $settings['enabled'], true )
) {
$settings['opt_outs'][] = $flag;
}
}
return $settings;
}
}
\ITSEC_Modules::register_settings( new Settings( \ITSEC_Modules::get_config( 'feature-flags' ) ) );