block = $block;
$this->entityManager = $entityManager;
}
/**
* @param $block BlockWrapper|array
*
* @return BlockWrapper|array
*/
public function wrapBlock($block)
{
static $counter = 0;
if (!getAdminUser()) {
return $block;
}
if (($block instanceof BlockWrapper && $block['isWrapped']) || ($block['isWrapped'] ?? false)) {
return $block;
}
if (isset($block['id_object']) && isset($block['type'])) {
$block = $this->createBlock($block['id_object'], $block['type']);
}
$jsonContent = $block['json_content'];
if (empty($jsonContent)) {
$jsonContent = json_encode([]);
}
$id_language = '';
$languageContext = ServiceContainer::getService(LanguageContext::class);
if ($languageContext->translationActive()) {
$id_language = ' data-kupshop-language-id=\''.$languageContext->getActiveId().'\'';
}
$block['isWrapped'] = true;
$block['unwrapped_content'] = $block['content'];
$object_info = $block['object_info'] ?? '';
$block['content'] = '
'.$block['content'].'
';
if (!empty($block['children'])) {
foreach ($block['children'] as &$child) {
$child['object_info'] = $object_info;
$child = $this->wrapBlock($child);
}
}
return $block;
}
public function createBlock($objectID, $type)
{
$blocks = sqlGetConnection()->transactional(function () use ($objectID, $type) {
$rootId = $this->block->insertFirstBlock($type, $objectID, '', true);
return $this->block->getBlocks($rootId);
});
return reset($blocks);
}
public function createBlockForEntity($objectID, $type)
{
$block = $this->createBlock($objectID, $type);
if (!$block) {
return null;
}
$entity = $this->entityManager->getRepository(\KupShop\ContentBundle\Entity\Block::class);
return $entity->find($block['id_root']);
}
public function insertBlockForEntity($rootID)
{
sqlQueryBuilder()
->insert('blocks')
->directValues(['id_parent' => $rootID, 'id_root' => $rootID, 'content' => ''])
->execute();
$entity = $this->entityManager->getRepository(\KupShop\ContentBundle\Entity\Block::class);
$block = $entity->find($rootID);
// ten root block je cached, takze to ho potrebuju refreshnout, aby se mi vratil v aktualizovane podobe
$this->entityManager->refresh($block);
return $entity->find($rootID);
}
}