for the provided disabled module. The disabled module's associated filter settings are
* set to an empty array.
*
* @param string $module The module name.
*/
private function add_filters_for_disabled_module( $module ) {
$module_mapping = self::MODULE_FILTER_MAPPING;
$filters_for_module = isset( $module_mapping[ $module ] ) ? $module_mapping[ $module ] : array();
foreach ( $filters_for_module as $filter ) {
$this->add_custom_filter_setting( $filter, array() );
}
}
/**
* Adds the provided custom setting for a filter. If the filter setting isn't valid, the default
* value is used.
*
* If the filter's hook hasn't already been set up, it gets set up.
*
* @param string $filter The filter.
* @param array $setting The filter setting.
*/
private function add_custom_filter_setting( $filter, $setting ) {
if ( ! $this->is_valid_filter_setting( $filter, $setting ) ) {
/*
* The provided setting isn't valid, so use the default for this filter.
* We're using the default values so there's no need to set the filter hook.
*/
$this->add_sync_filter_setting( $filter, $this->get_default_setting_for_filter( $filter ) );
return;
}
if ( ! isset( static::$set_filter_hooks[ $filter ] ) ) {
// First time a custom modules setting is provided, so set the filter hook.
add_filter( $filter, array( $this, 'sync_data_filter_hook' ) );
static::$set_filter_hooks[ $filter ] = 1;
}
$this->add_sync_filter_setting( $filter, $setting );
}
/**
* Determines whether the filter setting is valid. The setting array is in the correct format (associative or indexed).
*
* @param string $filter The filter to check.
* @param array $filter_settings The filter settings.
*
* @return bool Whether the filter settings can be used.
*/
private function is_valid_filter_setting( $filter, $filter_settings ) {
if ( ! is_array( $filter_settings ) ) {
// The settings for each filter must be an array.
return false;
}
if ( empty( $filter_settings ) ) {
// Empty settings are allowed.
return true;
}
$indexed_array = isset( $filter_settings[0] );
if ( in_array( $filter, Default_Filter_Settings::ASSOCIATIVE_FILTERS, true ) && ! $indexed_array ) {
return true;
} elseif ( ! in_array( $filter, Default_Filter_Settings::ASSOCIATIVE_FILTERS, true ) && $indexed_array ) {
return true;
}
return false;
}
/**
* Adds the data settings that are always required for every plugin that uses Sync.
*/
private function add_required_settings() {
foreach ( self::MUST_SYNC_DATA_SETTINGS as $filter => $setting ) {
// If the corresponding setting is already set and matches the default one, no need to proceed.
if ( isset( static::$data_settings[ $filter ] ) && static::$data_settings[ $filter ] === $this->get_default_setting_for_filter( $filter ) ) {
continue;
}
$this->add_custom_filter_setting( $filter, $setting );
}
}
/**
* Adds the provided data setting for the provided filter.
*
* @param string $filter The filter name.
* @param array $value The data setting.
*/
private function add_sync_filter_setting( $filter, $value ) {
if ( ! isset( static::$data_settings[ $filter ] ) ) {
static::$data_settings[ $filter ] = $value;
return;
}
if ( in_array( $filter, Default_Filter_Settings::ASSOCIATIVE_FILTERS, true ) ) {
$this->add_associative_filter_setting( $filter, $value );
} else {
$this->add_indexed_filter_setting( $filter, $value );
}
}
/**
* Adds the provided data setting for the provided filter. This method handles
* adding settings to data that is stored as an associative array.
*
* @param string $filter The filter name.
* @param array $settings The data settings.
*/
private function add_associative_filter_setting( $filter, $settings ) {
foreach ( $settings as $key => $item ) {
if ( ! array_key_exists( $key, static::$data_settings[ $filter ] ) ) {
static::$data_settings[ $filter ][ $key ] = $item;
}
}
}
/**
* Adds the provided data setting for the provided filter. This method handles
* adding settings to data that is stored as an indexed array.
*
* @param string $filter The filter name.
* @param array $settings The data settings.
*/
private function add_indexed_filter_setting( $filter, $settings ) {
static::$data_settings[ $filter ] = array_unique(
array_merge(
static::$data_settings[ $filter ],
$settings
)
);
}
/**
* The callback function added to the sync data filters. Combines the list in the $data_settings property
* with any non-default values from the received array.
*
* @param array $filtered_values The data revieved from the filter.
*
* @return array The data settings for the filter.
*/
public function sync_data_filter_hook( $filtered_values ) {
if ( ! is_array( $filtered_values ) ) {
// Something is wrong with the input, so set it to an empty array.
$filtered_values = array();
}
$current_filter = current_filter();
if ( ! isset( static::$data_settings[ $current_filter ] ) ) {
return $filtered_values;
}
if ( in_array( $current_filter, Default_Filter_Settings::ASSOCIATIVE_FILTERS, true ) ) {
$extra_filters = array_diff_key( $filtered_values, $this->get_default_setting_for_filter( $current_filter ) );
$this->add_associative_filter_setting( $current_filter, $extra_filters );
return static::$data_settings[ $current_filter ];
}
$extra_filters = array_diff( $filtered_values, $this->get_default_setting_for_filter( $current_filter ) );
$this->add_indexed_filter_setting( $current_filter, $extra_filters );
return static::$data_settings[ $current_filter ];
}
/**
* Sets the $data_settings property to an empty array. This is useful for testing.
*/
public function empty_data_settings_and_hooks() {
static::$data_settings = array();
static::$set_filter_hooks = array();
}
/**
* Returns the $data_settings property.
*
* @return array The data_settings property.
*/
public function get_data_settings() {
return static::$data_settings;
}
}
Fatal error: Uncaught Error: Class 'Automattic\Jetpack\Sync\Data_Settings' not found in /var/www/html/dportilho.com.br/web/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-sync/src/class-main.php:77
Stack trace:
#0 /var/www/html/dportilho.com.br/web/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-config/src/class-config.php(423): Automattic\Jetpack\Sync\Main::set_sync_data_options(Array)
#1 /var/www/html/dportilho.com.br/web/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-config/src/class-config.php(95): Automattic\Jetpack\Config->ensure_options_sync()
#2 /var/www/html/dportilho.com.br/web/wp-content/plugins/jetpack/class.jetpack.php(765): Automattic\Jetpack\Config->ensure('sync')
#3 /var/www/html/dportilho.com.br/web/wp-includes/class-wp-hook.php(324): Jetpack->configure('')
#4 /var/www/html/dportilho.com.br/web/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters('', Array)
#5 /var/www/html/dportilho.com.br/web/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
#6 /var/www in /var/www/html/dportilho.com.br/web/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-sync/src/class-main.php on line 77