/**
* @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;
}