Piwik\Plugins\API\WidgetMetadata::getWidgetMetadata PHP Method

getWidgetMetadata() public method

public getWidgetMetadata ( CategoryList $categoryList, WidgetsList $widgetsList )
$categoryList Piwik\Category\CategoryList
$widgetsList Piwik\Widget\WidgetsList
    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;
    }

Usage Example

Example #1
0
File: API.php Project: piwik/piwik
 /**
  * Get a list of all widgetizable widgets.
  *
  * @param int $idSite
  * @return array
  */
 public function getWidgetMetadata($idSite)
 {
     Piwik::checkUserHasViewAccess($idSite);
     $widgetsList = WidgetsList::get();
     $categoryList = CategoryList::get();
     $metadata = new WidgetMetadata();
     return $metadata->getWidgetMetadata($categoryList, $widgetsList);
 }