/** * @covers BackBee\NestedNode\Section::__construct */ public function test__constructWithOptions() { $page = new Page(); $site = new Site(); $section = new Section(null, array('page' => $page, 'site' => $site)); $this->assertEquals($page, $section->getPage()); $this->assertEquals($site, $section->getSite()); }
public static function setSectionHasChildren($em, Section $section = null, $pageCountModifier = 0) { if ($section !== null) { $repo = $em->getRepository('BackBee\\NestedNode\\Page'); $notDeletedDescendants = $repo->getNotDeletedDescendants($section->getPage(), 1, false, [], true, 0, 2); $section->setHasChildren($notDeletedDescendants->getIterator()->count() + $pageCountModifier > 0); $em->getUnitOfWork()->recomputeSingleEntityChangeSet($em->getClassMetadata('BackBee\\NestedNode\\Section'), $section); } }
public function deleteSection(Section $section) { $page_repo = $this->getEntityManager()->getRepository('BackBee\\NestedNode\\Page'); $pages = $page_repo->createQueryBuilder('p')->andParentIs($section->getPage())->andIsNotSection()->getQuery()->execute(); foreach ($pages as $page) { $page_repo->deletePage($page); } $sections = $page_repo->createQueryBuilder('p')->andParentIs($section->getPage())->andIsSection()->getQuery()->execute(); foreach ($sections as $section) { $this->deleteSection($section->getSection()); } $this->getEntityManager()->remove($section); }
public function deleteSection(Section $section) { $page_repo = $this->getEntityManager()->getRepository('BackBee\\NestedNode\\Page'); $pages = $page_repo->createQueryBuilder('p')->andParentIs($section->getPage())->andIsNotSection()->getQuery()->execute(); foreach ($pages as $page) { $page_repo->deletePage($page); } $sections = $page_repo->createQueryBuilder('p')->andParentIs($section->getPage())->andIsSection()->getQuery()->execute(); $this->getEntityManager()->createQueryBuilder()->update('BackBee\\NestedNode\\Page', 'p')->set('p._section', ':null')->where('p._section = :uid')->setParameter('uid', $section->getUid())->setParameter('null', null)->getQuery()->execute(); foreach ($sections as $subsection) { $page_repo->deletePage($subsection); } $this->getEntityManager()->remove($section); }