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', '&quot;' . Piwik_Translate('Referers_DetailsByRefererType') . '&quot;'));
     return $this->renderView($view, $fetch);
 }
Example #2
0
 /**
  * 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);
     }
 }
Example #3
0
 function getRefererTypeName()
 {
     return Piwik_getRefererTypeLabel($this->details['referer_type']);
 }
Example #4
0
 /**
  * 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);
     }
 }