I am currently developing a custom report that extends the report Content Names with data from another database. I would like to add the subtable that shows which content pieces were clicked.
This is my Code:
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'],
//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;
}
The subtable in the report displays the following error message: There is no data for this report.
Does anyone know where my mistake is?
Second question: My first request does not return idsubdatatable - do I need an extra note in the request?