Piwik\Archive\DataTableFactory::makeMergedTableWithPeriodAndSiteIndex PHP Метод

makeMergedTableWithPeriodAndSiteIndex() приватный Метод

private makeMergedTableWithPeriodAndSiteIndex ( $index, $resultIndices, $useSimpleDataTable, $isNumeric )
    private function makeMergedTableWithPeriodAndSiteIndex($index, $resultIndices, $useSimpleDataTable, $isNumeric)
    {
        $map = new DataTable\Map();
        $map->setKeyName($resultIndices[self::TABLE_METADATA_PERIOD_INDEX]);
        // we save all tables of the map in this array to be able to add rows fast
        $tables = array();
        foreach ($this->periods as $range => $period) {
            // as the resulting table is "merged", we do only set Period metedata and no metadata for site. Instead each
            // row will have an idsite metadata entry.
            $metadata = array(self::TABLE_METADATA_PERIOD_INDEX => $period);
            if ($useSimpleDataTable) {
                $table = new DataTable\Simple();
            } else {
                $table = new DataTable();
            }
            $table->setAllTableMetadata($metadata);
            $map->addTable($table, $this->prettifyIndexLabel(self::TABLE_METADATA_PERIOD_INDEX, $range));
            $tables[$range] = $table;
        }
        foreach ($index as $idsite => $table) {
            $rowMeta = array('idsite' => $idsite);
            foreach ($table as $range => $row) {
                if (!empty($row)) {
                    $tables[$range]->addRow(new Row(array(Row::COLUMNS => $row, Row::METADATA => $rowMeta)));
                } elseif ($isNumeric) {
                    $tables[$range]->addRow(new Row(array(Row::COLUMNS => $this->defaultRow, Row::METADATA => $rowMeta)));
                }
            }
        }
        return $map;
    }