public function setUp() { $this->pageinst = new Page(); $this->pageinst->setName("test"); $this->pageinst->setTitle("test"); $this->pageinst->setPublished(true); $this->pageinst->setPublic(true); $block = new ContentBlock(); $block->setName("testblock"); $block->setContent("<h1>This is a block</h1>"); $block->setBlockStyle(new CenteredBlockStyle()); $pageBlock = new PageBlock(); $pageBlock->setBlock($block); $pageBlock->setBlockOrder(1); $this->pageinst->addPageBlock($pageBlock); }
/** * @param $em \Doctrine\ORM\EntityManager * @param $data array * @param null $pageid int * @return int Id of processed page */ protected function insertUpdateProcessing($em, $data, $pageid = null) { $update = !is_null($pageid); if ($update) { $page = $em->find('Model\\Page', $pageid); } else { $page = new Page(); } if ($update) { $deleteurl = $em->createQueryBuilder()->delete()->from('Model\\Url', "url")->where("url.page=" . $page->getId())->getQuery(); $deletepageblock = $em->createQueryBuilder()->delete()->from('Model\\PageBlock', "pb")->where("pb.page=" . $page->getId())->getQuery(); $deleteurl->execute(); $deletepageblock->execute(); } $page->setName($data['name']); $page->setDescription($data['description']); $page->setTitle($data['title']); $page->setPublished(!is_null($data['published'])); $page->setPublic(!is_null($data['public'])); $language = $em->find('Model\\Language', $data['language']); $page->setLanguage($language); //Url insertion foreach ($data['url'] as $urlstring) { if (strlen($urlstring) > 2) { $url = new Url(); $url->setUrl($urlstring); $page->addUrl($url); } } if (!$update) { $em->persist($page); $em->flush(); } //Processing Blocks for ($i = 0; $i < count($data['block']['id']); $i++) { $blockid = $data['block']['id'][$i]; //If block is new and content is empty, skip the block //Iterates over remaining blocks if (!($blockid == 0 && strlen($data['block']['content'][$i]) == 0)) { $isContentBlock = isset($data['block']['content'][$i]) && strlen($data['block']['content'][$i]) > 0; if ($blockid == 0) { //Insert new block $block = new \Model\ContentBlock(); } else { //Update existing block if ($isContentBlock) { $block = $em->find('Model\\ContentBlock', $blockid); } else { $block = $em->find('Model\\Block', $blockid); } } if (is_null($block)) { print "IS CONTENT BLOCK ->" . $isContentBlock . "\n"; print $data['block']['content'][$i]; print "BLOCK ID -> " . $blockid; } //Sets block properties $block->setName($data['block']['name'][$i]); $block->setDescription($data['block']['description'][$i]); $block->setBlockStyleClassName($data['block']['style'][$i]); $block->setBgurl($data['block']['bckurl'][$i]); $block->setBgred(intval($data['block']['bckred'][$i])); $block->setBggreen(intval($data['block']['bckgreen'][$i])); $block->setBgblue(intval($data['block']['bckblue'][$i])); $block->setBgopacity(floatval($data['block']['bckopacity'][$i])); $bgrepeatx = !(strlen($data['block']['bckrepeatx'][$i]) <= 0 || $data['block']['bckrepeatx'][$i] == 'false'); $bgrepeaty = !(strlen($data['block']['bckrepeaty'][$i]) <= 0 || $data['block']['bckrepeaty'][$i] == 'false'); $block->setBgrepeatx($bgrepeatx); $block->setBgrepeaty($bgrepeaty); $block->setBgsize($data['block']['bcksize'][$i]); // If is set content field, this block is a content block // If content is not set, I can work directly with block object if ($isContentBlock) { $block->setContent($data['block']['content'][$i]); } if ($blockid == 0) { $em->persist($block); } else { $em->merge($block); } $em->flush(); //Adding block to page $page->addBlock($block, $i); } } if ($update) { $em->merge($page); } else { $em->persist($page); } $em->flush(); return $page->getId(); }