/** * @param CategoryList $categoryList * @param WidgetsList $widgetsList * @return array */ private function buildPagesMetadata(CategoryList $categoryList, WidgetsList $widgetsList) { $pages = array(); $widgets = array(); foreach ($widgetsList->getWidgetConfigs() as $config) { $pageId = $this->buildPageId($config->getCategoryId(), $config->getSubcategoryId()); if (!isset($widgets[$pageId])) { $widgets[$pageId] = array(); } $widgets[$pageId][] = $config; } foreach ($categoryList->getCategories() as $category) { foreach ($category->getSubcategories() as $subcategory) { $pageId = $this->buildPageId($category->getId(), $subcategory->getId()); if (!empty($widgets[$pageId])) { $pages[] = $this->buildPageMetadata($category, $subcategory, $widgets[$pageId]); } } } return $pages; }