Пример #1
0
 /**
  * Alternative recursive clone method, created because of problems related to doctrine clone method.
  *
  * @param \BackBee\CoreDomain\NestedNode\Page $originPage
  *
  * @return \BackBee\CoreDomain\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;
 }