connector_factory = $connector_factory; $this->data = $data_store; $this->base_namespace = $base_namespace; $this->connectors = $connectors; } protected function get_nonce_name() { return self::ACTION_NAME; } public function handle() { if ( ! $this->validate() ) { wp_send_json_error( 'Missing required parameters.', 400 ); } $plugin_to_migrate = filter_input( INPUT_POST, self::PARAM_PLUGIN_TO_MIGRATE, FILTER_DEFAULT ); $allowed = array( 'Gravityforms', 'Wpmailsmtp' ); $handler_classname = $this->base_namespace . '\\Data\\Migration_Data_' . ucfirst( strtolower( $plugin_to_migrate ) ); if ( ! in_array( ucfirst( strtolower( $plugin_to_migrate ) ), $allowed ) || ! class_exists( $handler_classname ) ) { /* translators: %1$s: plugin name */ wp_send_json_error( sprintf( __( 'Could not find handler for migration type: %1$s', 'gravitysmtp' ), $plugin_to_migrate ), 400 ); } $handler = new $handler_classname(); /** * @var Migrator_Collection $migrations */ $migrations = $handler->get_migrations(); $migrations->run( $plugin_to_migrate ); $response = array(); foreach ( $this->connectors as $connector_name => $connector_class ) { $instance = $this->connector_factory->create( $connector_name ); $connector_data = $instance->get_data(); $response[ strtolower( $connector_name ) ] = $connector_data['data']; } wp_send_json_success( $response ); } }