public static function getMenuItems($menuName, $depthFrom = 1, $depthTo = 1000, $orderBy = null)
{
if ($orderBy == 'title') {
$order = '`title`';
} else {
$order = '`pageOrder`';
}
// variable check
if ($depthFrom < 1) {
$backtrace = debug_backtrace();
if (isset($backtrace[0]['file']) && $backtrace[0]['line']) {
throw new \Ip\Exception('$depthFrom can\'t be less than one. (Error source: ' . $backtrace[0]['file'] . ' line: ' . $backtrace[0]['line'] . ' ) ');
} else {
throw new \Ip\Exception('$depthFrom can\'t be less than one.');
}
}
if ($depthTo < $depthFrom) {
$backtrace = debug_backtrace();
if (isset($backtrace[0]['file']) && $backtrace[0]['line']) {
throw new \Ip\Exception('$depthTo can\'t be lower than $depthFrom. (Error source: ' . $backtrace[0]['file'] . ' line: ' . $backtrace[0]['line'] . ' ) ');
} else {
throw new \Ip\Exception('$depthTo can\'t be lower than $depthFrom.');
}
}
// end variable check
$breadcrumb = ipContent()->getBreadcrumb();
$languageCode = ipContent()->getCurrentLanguage()->getCode();
$menuRootId = ipDb()->selectValue('page', 'id', array('languageCode' => $languageCode, 'alias' => $menuName, 'isDeleted' => 0));
if ($depthFrom == 1) {
$elements = ipDb()->selectAll('page', '*', array('isVisible' => 1, 'isSecured' => 0, 'parentId' => $menuRootId, 'isDeleted' => 0), "ORDER BY {$order}");
//get first level elements
} elseif (isset($breadcrumb[$depthFrom - 2])) {
// if we need a second level (2), we need to find a parent element at first level. And it is at position 0. This is where -2 comes from.
if (!empty($breadcrumb[0])) {
$rootPage = ipContent()->getPage($breadcrumb[0]->getParentId());
if ($rootPage && $rootPage->getAlias() == $menuName) {
$parent = $breadcrumb[$depthFrom - 2];
$elements = ipDb()->selectAll('page', '*', array('isVisible' => 1, 'isSecured' => 0, 'parentId' => $parent->getId(), 'isDeleted' => 0), "ORDER BY {$order}");
} else {
$elements = array();
}
} else {
$elements = array();
}
}
$items = array();
if (!empty($elements)) {
$items = self::arrayToMenuItem($elements, $depthTo, $depthFrom, $order);
}
return $items;
}