Piwik\Plugins\API\WidgetMetadata::buildWidgetMetadata PHP Метод

buildWidgetMetadata() публичный Метод

public buildWidgetMetadata ( WidgetConfig $widget, CategoryList | null $categoryList = null ) : array
$widget Piwik\Widget\WidgetConfig
$categoryList Piwik\Category\CategoryList | null If null, no category information will be added to the widgets in first level (they will be added to nested widgets as potentially needed eg for widgets in ByDimensionView where they are needed to build the left menu)
Результат array
    public function buildWidgetMetadata(WidgetConfig $widget, $categoryList = null)
    {
        $item = array('name' => Piwik::translate($widget->getName()));
        if (isset($categoryList)) {
            $category = $categoryList->getCategory($widget->getCategoryId());
            $subcategory = $category ? $category->getSubcategory($widget->getSubcategoryId()) : null;
            $item['category'] = $this->buildCategoryMetadata($category);
            $item['subcategory'] = $this->buildSubcategoryMetadata($subcategory);
        }
        $item['module'] = $widget->getModule();
        $item['action'] = $widget->getAction();
        $item['order'] = $widget->getOrder();
        $item['parameters'] = $widget->getParameters();
        $item['uniqueId'] = $widget->getUniqueId();
        $item['isWide'] = $widget->isWide();
        $middleware = $widget->getMiddlewareParameters();
        if (!empty($middleware)) {
            $item['middlewareParameters'] = $middleware;
        }
        if ($widget instanceof ReportWidgetConfig) {
            $item['viewDataTable'] = $widget->getViewDataTable();
            $item['isReport'] = true;
        }
        if ($widget instanceof WidgetContainerConfig) {
            $item['layout'] = $widget->getLayout();
            $item['isContainer'] = true;
            // we do not want to create categories to the inital categoryList. Otherwise we'd maybe display more pages
            // etc.
            $subCategoryList = new CategoryList();
            $this->createMissingCategoriesAndSubcategories($subCategoryList, $widget->getWidgetConfigs());
            $children = array();
            foreach ($widget->getWidgetConfigs() as $widgetConfig) {
                $children[] = $this->buildWidgetMetadata($widgetConfig, $subCategoryList);
            }
            $item['widgets'] = $children;
        }
        return $item;
    }