private function makeArrayFromDataTable($table, &$allColumns)
{
$csv = array();
foreach ($table->getRows() as $row) {
$csvRow = $this->flattenColumnArray($row->getColumns());
if ($this->exportMetadata) {
$metadata = $row->getMetadata();
foreach ($metadata as $name => $value) {
if ($name == 'idsubdatatable_in_db') {
continue;
}
//if a metadata and a column have the same name make sure they don't overwrite
if ($this->translateColumnNames) {
$name = Piwik::translate('General_Metadata') . ': ' . $name;
} else {
$name = 'metadata_' . $name;
}
if (is_array($value)) {
if (!in_array($name, $this->unsupportedColumns)) {
$this->unsupportedColumns[] = $name;
}
} else {
$csvRow[$name] = $value;
}
}
}
foreach ($csvRow as $name => $value) {
if (in_array($name, $this->unsupportedColumns)) {
unset($allColumns[$name]);
} else {
$allColumns[$name] = true;
}
}
if ($this->exportIdSubtable) {
$idsubdatatable = $row->getIdSubDataTable();
if ($idsubdatatable !== false && $this->hideIdSubDatatable === false) {
$csvRow['idsubdatatable'] = $idsubdatatable;
}
}
$csv[] = $csvRow;
}
if (!empty($this->unsupportedColumns)) {
foreach ($this->unsupportedColumns as $unsupportedColumn) {
foreach ($csv as $index => $row) {
unset($row[$index][$unsupportedColumn]);
}
}
}
return $csv;
}