*/
protected $userMergeMode = 2;
+ /**
+ * import hash
+ * @var string
+ */
+ protected $importHash = '';
+
/**
* list of methods allowed for remote invoke
* @var array<string>
$sql = "SELECT newID
FROM wcf".WCF_N."_import_mapping
- WHERE objectTypeID = ?
+ WHERE importHash = ?
+ AND objectTypeID = ?
AND oldID = ?";
$statement = WCF::getDB()->prepareStatement($sql);
- $statement->execute(array($objectTypeID, $oldID));
+ $statement->execute(array($this->importHash, $objectTypeID, $oldID));
$row = $statement->fetchArray();
if ($row !== false) $this->idMappingCache[$objectTypeID][$oldID] = $row['newID'];
}
$objectTypeID = $this->objectTypes[$type]->objectTypeID;
$sql = "INSERT IGNORE INTO wcf".WCF_N."_import_mapping
- (objectTypeID, oldID, newID)
- VALUES (?, ?, ?)";
+ (importHash, objectTypeID, oldID, newID)
+ VALUES (?, ?, ?, ?)";
$statement = WCF::getDB()->prepareStatement($sql);
- $statement->execute(array($objectTypeID, $oldID, $newID));
+ $statement->execute(array($this->importHash, $objectTypeID, $oldID, $newID));
unset($this->idMappingCache[$objectTypeID][$oldID]);
}
public function getUserMergeMode() {
return $this->userMergeMode;
}
+
+ /**
+ * Sets the import hash.
+ *
+ * @param string $hash
+ */
+ public function setImportHash($hash) {
+ $this->importHash = $hash;
+ }
}
use wcf\system\exception\SystemException;
use wcf\system\importer\ImportHandler;
use wcf\system\WCF;
+use wcf\util\StringUtil;
/**
* Worker implementation for data import.
// set user merge mode
ImportHandler::getInstance()->setUserMergeMode($this->importData['userMergeMode']);
+
+ // set import hash
+ ImportHandler::getInstance()->setImportHash(substr(StringUtil::getHash($this->importData['exporterName'] . $this->importData['dbHost'] . $this->importData['dbName'] . $this->importData['dbPrefix']), 0, 8));
}
/**
DROP TABLE IF EXISTS wcf1_import_mapping;
CREATE TABLE wcf1_import_mapping (
+ importHash CHAR(8) NOT NULL,
objectTypeID INT(10) NOT NULL,
oldID VARCHAR(255) NOT NULL,
newID INT(10) NOT NULL,
- UNIQUE KEY (objectTypeID, oldID)
+ UNIQUE KEY (importHash, objectTypeID, oldID)
);
DROP TABLE IF EXISTS wcf1_label;