private static function arrayToMenuItem($pages, $depth, $curDepth, $order)
{
$items = array();
foreach ($pages as $pageRow) {
$page = new \Ip\Page($pageRow['id']);
$item = new Item();
$subSelected = false;
if ($curDepth < $depth) {
$children = ipDb()->selectAll('page', '*', array('parentId' => $page->getId(), 'isVisible' => 1, 'isSecured' => 0, 'isDeleted' => 0), "ORDER BY {$order}");
if ($children) {
$childrenItems = self::arrayToMenuItem($children, $depth, $curDepth + 1, $order);
$item->setChildren($childrenItems);
}
}
if ($page->isCurrent() || $page->getRedirectUrl() && $page->getLink() == \Ip\Internal\UrlHelper::getCurrentUrl()) {
$item->markAsCurrent(true);
} elseif ($page->isInCurrentBreadcrumb() || $subSelected || $page->getRedirectUrl() && self::existInBreadcrumb($page->getLink())) {
$item->markAsInCurrentBreadcrumb(true);
}
if ($page->isDisabled()) {
$item->setUrl('');
} elseif ($page->getRedirectUrl()) {
$url = $page->getRedirectUrl();
if (!preg_match('/^((http|https):\\/\\/|\\/\\/)/i', $url)) {
$url = ipConfig()->protocol() . '://' . $url;
}
$item->setUrl($url);
} else {
$item->setUrl($page->getLink());
}
$metaTitle = $page->getMetaTitle();
$item->setBlank($page->isBlank());
$item->setTitle($page->getTitle());
$item->setDepth($curDepth);
$item->setDisabled($page->isDisabled());
$item->setId($page->getId());
$item->setAlias($page->getAlias());
$item->setPageTitle(empty($metaTitle) ? $page->getTitle() : $metaTitle);
$items[] = $item;
}
return $items;
}