initial
This commit is contained in:
+43
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace Gravity_Forms\Gravity_SMTP\Experimental_Features;
|
||||
|
||||
use Gravity_Forms\Gravity_SMTP\Data_Store\Data_Store_Router;
|
||||
use Gravity_Forms\Gravity_SMTP\Utils\Booliesh;
|
||||
|
||||
class Experiment_Features_Handler {
|
||||
|
||||
const ENABLED_EXPERIMENTS_PARAM = 'enabled_experimental_features';
|
||||
|
||||
protected $experiments = array(
|
||||
'alerts_management',
|
||||
);
|
||||
|
||||
/**
|
||||
* @var Data_Store_Router
|
||||
*/
|
||||
protected $data_router;
|
||||
|
||||
public function __construct( Data_Store_Router $data_router ) {
|
||||
$this->data_router = $data_router;
|
||||
}
|
||||
|
||||
public function feature_flag_callback( $is_enabled, $flag_slug ) {
|
||||
if ( ! in_array( $flag_slug, $this->experiments ) ) {
|
||||
return $is_enabled;
|
||||
}
|
||||
|
||||
$enabled_experiments = $this->data_router->get_plugin_setting( self::ENABLED_EXPERIMENTS_PARAM, array() );
|
||||
|
||||
if ( empty( $enabled_experiments ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( ! isset( $enabled_experiments[ $flag_slug ] ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return Booliesh::get( $enabled_experiments[ $flag_slug ] );
|
||||
}
|
||||
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace Gravity_Forms\Gravity_SMTP\Experimental_Features;
|
||||
|
||||
use Gravity_Forms\Gravity_SMTP\Connectors\Connector_Service_Provider;
|
||||
use Gravity_Forms\Gravity_SMTP\Feature_Flags\Feature_Flag_Repository;
|
||||
use Gravity_Forms\Gravity_Tools\Service_Container;
|
||||
use Gravity_Forms\Gravity_Tools\Service_Provider;
|
||||
|
||||
class Experimental_Features_Service_Provider extends Service_Provider {
|
||||
|
||||
const EXPERIMENTAL_FEATURE_HANDLER = 'experimental_feature_handler';
|
||||
|
||||
public function register( Service_Container $container ) {
|
||||
$container->add( self::EXPERIMENTAL_FEATURE_HANDLER, function() use ( $container ) {
|
||||
return new Experiment_Features_Handler( $container->get( Connector_Service_Provider::DATA_STORE_ROUTER ) );
|
||||
} );
|
||||
}
|
||||
|
||||
public function init( Service_Container $container ) {
|
||||
add_filter( Feature_Flag_Repository::FILTER_SINGLE_FEATURE_FLAG, function( $is_enabled, $flag_slug ) use ( $container ) {
|
||||
return $container->get( self::EXPERIMENTAL_FEATURE_HANDLER )->feature_flag_callback( $is_enabled, $flag_slug );
|
||||
}, 10, 2 );
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user