public function getWidgetMetadata(CategoryList $categoryList, WidgetsList $widgetsList)
{
$this->createMissingCategoriesAndSubcategories($categoryList, $widgetsList->getWidgetConfigs());
$flat = array();
foreach ($widgetsList->getWidgetConfigs() as $widgetConfig) {
/** @var WidgetConfig[] $widgets */
$widgets = array($widgetConfig);
if ($widgetConfig instanceof WidgetContainerConfig) {
// so far we go only one level down, in theory these widgetConfigs could have again containers containing configs
$widgets = array_merge($widgets, $widgetConfig->getWidgetConfigs());
}
foreach ($widgets as $widget) {
// make sure to include only widgetizable widgets
if (!$widget->isWidgetizeable() || !$widget->getName()) {
continue;
}
$flat[] = $this->buildWidgetMetadata($widget, $categoryList);
}
}
usort($flat, array($this, 'sortWidgets'));
return $flat;
}