/** * Alternative recursive clone method, created because of problems related to doctrine clone method. * * @param \BackBee\NestedNode\Page $originPage * * @return \BackBee\ClassContent\ContentSet */ public function createClone(Page $originPage = null) { $clone = parent::createClone($originPage); $zones = array(); $mainNodeUid = null; if (null !== $originPage) { $mainNodeUid = $originPage->getUid(); if ($originPage->getContentSet()->getUid() === $this->getUid()) { $zones = $originPage->getLayout()->getZones(); } } foreach ($this as $subcontent) { if (!$subcontent instanceof AbstractClassContent) { continue; } if ($this->getProperty('clonemode') === 'none' || $this->key() < count($zones) && $zones[$this->key()]->defaultClassContent === 'inherited' || null !== $subcontent->getMainNode() && $subcontent->getMainNode()->getUid() !== $mainNodeUid) { $clone->push($subcontent); } else { $newSubcontent = $subcontent->createClone($originPage); $clone->push($newSubcontent); } } return $clone; }