public function parseMenu(array $pages)
{
$count = 0;
$total = count($pages);
$processedPages = [];
foreach ($pages as $index => $page) {
if (true === $this->pageService->hidePageForLanguageUid($page)) {
continue;
}
$count++;
$class = [];
$originalPageUid = $page['uid'];
$showAccessProtected = (bool) $this->arguments['showAccessProtected'];
if ($showAccessProtected) {
$pages[$index]['accessProtected'] = $this->pageService->isAccessProtected($page);
if (true === $pages[$index]['accessProtected']) {
$class[] = $this->arguments['classAccessProtected'];
}
$pages[$index]['accessGranted'] = $this->pageService->isAccessGranted($page);
if (true === $pages[$index]['accessGranted'] && true === $this->pageService->isAccessProtected($page)) {
$class[] = $this->arguments['classAccessGranted'];
}
}
$targetPage = $this->pageService->getShortcutTargetPage($page);
if ($targetPage !== null) {
if ($this->pageService->shouldUseShortcutTarget($this->arguments)) {
$pages[$index] = $targetPage;
}
if ($this->pageService->shouldUseShortcutUid($this->arguments)) {
$page['uid'] = $targetPage['uid'];
}
}
if (true === $this->pageService->isActive($originalPageUid, $showAccessProtected)) {
$pages[$index]['active'] = true;
$class[] = $this->arguments['classActive'];
}
if (true === $this->pageService->isCurrent($page['uid'])) {
$pages[$index]['current'] = true;
$class[] = $this->arguments['classCurrent'];
}
if (0 < count($this->pageService->getMenu($originalPageUid))) {
$pages[$index]['hasSubPages'] = true;
//TODO: Remove deprecated argument in next major version
$class[] = $this->arguments[$this->hasArgument('classHasSubpages') ? 'classHasSubpages' : 'classHasSubPages'];
}
if (1 === $count) {
$class[] = $this->arguments['classFirst'];
}
if ($count === $total) {
$class[] = $this->arguments['classLast'];
}
$pages[$index]['class'] = implode(' ', $class);
$pages[$index]['linktext'] = $this->getItemTitle($pages[$index]);
$forceAbsoluteUrl = $this->arguments['forceAbsoluteUrl'];
$pages[$index]['link'] = $this->pageService->getItemLink($page, $forceAbsoluteUrl);
$processedPages[$index] = $pages[$index];
}
return $processedPages;
}