public static function resolveMenuItem($item, $url, $theme)
{
$result = null;
if ($item->type == 'blog-category') {
if (!$item->reference || !$item->cmsPage) {
return;
}
$category = self::find($item->reference);
if (!$category) {
return;
}
$pageUrl = self::getCategoryPageUrl($item->cmsPage, $category, $theme);
if (!$pageUrl) {
return;
}
$pageUrl = URL::to($pageUrl);
$result = [];
$result['url'] = $pageUrl;
$result['isActive'] = $pageUrl == $url;
$result['mtime'] = $category->updated_at;
if ($item->nesting) {
$categories = $category->getNested();
$iterator = function ($categories) use(&$iterator, &$item, &$theme, $url) {
$branch = [];
foreach ($categories as $category) {
$branchItem = [];
$branchItem['url'] = self::getCategoryPageUrl($item->cmsPage, $category, $theme);
$branchItem['isActive'] = $branchItem['url'] == $url;
$branchItem['title'] = $category->name;
$branchItem['mtime'] = $category->updated_at;
if ($category->children) {
$branchItem['items'] = $iterator($category->children);
}
$branch[] = $branchItem;
}
return $branch;
};
$result['items'] = $iterator($categories);
}
} elseif ($item->type == 'all-blog-categories') {
$result = ['items' => []];
$categories = self::orderBy('name')->get();
foreach ($categories as $category) {
$categoryItem = ['title' => $category->name, 'url' => self::getCategoryPageUrl($item->cmsPage, $category, $theme), 'mtime' => $category->updated_at];
$categoryItem['isActive'] = $categoryItem['url'] == $url;
$result['items'][] = $categoryItem;
}
}
return $result;
}