/** * @param null $node * @param bool $direct * @param null $sortByField * @param string $direction * @param bool $includeNode * @param string $viewStatus * @return array */ public function getChildrenByStatus($node = null, $direct = false, $sortByField = null, $direction = 'ASC', $includeNode = false, $viewStatus = Page::STATUS_PUBLISHED) { $qb = $this->childrenQueryBuilder($node, $direct, $sortByField, $direction, $includeNode); $aliases = $qb->getRootAliases(); if ($viewStatus == Page::STATUS_PUBLISHED) { $qb->addSelect('ps.id AS ps_id'); $qb->addSelect('ps.versionedData AS ps_versionedData'); $qb->leftJoin('\\Networking\\InitCmsBundle\\Entity\\PageSnapshot', 'ps', Expr\Join::WITH, sprintf('%s.page = ps.page ', $aliases[0])); $qb->leftJoin('ps.contentRoute', 'cr'); } else { $qb->leftJoin(sprintf('%s.page', $aliases[0]), 'p'); $qb->leftJoin('p.contentRoute', 'cr'); } $qb->addSelect('cr.path AS path'); $results = $qb->getQuery()->getResult(); $menuItems = array(); foreach ($results as $item) { $menuItem = $item[0]; if (!$menuItem->getRedirectUrl() && !$menuItem->getInternalUrl()) { if ($viewStatus == Page::STATUS_PUBLISHED) { if (!$item['path'] || !$item['ps_id']) { continue; } else { if (!$this->pageHelper->jsonPageIsActive($item['ps_versionedData'])) { continue; } $menuItem->setPath($item['path']); } } else { if (!$item['path']) { continue; } else { $menuItem->setPath($item['path']); } } } $menuItems[] = $menuItem; } return $menuItems; }