connector[ $key ][] = $migration; } public function add_plugin_migration( $key, $og_id, $new_id ) { $migration = new Migration( $og_id, $new_id ); $this->plugin[ $key ] = $migration; } public function add_user_migration( $key, $og_id, $new_id, $user_id = 0 ) { if ( is_string( $new_id ) ) { $new_id = $this->default_user_action( $new_id, $user_id ); } $migration = new Migration( $og_id, $new_id ); $this->user[ $key ] = $migration; } public function migrate() { foreach ( $this->connector as $connector => $migrations ) { foreach( $migrations as $conn_migration ) { $conn_migration->migrate(); } } foreach ( $this->plugin as $key => $plugin_migration ) { $plugin_migration->migrate(); } foreach ( $this->user as $key => $user_migration ) { $user_migration->migrate(); } } public function migrate_single( $type, $key ) { if ( ! isset( $this->$type[ $key ] ) ) { return; } $this->$type[ $key ]->migrate(); } public function migrate_connections() { foreach ( $this->connector as $key => $conn_migration ) { $conn_migration->migrate(); } } public function migrate_plugins() { foreach ( $this->plugin as $key => $plugin_migration ) { $plugin_migration->migrate(); } } public function migrate_users() { foreach ( $this->user as $key => $user_migration ) { $user_migration->migrate(); } } private function default_user_action( $new_option_name, $user_id ) { return function ( $new_value ) use ( $new_option_name, $user_id ) { update_user_meta( $user_id, $new_option_name, $new_value ); }; } }