public function getEvolutionGraph($fetch = false, $typeReferer = false, $columns = false) { $view = $this->getLastUnitGraph($this->pluginName, __FUNCTION__, 'Referers.getRefererType'); // configure displayed columns if (empty($columns)) { $columns = Piwik_Common::getRequestVar('columns'); $columns = Piwik::getArrayFromApiParameter($columns); } $columns = !is_array($columns) ? array($columns) : $columns; $view->setColumnsToDisplay($columns); // configure selectable columns if (Piwik_Common::getRequestVar('period', false) == 'day') { $selectable = array('nb_visits', 'nb_uniq_visitors', 'nb_actions'); } else { $selectable = array('nb_visits', 'nb_actions'); } $view->setSelectableColumns($selectable); // configure displayed rows $visibleRows = Piwik_Common::getRequestVar('rows', false); if ($visibleRows !== false) { // this happens when the row picker has been used $visibleRows = Piwik::getArrayFromApiParameter($visibleRows); } else { // use $typeReferer as default if ($typeReferer === false) { $typeReferer = Piwik_Common::getRequestVar('typeReferer', false); } $label = Piwik_getRefererTypeLabel($typeReferer); $label = Piwik_Translate($label); $visibleRows = array($label); $view->setParametersToModify(array('rows' => $label)); } $view->addRowPicker($visibleRows); $view->setReportDocumentation(Piwik_Translate('Referers_EvolutionDocumentation') . '<br />' . Piwik_Translate('General_BrokenDownReportDocumentation') . '<br />' . Piwik_Translate('Referers_EvolutionDocumentationMoreInfo', '"' . Piwik_Translate('Referers_DetailsByRefererType') . '"')); return $this->renderView($view, $fetch); }
/** * Add transitions data to the report. * Fake ArchiveProcessing to do the queries live. */ private function addLiveTransitionsDataToReport(&$report, $pageUrl, $idSite, $period, $date, $segment, $limitBeforeGrouping) { // get idaction of page url $actionsPlugin = new Piwik_Actions(); $idaction = $actionsPlugin->getIdActionFromSegment($pageUrl, 'idaction'); // prepare archive processing that can be reused by the archiving code $archiveProcessing = new Piwik_ArchiveProcessing_Day(); $archiveProcessing->setSite(new Piwik_Site($idSite)); $archiveProcessing->setPeriod(Piwik_Period::advancedFactory($period, $date)); $archiveProcessing->setSegment(new Piwik_Segment($segment, $idSite)); $archiveProcessing->initForLiveUsage(); // launch the archiving code - but live $transitionsArchiving = new Piwik_Transitions(); $data = $transitionsArchiving->queryInternalReferrers($idaction, $archiveProcessing, $limitBeforeGrouping); $report['previousPages'] =& $data['previousPages']; $report['pageMetrics']['loops'] = intval($data['loops']); $data = $transitionsArchiving->queryFollowingActions($idaction, $archiveProcessing, $limitBeforeGrouping); foreach ($data as $tableName => $table) { $report[$tableName] = $table; } $data = $transitionsArchiving->queryExternalReferrers($idaction, $archiveProcessing, $limitBeforeGrouping); $report['pageMetrics']['entries'] = 0; $report['referrers'] = array(); foreach ($data->getRows() as $row) { $referrerId = $row->getColumn('label'); $visits = $row->getColumn(Piwik_Archive::INDEX_NB_VISITS); if ($visits) { // load details (i.e. subtables) $details = array(); if ($idSubTable = $row->getIdSubDataTable()) { $subTable = Piwik_DataTable_Manager::getInstance()->getTable($idSubTable); foreach ($subTable->getRows() as $subRow) { $details[] = array('label' => $subRow->getColumn('label'), 'referrals' => $subRow->getColumn(Piwik_Archive::INDEX_NB_VISITS)); } } $report['referrers'][] = array('label' => $this->getReferrerLabel($referrerId), 'shortName' => Piwik_getRefererTypeFromShortName($referrerId), 'visits' => $visits, 'details' => $details); $report['pageMetrics']['entries'] += $visits; } } // if there's no data for referrers, Piwik_API_ResponseBuilder::handleMultiDimensionalArray // does not detect the multi dimensional array and the data is rendered differently, which // causes an exception. if (count($report['referrers']) == 0) { $report['referrers'][] = array('label' => $this->getReferrerLabel(Piwik_Common::REFERER_TYPE_DIRECT_ENTRY), 'shortName' => Piwik_getRefererTypeLabel(Piwik_Common::REFERER_TYPE_DIRECT_ENTRY), 'visits' => 0); } }
function getRefererTypeName() { return Piwik_getRefererTypeLabel($this->details['referer_type']); }
/** * Add the external referrers to the report: * direct entries, websites, campaigns, search engines * * @param Piwik_Transitions $transitionsArchiving * @param $archiveProcessing * @param $report * @param $idaction * @param string $actionType * @param $limitBeforeGrouping */ private function addExternalReferrers($transitionsArchiving, $archiveProcessing, &$report, $idaction, $actionType, $limitBeforeGrouping) { $data = $transitionsArchiving->queryExternalReferrers($idaction, $actionType, $archiveProcessing, $limitBeforeGrouping); $report['pageMetrics']['entries'] = 0; $report['referrers'] = array(); foreach ($data->getRows() as $row) { $referrerId = $row->getColumn('label'); $visits = $row->getColumn(Piwik_Archive::INDEX_NB_VISITS); if ($visits) { // load details (i.e. subtables) $details = array(); if ($idSubTable = $row->getIdSubDataTable()) { $subTable = Piwik_DataTable_Manager::getInstance()->getTable($idSubTable); foreach ($subTable->getRows() as $subRow) { $details[] = array('label' => $subRow->getColumn('label'), 'referrals' => $subRow->getColumn(Piwik_Archive::INDEX_NB_VISITS)); } } $report['referrers'][] = array('label' => $this->getReferrerLabel($referrerId), 'shortName' => Piwik_getRefererTypeFromShortName($referrerId), 'visits' => $visits, 'details' => $details); $report['pageMetrics']['entries'] += $visits; } } // if there's no data for referrers, Piwik_API_ResponseBuilder::handleMultiDimensionalArray // does not detect the multi dimensional array and the data is rendered differently, which // causes an exception. if (count($report['referrers']) == 0) { $report['referrers'][] = array('label' => $this->getReferrerLabel(Piwik_Common::REFERER_TYPE_DIRECT_ENTRY), 'shortName' => Piwik_getRefererTypeLabel(Piwik_Common::REFERER_TYPE_DIRECT_ENTRY), 'visits' => 0); } }