add( Connector_Service_Provider::DATA_STORE_CONST, function () { return new Const_Data_Store(); } ); $container->add( Connector_Service_Provider::DATA_STORE_OPTS, function () { return new Opts_Data_Store(); } ); $container->add( Connector_Service_Provider::DATA_STORE_PLUGIN_OPTS, function () { return new Plugin_Opts_Data_Store(); } ); $container->add( Connector_Service_Provider::DATA_STORE_ROUTER, function () use ( $container ) { return new Data_Store_Router( $container->get( Connector_Service_Provider::DATA_STORE_CONST ), $container->get( Connector_Service_Provider::DATA_STORE_OPTS ), $container->get( Connector_Service_Provider::DATA_STORE_PLUGIN_OPTS ) ); } ); $container->add( self::COMMON, function () use ( $container ) { $data = $container->get( Connector_Service_Provider::DATA_STORE_ROUTER ); $key = $data->get_plugin_setting( Save_Plugin_Settings_Endpoint::PARAM_LICENSE_KEY, '' ); return new Common( GRAVITY_MANAGER_URL, GRAVITY_SUPPORT_URL, $key ); } ); $container->add( self::CACHE, function () use ( $container ) { return new Cache( $container->get( self::COMMON ) ); } ); $container->add( self::HEADER_PARSER, function () { return new Header_Parser(); } ); $container->add( self::IMPORT_DATA_CHECKER, function () { return new Import_Data_Checker(); } ); $container->add( self::SOURCE_PARSER, function () { return new Source_Parser(); } ); $container->add( self::LOGGER, function () { return new Null_Logger( new Null_Logging_Provider() ); } ); $container->add( self::RECIPIENT_PARSER, function () { return new Recipient_Parser(); } ); $container->add( self::FILTER_PARSER, function () { return new SQL_Filter_Parser(); } ); $container->add( self::AWS_SIGNATURE_HANDLER, function () { return new AWS_Signature_Handler(); } ); $container->add( self::BASIC_ENCRYPTED_HASH, function () { return new Basic_Encrypted_Hash(); } ); } public function init( \Gravity_Forms\Gravity_Tools\Service_Container $container ) { add_action( 'init', function () { add_filter( 'cron_schedules', function ( $schedules ) { $schedules[ 'every-minute' ] = array( 'interval' => MINUTE_IN_SECONDS, 'display' => esc_html__( 'Every Minute', 'gravitysmtp' ), ); return $schedules; } ); }, 0 ); add_action( 'gravitysmtp_after_mail_updated', function ( $email_id, $email_data ) use ( $container ) { if ( ! empty( $email_data['extra'] ) && is_string( $email_data['extra'] ) ) { $email_data['extra'] = unserialize( $email_data['extra'] ); } if ( empty( $email_data['extra']['attachments'] ) ) { return; } if ( ! empty( $email_data['extra']['attachments_saved'] ) ) { return; } /** * @var Data_Store_Router $data */ $data = $container->get( Connector_Service_Provider::DATA_STORE_ROUTER ); $save_attachments = $data->get_plugin_setting( Save_Plugin_Settings_Endpoint::PARAM_SAVE_ATTACHMENTS_ENABLED, 'false' ); if ( empty( $save_attachments ) || $save_attachments === 'false' ) { return; } $new_attachments = $container->get( self::ATTACHMENTS_SAVER )->save_attachments( $email_id, $email_data['extra']['attachments'] ); $email_data['extra']['attachments_saved'] = true; $email_data['extra']['attachments'] = $new_attachments; /** * @var Event_Model $events */ $events = $container->get( Connector_Service_Provider::EVENT_MODEL ); $events->update( array( 'extra' => serialize( $email_data['extra'] ) ), $email_id ); }, 10, 2 ); } }