/**
  * {@inheritdoc}
  */
 public function createNewContainer(array $values = array(), \Closure $alter = null)
 {
     $container = $this->blockManager->create();
     $container->setEnabled(isset($values['enabled']) ? $values['enabled'] : true);
     $container->setCreatedAt(new \DateTime());
     $container->setUpdatedAt(new \DateTime());
     $container->setType('sonata.page.block.container');
     if (isset($values['page'])) {
         $container->setPage($values['page']);
     }
     if (isset($values['name'])) {
         $container->setName($values['name']);
     } else {
         $container->setName(isset($values['code']) ? $values['code'] : 'No name defined');
     }
     $container->setSettings(array('code' => isset($values['code']) ? $values['code'] : 'no code defined'));
     $container->setPosition(isset($values['position']) ? $values['position'] : 1);
     if (isset($values['parent'])) {
         $container->setParent($values['parent']);
     }
     if ($page = $container->getPage()) {
         foreach ($page->getTranslations() as $locale => $trans) {
             $bt = new BlockTranslation();
             $bt->setLocale($locale);
             $bt->setObject($container);
             $bt->setEnabled(isset($values['enabled']) ? $values['enabled'] : true);
             $bt->setSettings($container->getSettings());
             $container->addTranslation($bt);
         }
     }
     if ($alter) {
         $alter($container);
     }
     $this->blockManager->save($container);
     return $container;
 }
 protected function deepCopyBlockTranslation(BlockTranslation $translation, Block $parent)
 {
     $copy = new BlockTranslation();
     $copy->setLocale($translation->getLocale());
     $copy->setObject($parent);
     $copy->setEnabled($translation->getEnabled());
     $copy->setSettings($translation->getSettings());
     return $copy;
 }
 /**
  * @param array         $content
  * @param PageInterface $page
  *
  * @return BlockInterface
  */
 public function loadBlock(array $content, PageInterface $page)
 {
     $block = $this->blockManager->create();
     $content = $this->fixBlockContent($content);
     $block->setPage($page);
     $block->setId($content['id']);
     $block->setName($content['name']);
     $block->setEnabled($content['enabled']);
     $block->setPosition($content['position']);
     $block->setSettings($content['settings']);
     $block->setType($content['type']);
     $createdAt = new \DateTime();
     $createdAt->setTimestamp($content['created_at']);
     $block->setCreatedAt($createdAt);
     $updatedAt = new \DateTime();
     $updatedAt->setTimestamp($content['updated_at']);
     $block->setUpdatedAt($updatedAt);
     $t = new BlockTranslation();
     $t->setObject($block);
     $t->setLocale($page->getSite()->getLocale());
     $t->setEnabled($content['enabled']);
     $t->setSettings($content['settings']);
     $block->addTranslation($t);
     foreach ($content['blocks'] as $child) {
         $block->addChildren($this->loadBlock($child, $page));
     }
     return $block;
 }