Matomo: Как добавить подтаблицу в пользовательский отчет? - PullRequest
0 голосов
/ 27 января 2020

В настоящее время я занимаюсь разработкой пользовательского отчета, который расширяет имена содержимого отчета данными из другой базы данных. Я хотел бы добавить подтаблицу, в которой показано, какие фрагменты содержимого были нажаты.

Это мой код:

public function getMyReport($idSite, $period, $date, $segment = false)
{
    $data = \Piwik\API\Request::processRequest('Contents.getContentNames', array(
        'idSite' => $idSite,
        'period' => $period,
        'date' => $date,
        'segment' => $segment,
        'filter_limit'=> -1,
        'expanded'=>1,
    ));
    $data->applyQueuedFilters();
    $result = $data->getEmptyClone($keepFilters = false);

    foreach ($data->getRows() as $visitRow) {
        //GET ADDITIONAL DATA FROM ANOTHER DATABASE

        $row = new \Piwik_DataTable_Row(array(array(
            'ID' => $visitRow['label'],
            'Seen' => $visitRow['nb_impressions'],
            'Clicked' => $visitRow['nb_interactions'],
            'Click Rate' => $visitRow['interaction_rate'],
        )));  //GETTING MY ADDITIONAL DATA
        $subtabledata=\Piwik\API\Request::processRequest('Contents.getContentNames', array(
            'idSite' => $idSite,
            'period' => $period,
            'date' => $date,
            'segment' => $segment,
            'filter_limit'=> -1,
            'idSubtable'=>1,
        ));
        $subtabledata->applyQueuedFilters();
        $subresult = new DataTable();
        foreach ($subtabledata->getRows() as $subtabledataRow){
            $subRow =new \Piwik_DataTable_Row(array(Row::COLUMNS => array(
                'label'=>$subtabledataRow['label'],
                'Seen' => $subtabledataRow['nb_impressions'],
                'Clicked' => $subtabledataRow['nb_interactions'],
                'Click Rate' => $subtabledataRow['interaction_rate'],
            )));
            $subresult->addRow($subRow);
        };
        $row->setSubtable($subresult);
        $result->addRow($row);
    }
    return $result;
}

В подтаблице в отчете отображается следующее сообщение об ошибке: Нет данных. для этого отчета. Нужно ли указывать подтаблицу где-нибудь в GetMyReport. php? Я довольно смущен. Когда я вывожу свой $ subRow через var_dump, я получаю следующую информацию:

object(Piwik_DataTable_Row)#3145 (5) { ["maxVisitsSummed"]=> int(0) ["metadata": "Piwik\DataTable\Row":private]=> array(0) { } ["isSubtableLoaded": "Piwik\DataTable\Row":private]=> bool(false) ["subtableId"]=> NULL ["storage": "ArrayObject":private]=> array(4) { ["label"]=> string(5) "list" ["lakes"]=> int(1) ["Clicked"]=> int(0) ["Click Rate"]=> string(2) "0%" } }

Кто-нибудь знает, что я делаю неправильно?

Второй вопрос: Мой первый запрос не возвращает idsubdatatable - мне нужна дополнительная заметка в запросе?

...