Helper function that creates an Archive instance and queries for report data using
query parameter data. API methods can use this method to reduce code redundancy.
public static createDataTableFromArchive ( string $recordName, integer | string | array $idSite, string $period, string $date, string $segment, boolean $expanded = false, boolean $flat = false, integer | null $idSubtable = null, integer | null $depth = null ) : |
||
$recordName | string | The name of the report to return. |
$idSite | integer | string | array | @see {@link build()} |
$period | string | @see {@link build()} |
$date | string | @see {@link build()} |
$segment | string | @see {@link build()} |
$expanded | boolean | If true, loads all subtables. See {@link getDataTableExpanded()} |
$flat | boolean | If true, loads all subtables and disabled all recursive filters. |
$idSubtable | integer | null | See {@link getDataTableExpanded()} |
$depth | integer | null | See {@link getDataTableExpanded()} |
Результат |
/** * @param int $idSite * @param string $period * @param Date $date * @param string $segment * @param bool $expanded * @param int $idSubtable * * @return DataTable|DataTable\Map */ protected function getDataTable($idSite, $period, $date, $segment, $expanded, $flat, $idSubtable) { $dataTable = Archive::createDataTableFromArchive(Archiver::CUSTOM_VARIABLE_RECORD_NAME, $idSite, $period, $date, $segment, $expanded, $flat, $idSubtable); $dataTable->queueFilter('ColumnDelete', 'nb_uniq_visitors'); if ($flat) { $dataTable->filterSubtables('Sort', array(Metrics::INDEX_NB_ACTIONS, 'desc', $naturalSort = false, $expanded)); $dataTable->queueFilterSubtables('ColumnDelete', 'nb_uniq_visitors'); } return $dataTable; }
private function getDataTable($name, $idSite, $period, $date, $segment, $expanded, $idSubtable) { Piwik::checkUserHasViewAccess($idSite); $recordName = Dimensions::getRecordNameForAction($name); $dataTable = Archive::createDataTableFromArchive($recordName, $idSite, $period, $date, $segment, $expanded, $flat = false, $idSubtable); if (empty($idSubtable)) { $dataTable->filter('AddSegmentValue', array(function ($label) { if ($label === Archiver::CONTENT_PIECE_NOT_SET) { return false; } return $label; })); } $this->filterDataTable($dataTable); return $dataTable; }
/** * Fetch a report for the given idDimension. Only reports for active dimensions can be fetched. Requires at least * view access. * * @param int $idDimension * @param int $idSite * @param string $period * @param string $date * @param bool|false $segment * @param bool|false $expanded * @param bool|false $flat * @param int|null $idSubtable * @return DataTable|DataTable\Map * @throws \Exception */ public function getCustomDimension($idDimension, $idSite, $period, $date, $segment = false, $expanded = false, $flat = false, $idSubtable = null) { Piwik::checkUserHasViewAccess($idSite); $dimension = new Dimension($idDimension, $idSite); $dimension->checkActive(); $record = Archiver::buildRecordNameForCustomDimensionId($idDimension); $dataTable = Archive::createDataTableFromArchive($record, $idSite, $period, $date, $segment, $expanded, $flat, $idSubtable); if (isset($idSubtable) && $dataTable->getRowsCount()) { $parentTable = Archive::createDataTableFromArchive($record, $idSite, $period, $date, $segment); foreach ($parentTable->getRows() as $row) { if ($row->getIdSubDataTable() == $idSubtable) { $parentValue = $row->getColumn('label'); $dataTable->queueFilter('Piwik\\Plugins\\CustomDimensions\\DataTable\\Filter\\AddSubtableSegmentMetadata', array($idDimension, $parentValue)); break; } } } else { $dataTable->queueFilter('Piwik\\Plugins\\CustomDimensions\\DataTable\\Filter\\AddSegmentMetadata', array($idDimension)); } $dataTable->filter('Piwik\\Plugins\\CustomDimensions\\DataTable\\Filter\\RemoveUserIfNeeded', array($idSite, $period, $date)); return $dataTable; }
/** * @param int $idSite * @param string $period * @param string $date * @param string|false $segment * @param bool $expanded * @param DataTable $dataTable */ private function buildExpandedTableForFlattenGetSocials($idSite, $period, $date, $segment, $expanded, $dataTable) { $urlsTable = Archive::createDataTableFromArchive(Archiver::WEBSITES_RECORD_NAME, $idSite, $period, $date, $segment, $expanded, $flat = true); $urlsTable->filter('ColumnCallbackDeleteRow', array('label', function ($url) { return !Social::getInstance()->isSocialUrl($url); })); $urlsTable = $urlsTable->mergeSubtables(); foreach ($dataTable->getRows() as $row) { $row->removeSubtable(); $social = $row->getColumn('label'); $newTable = $urlsTable->getEmptyClone(); $rows = $urlsTable->getRows(); foreach ($rows as $id => $urlsTableRow) { $url = $urlsTableRow->getColumn('label'); if (Social::getInstance()->isSocialUrl($url, $social)) { $newTable->addRow($urlsTableRow); $urlsTable->deleteRow($id); } } if ($newTable->getRowsCount()) { $newTable->filter('Piwik\\Plugins\\Referrers\\DataTable\\Filter\\UrlsForSocial', array($expanded)); $row->setSubtable($newTable); } } Common::destroy($urlsTable); $urlsTable = null; }
protected function getDataTable($name, $idSite, $period, $date, $segment, $expanded = false, $idSubtable = null, $secondaryDimension = false, $flat = false) { Piwik::checkUserHasViewAccess($idSite); $this->checkSecondaryDimension($name, $secondaryDimension); $recordName = $this->getRecordNameForAction($name, $secondaryDimension); $dataTable = Archive::createDataTableFromArchive($recordName, $idSite, $period, $date, $segment, $expanded, $flat, $idSubtable); if ($flat) { $dataTable->filterSubtables('Piwik\\Plugins\\Events\\DataTable\\Filter\\ReplaceEventNameNotSet'); } else { $dataTable->filter('AddSegmentValue', array(function ($label) { if ($label === Archiver::EVENT_NAME_NOT_SET) { return false; } return $label; })); } $dataTable->filter('Piwik\\Plugins\\Events\\DataTable\\Filter\\ReplaceEventNameNotSet'); return $dataTable; }
/** * Function for returning a data table based on the passed selection * Used to generate the reports for all utm parameters * @param string $name * @param int $idSite * @param string $period * @param string|Date $date * @param string $segment * @param boolean $expanded * @param int|null $idSubtable * @return DataTable */ private function getDataTable($name, $idSite, $period, $date, $segment, $expanded = false, $idSubtable = null) { Piwik::checkUserHasViewAccess($idSite); $dataTable = Archive::createDataTableFromArchive($name, $idSite, $period, $date, $segment, $expanded, $idSubtable); return $dataTable; }
protected function getSiteSearchKeywordsRaw($idSite, $period, $date, $segment) { $dataTable = Archive::createDataTableFromArchive('Actions_sitesearch', $idSite, $period, $date, $segment, $expanded = false); return $dataTable; }