public function __clone()
{
if ($this->id) {
$this->id = null;
/** @var FileVersionMeta[] $newMetaList */
$newMetaList = [];
$defaultMetaLocale = $this->getDefaultMeta()->getLocale();
/** @var FileVersionContentLanguage[] $newContentLanguageList */
$newContentLanguageList = [];
/** @var FileVersionPublishLanguage[] $newPublishLanguageList */
$newPublishLanguageList = [];
/** @var FormatOptions[] $newFormatOptionsArray */
$newFormatOptionsArray = [];
foreach ($this->meta as $meta) {
/** @var FileVersionMeta $meta */
$newMetaList[] = clone $meta;
}
$this->meta->clear();
foreach ($newMetaList as $newMeta) {
$newMeta->setFileVersion($this);
$this->addMeta($newMeta);
if ($newMeta->getLocale() === $defaultMetaLocale) {
$this->setDefaultMeta($newMeta);
}
}
foreach ($this->contentLanguages as $contentLanguage) {
/** @var FileVersionContentLanguage $contentLanguage */
$newContentLanguageList[] = clone $contentLanguage;
}
$this->contentLanguages->clear();
foreach ($newContentLanguageList as $newContentLanguage) {
$newContentLanguage->setFileVersion($this);
$this->addContentLanguage($newContentLanguage);
}
foreach ($this->publishLanguages as $publishLanguage) {
/** @var FileVersionPublishLanguage $publishLanguage */
$newPublishLanguageList[] = clone $publishLanguage;
}
$this->publishLanguages->clear();
foreach ($newPublishLanguageList as $newPublishLanguage) {
$newPublishLanguage->setFileVersion($this);
$this->addPublishLanguage($newPublishLanguage);
}
foreach ($this->formatOptions as $formatOptions) {
/** @var FormatOptions $formatOptions */
$newFormatOptionsArray[] = clone $formatOptions;
}
$this->formatOptions->clear();
foreach ($newFormatOptionsArray as $newFormatOptions) {
/** @var FormatOptions $newFormatOptions */
$newFormatOptions->setFileVersion($this);
$this->addFormatOptions($newFormatOptions);
}
}
}