public static function rewriteIds($document, $rewriteConfig, $params = [])
{
// rewriting elements only for snippets and pages
if ($document instanceof Document\PageSnippet) {
if (array_key_exists("enableInheritance", $params) && $params["enableInheritance"]) {
$elements = $document->getElements();
$changedElements = [];
$contentMaster = $document->getContentMasterDocument();
if ($contentMaster instanceof Document\PageSnippet) {
$contentMasterElements = $contentMaster->getElements();
foreach ($contentMasterElements as $contentMasterElement) {
if (method_exists($contentMasterElement, "rewriteIds")) {
$element = clone $contentMasterElement;
$element->rewriteIds($rewriteConfig);
if (Serialize::serialize($element) != Serialize::serialize($contentMasterElement)) {
$changedElements[] = $element;
}
}
}
}
if (count($changedElements) > 0) {
$elements = $changedElements;
}
} else {
$elements = $document->getElements();
foreach ($elements as &$element) {
if (method_exists($element, "rewriteIds")) {
$element->rewriteIds($rewriteConfig);
}
}
}
$document->setElements($elements);
} elseif ($document instanceof Document\Hardlink) {
if (array_key_exists("document", $rewriteConfig) && $document->getSourceId() && array_key_exists((int) $document->getSourceId(), $rewriteConfig["document"])) {
$document->setSourceId($rewriteConfig["document"][(int) $document->getSourceId()]);
}
} elseif ($document instanceof Document\Link) {
if (array_key_exists("document", $rewriteConfig) && $document->getLinktype() == "internal" && $document->getInternalType() == "document" && array_key_exists((int) $document->getInternal(), $rewriteConfig["document"])) {
$document->setInternal($rewriteConfig["document"][(int) $document->getInternal()]);
}
}
// rewriting properties
$properties = $document->getProperties();
foreach ($properties as &$property) {
$property->rewriteIds($rewriteConfig);
}
$document->setProperties($properties);
return $document;
}