AlexT
Well-known member
Version: XF 1.1.4
 
When migrating from vB 3.8 to XF, buddies aren't properly imported. In library/XenForo/Importer/vBulletin.php, around lines 1243:
 
	
	
	
		
 
Here the getImportContentMap() method is called to map userids contained in $buddyIds from old to new. The problem: the content map, or xf_import_log respectively, doesn't contain all userids yet; it is being filled as new users are processed.
 
For example, someone with user ID 1 will always have his $buddyIds array erased, and as a consequence will follow nobody, because his user account is the first to be migrated, and xf_import_log doesn't contain any userid maps yet. In other words, whenever there is someone in the buddylist who has not been migrated yet (usually someone with a higher userid), that userid will be removed from the current $buddyIds array.
 
Related question: I have the "Retain imported content IDs" option selected. Why is the importer still going through the various ContentMaps, which add additional queries for each migrated content item? In cases where 1 will always => 1 (like with user ids), wouldn't it be beneficial if the importer skipped ContentMaps here?
				
			When migrating from vB 3.8 to XF, buddies aren't properly imported. In library/XenForo/Importer/vBulletin.php, around lines 1243:
		PHP:
	
	if ($user['buddylist'])
{
    $buddyIds = array_slice(explode(' ', $user['buddylist']), 0, 1000);
    $buddyIds = $this->_importModel->getImportContentMap('user', $buddyIds);
    $this->_importModel->importFollowing($importedUserId, $buddyIds);
}Here the getImportContentMap() method is called to map userids contained in $buddyIds from old to new. The problem: the content map, or xf_import_log respectively, doesn't contain all userids yet; it is being filled as new users are processed.
For example, someone with user ID 1 will always have his $buddyIds array erased, and as a consequence will follow nobody, because his user account is the first to be migrated, and xf_import_log doesn't contain any userid maps yet. In other words, whenever there is someone in the buddylist who has not been migrated yet (usually someone with a higher userid), that userid will be removed from the current $buddyIds array.
Related question: I have the "Retain imported content IDs" option selected. Why is the importer still going through the various ContentMaps, which add additional queries for each migrated content item? In cases where 1 will always => 1 (like with user ids), wouldn't it be beneficial if the importer skipped ContentMaps here?
 
 
		 
 
		 
 
		 
 
		

 
 
		
 
 
		 
 
		