asset_manager = $asset_manager; $this->feature_flags = $feature_flags; } /** * Returns the conditionals based on which this loadable should be active. * * @return string[] The conditionals based on which this loadable should be active. */ public static function get_conditionals() { return [ Admin_Conditional::class ]; } /** * Initializes the integration. * * @return void */ public function register_hooks() { \add_action( 'admin_init', [ $this, 'add_feature_flags' ] ); } /** * Gathers all the feature flags and injects them into the JavaScript. * * @return void */ public function add_feature_flags() { $enabled_features = $this->get_enabled_features(); // Localize under both names for BC. $this->asset_manager->localize_script( 'feature-flag-package', 'wpseoFeatureFlags', $enabled_features ); $this->asset_manager->localize_script( 'feature-flag-package', 'wpseoFeaturesL10n', $enabled_features ); } /** * Returns an array of all enabled feature flags. * * @return string[] The array of enabled features. */ public function get_enabled_features() { $enabled_features = []; foreach ( $this->feature_flags as $feature_flag ) { if ( $feature_flag->is_met() ) { $enabled_features[] = $feature_flag->get_feature_name(); } } return $this->filter_enabled_features( $enabled_features ); } /** * Runs the list of enabled feature flags through a filter. * * @param string[] $enabled_features The list of currently enabled feature flags. * * @return string[] The (possibly adapted) list of enabled features. */ protected function filter_enabled_features( $enabled_features ) { /** * Filters the list of currently enabled feature flags. * * @param string[] $enabled_features The current list of enabled feature flags. */ $filtered_enabled_features = \apply_filters( 'wpseo_enable_feature', $enabled_features ); if ( ! \is_array( $filtered_enabled_features ) ) { $filtered_enabled_features = $enabled_features; } return $filtered_enabled_features; } }