'archiveDay', 'ArchiveProcessor.Period.compute' => 'archivePeriod', 'WidgetsList.addWidgets' => 'addWidgets', 'Menu.Reporting.addItems' => 'addMenus', 'Goals.getReportsWithGoalMetrics' => 'getReportsWithGoalMetrics', 'API.getReportMetadata' => 'getReportMetadata', 'API.getSegmentsMetadata' => 'getSegmentsMetadata', 'Visualization.getReportDisplayProperties' => 'getReportDisplayProperties', ); return $hooks; } public function getReportMetadata(&$reports) { $reports = array_merge($reports, array( array( 'category' => Piwik::translate('Referrers_Referrers'), 'name' => Piwik::translate('Referrers_Type'), 'module' => 'Referrers', 'action' => 'getReferrerType', 'dimension' => Piwik::translate('Referrers_Type'), 'constantRowsCount' => true, 'documentation' => Piwik::translate('Referrers_TypeReportDocumentation') . '
' . '' . Piwik::translate('Referrers_DirectEntry') . ': ' . Piwik::translate('Referrers_DirectEntryDocumentation') . '
' . '' . Piwik::translate('Referrers_SearchEngines') . ': ' . Piwik::translate('Referrers_SearchEnginesDocumentation', array('
', '"' . Piwik::translate('Referrers_SubmenuSearchEngines') . '"')) . '
' . '' . Piwik::translate('Referrers_Websites') . ': ' . Piwik::translate('Referrers_WebsitesDocumentation', array('
', '"' . Piwik::translate('Referrers_SubmenuWebsites') . '"')) . '
' . '' . Piwik::translate('Referrers_Campaigns') . ': ' . Piwik::translate('Referrers_CampaignsDocumentation', array('
', '"' . Piwik::translate('Referrers_Campaigns') . '"')), 'order' => 1, ), array( 'category' => Piwik::translate('Referrers_Referrers'), 'name' => Piwik::translate('Referrers_WidgetGetAll'), 'module' => 'Referrers', 'action' => 'getAll', 'dimension' => Piwik::translate('Referrers_Referrer'), 'documentation' => Piwik::translate('Referrers_AllReferrersReportDocumentation', '
'), 'order' => 2, ), array( 'category' => Piwik::translate('Referrers_Referrers'), 'name' => Piwik::translate('Referrers_Keywords'), 'module' => 'Referrers', 'action' => 'getKeywords', 'actionToLoadSubTables' => 'getSearchEnginesFromKeywordId', 'dimension' => Piwik::translate('General_ColumnKeyword'), 'documentation' => Piwik::translate('Referrers_KeywordsReportDocumentation', '
'), 'order' => 3, ), array( // subtable report 'category' => Piwik::translate('Referrers_Referrers'), 'name' => Piwik::translate('Referrers_Keywords'), 'module' => 'Referrers', 'action' => 'getSearchEnginesFromKeywordId', 'dimension' => Piwik::translate('Referrers_ColumnSearchEngine'), 'documentation' => Piwik::translate('Referrers_KeywordsReportDocumentation', '
'), 'isSubtableReport' => true, 'order' => 4 ), array( 'category' => Piwik::translate('Referrers_Referrers'), 'name' => Piwik::translate('Referrers_Websites'), 'module' => 'Referrers', 'action' => 'getWebsites', 'dimension' => Piwik::translate('Referrers_ColumnWebsite'), 'documentation' => Piwik::translate('Referrers_WebsitesReportDocumentation', '
'), 'actionToLoadSubTables' => 'getUrlsFromWebsiteId', 'order' => 5 ), array( // subtable report 'category' => Piwik::translate('Referrers_Referrers'), 'name' => Piwik::translate('Referrers_Websites'), 'module' => 'Referrers', 'action' => 'getUrlsFromWebsiteId', 'dimension' => Piwik::translate('Referrers_ColumnWebsitePage'), 'documentation' => Piwik::translate('Referrers_WebsitesReportDocumentation', '
'), 'isSubtableReport' => true, 'order' => 6, ), array( 'category' => Piwik::translate('Referrers_Referrers'), 'name' => Piwik::translate('Referrers_SearchEngines'), 'module' => 'Referrers', 'action' => 'getSearchEngines', 'dimension' => Piwik::translate('Referrers_ColumnSearchEngine'), 'documentation' => Piwik::translate('Referrers_SearchEnginesReportDocumentation', '
'), 'actionToLoadSubTables' => 'getKeywordsFromSearchEngineId', 'order' => 7, ), array( // subtable report 'category' => Piwik::translate('Referrers_Referrers'), 'name' => Piwik::translate('Referrers_SearchEngines'), 'module' => 'Referrers', 'action' => 'getKeywordsFromSearchEngineId', 'dimension' => Piwik::translate('General_ColumnKeyword'), 'documentation' => Piwik::translate('Referrers_SearchEnginesReportDocumentation', '
'), 'isSubtableReport' => true, 'order' => 8, ), array( 'category' => Piwik::translate('Referrers_Referrers'), 'name' => Piwik::translate('Referrers_Campaigns'), 'module' => 'Referrers', 'action' => 'getCampaigns', 'dimension' => Piwik::translate('Referrers_ColumnCampaign'), 'documentation' => Piwik::translate('Referrers_CampaignsReportDocumentation', array('
', '', '')), 'actionToLoadSubTables' => 'getKeywordsFromCampaignId', 'order' => 9, ), array( // subtable report 'category' => Piwik::translate('Referrers_Referrers'), 'name' => Piwik::translate('Referrers_Campaigns'), 'module' => 'Referrers', 'action' => 'getKeywordsFromCampaignId', 'dimension' => Piwik::translate('General_ColumnKeyword'), 'documentation' => Piwik::translate('Referrers_CampaignsReportDocumentation', array('
', '', '')), 'isSubtableReport' => true, 'order' => 10, ), array( 'category' => Piwik::translate('Referrers_Referrers'), 'name' => Piwik::translate('Referrers_Socials'), 'module' => 'Referrers', 'action' => 'getSocials', 'actionToLoadSubTables' => 'getUrlsForSocial', 'dimension' => Piwik::translate('Referrers_ColumnSocial'), 'documentation' => Piwik::translate('Referrers_WebsitesReportDocumentation', '
'), 'order' => 11, ), )); } public function getSegmentsMetadata(&$segments) { $segments[] = array( 'type' => 'dimension', 'category' => 'Referrers_Referrers', 'name' => 'Referrers_Type', 'segment' => 'referrerType', 'acceptedValues' => 'direct, search, website, campaign', 'sqlSegment' => 'log_visit.referer_type', 'sqlFilter' => __NAMESPACE__ . '\getReferrerTypeFromShortName', ); $segments[] = array( 'type' => 'dimension', 'category' => 'Referrers_Referrers', 'name' => 'General_ColumnKeyword', 'segment' => 'referrerKeyword', 'acceptedValues' => 'Encoded%20Keyword, keyword', 'sqlSegment' => 'log_visit.referer_keyword', ); $segments[] = array( 'type' => 'dimension', 'category' => 'Referrers_Referrers', 'name' => 'Referrers_ReferrerName', 'segment' => 'referrerName', 'acceptedValues' => 'twitter.com, www.facebook.com, Bing, Google, Yahoo, CampaignName', 'sqlSegment' => 'log_visit.referer_name', ); $segments[] = array( 'type' => 'dimension', 'category' => 'Referrers_Referrers', 'name' => 'Live_Referrer_URL', 'acceptedValues' => 'http%3A%2F%2Fwww.example.org%2Freferer-page.htm', 'segment' => 'referrerUrl', 'sqlSegment' => 'log_visit.referer_url', ); } /** * Adds Referrer widgets */ function addWidgets() { WidgetsList::add('Referrers_Referrers', 'Referrers_WidgetKeywords', 'Referrers', 'getKeywords'); WidgetsList::add('Referrers_Referrers', 'Referrers_WidgetExternalWebsites', 'Referrers', 'getWebsites'); WidgetsList::add('Referrers_Referrers', 'Referrers_WidgetSocials', 'Referrers', 'getSocials'); WidgetsList::add('Referrers_Referrers', 'Referrers_SearchEngines', 'Referrers', 'getSearchEngines'); WidgetsList::add('Referrers_Referrers', 'Referrers_Campaigns', 'Referrers', 'getCampaigns'); WidgetsList::add('Referrers_Referrers', 'General_Overview', 'Referrers', 'getReferrerType'); WidgetsList::add('Referrers_Referrers', 'Referrers_WidgetGetAll', 'Referrers', 'getAll'); if (SettingsPiwik::isSegmentationEnabled()) { WidgetsList::add('SEO', 'Referrers_WidgetTopKeywordsForPages', 'Referrers', 'getKeywordsForPage'); } } /** * Adds Web Analytics menus */ function addMenus() { MenuMain::getInstance()->add('Referrers_Referrers', '', array('module' => 'Referrers', 'action' => 'index'), true, 20); MenuMain::getInstance()->add('Referrers_Referrers', 'General_Overview', array('module' => 'Referrers', 'action' => 'index'), true, 1); MenuMain::getInstance()->add('Referrers_Referrers', 'Referrers_SubmenuSearchEngines', array('module' => 'Referrers', 'action' => 'getSearchEnginesAndKeywords'), true, 2); MenuMain::getInstance()->add('Referrers_Referrers', 'Referrers_SubmenuWebsites', array('module' => 'Referrers', 'action' => 'indexWebsites'), true, 3); MenuMain::getInstance()->add('Referrers_Referrers', 'Referrers_Campaigns', array('module' => 'Referrers', 'action' => 'indexCampaigns'), true, 4); } /** * Adds Goal dimensions, so that the dimensions are displayed in the UI Goal Overview page */ public function getReportsWithGoalMetrics(&$dimensions) { $dimensions = array_merge($dimensions, array( array('category' => Piwik::translate('Referrers_Referrers'), 'name' => Piwik::translate('Referrers_Keywords'), 'module' => 'Referrers', 'action' => 'getKeywords', ), array('category' => Piwik::translate('Referrers_Referrers'), 'name' => Piwik::translate('Referrers_SearchEngines'), 'module' => 'Referrers', 'action' => 'getSearchEngines', ), array('category' => Piwik::translate('Referrers_Referrers'), 'name' => Piwik::translate('Referrers_Websites'), 'module' => 'Referrers', 'action' => 'getWebsites', ), array('category' => Piwik::translate('Referrers_Referrers'), 'name' => Piwik::translate('Referrers_Campaigns'), 'module' => 'Referrers', 'action' => 'getCampaigns', ), array('category' => Piwik::translate('Referrers_Referrers'), 'name' => Piwik::translate('Referrers_Type'), 'module' => 'Referrers', 'action' => 'getReferrerType', ), )); } /** * Hooks on daily archive to trigger various log processing */ public function archiveDay(ArchiveProcessor\Day $archiveProcessor) { $archiving = new Archiver($archiveProcessor); if ($archiving->shouldArchive()) { $archiving->archiveDay(); } } /** * Period archiving: sums up daily stats and sums report tables, * making sure that tables are still truncated. */ public function archivePeriod(ArchiveProcessor\Period $archiveProcessor) { $archiving = new Archiver($archiveProcessor); if ($archiving->shouldArchive()) { $archiving->archivePeriod(); } } public function getReportDisplayProperties(&$properties) { $properties['Referrers.getReferrerType'] = $this->getDisplayPropertiesForGetReferrerType(); $properties['Referrers.getAll'] = $this->getDisplayPropertiesForGetAll(); $properties['Referrers.getKeywords'] = $this->getDisplayPropertiesForGetKeywords(); $properties['Referrers.getSearchEnginesFromKeywordId'] = $this->getDisplayPropertiesForGetSearchEnginesFromKeywordId(); $properties['Referrers.getSearchEngines'] = $this->getDisplayPropertiesForGetSearchEngines(); $properties['Referrers.getKeywordsFromSearchEngineId'] = $this->getDisplayPropertiesForGetKeywordsFromSearchEngineId(); $properties['Referrers.getWebsites'] = $this->getDisplayPropertiesForGetWebsites(); $properties['Referrers.getSocials'] = $this->getDisplayPropertiesForGetSocials(); $properties['Referrers.getUrlsForSocial'] = $this->getDisplayPropertiesForGetUrlsForSocial(); $properties['Referrers.getCampaigns'] = $this->getDisplayPropertiesForGetCampaigns(); $properties['Referrers.getKeywordsFromCampaignId'] = $this->getDisplayPropertiesForGetKeywordsFromCampaignId(); $properties['Referrers.getUrlsFromWebsiteId'] = $this->getDisplayPropertiesForGetUrlsFromWebsiteId(); } private function getDisplayPropertiesForGetReferrerType() { $idSubtable = Common::getRequestVar('idSubtable', false); $labelColumnTitle = Piwik::translate('Referrers_Type'); switch ($idSubtable) { case Common::REFERRER_TYPE_SEARCH_ENGINE: $labelColumnTitle = Piwik::translate('Referrers_ColumnSearchEngine'); break; case Common::REFERRER_TYPE_WEBSITE: $labelColumnTitle = Piwik::translate('Referrers_ColumnWebsite'); break; case Common::REFERRER_TYPE_CAMPAIGN: $labelColumnTitle = Piwik::translate('Referrers_ColumnCampaign'); break; default: break; } return array( 'default_view_type' => 'tableAllColumns', 'show_search' => false, 'show_offset_information' => false, 'show_pagination_control' => false, 'show_limit_control' => false, 'show_exclude_low_population' => false, 'show_goals' => true, 'filter_limit' => 10, 'translations' => array('label' => $labelColumnTitle), 'visualization_properties' => array( 'table' => array( 'disable_subtable_when_show_goals' => true, ) ), ); } private function getDisplayPropertiesForGetAll() { $setGetAllHtmlPrefix = array($this, 'setGetAllHtmlPrefix'); return array( 'show_exclude_low_population' => false, 'translations' => array('label' => Piwik::translate('Referrers_Referrer')), 'show_goals' => true, 'filter_limit' => 20, 'visualization_properties' => array( 'table' => array( 'disable_row_actions' => true ) ), 'filters' => array( array('MetadataCallbackAddMetadata', array('referer_type', 'html_label_prefix', $setGetAllHtmlPrefix)) ) ); } private function getDisplayPropertiesForGetKeywords() { return array( 'subtable_controller_action' => 'getSearchEnginesFromKeywordId', 'show_exclude_low_population' => false, 'translations' => array('label' => Piwik::translate('General_ColumnKeyword')), 'show_goals' => true, 'filter_limit' => 25, 'visualization_properties' => array( 'table' => array( 'disable_subtable_when_show_goals' => true, ) ), ); } private function getDisplayPropertiesForGetSearchEnginesFromKeywordId() { return array( 'show_search' => false, 'show_exclude_low_population' => false, 'translations' => array('label' => Piwik::translate('Referrers_ColumnSearchEngine')) ); } private function getDisplayPropertiesForGetSearchEngines() { return array( 'subtable_controller_action' => 'getKeywordsFromSearchEngineId', 'show_search' => false, 'show_exclude_low_population' => false, 'show_goals' => true, 'filter_limit' => 25, 'translations' => array('label' => Piwik::translate('Referrers_ColumnSearchEngine')), 'visualization_properties' => array( 'table' => array( 'disable_subtable_when_show_goals' => true, ) ), ); } private function getDisplayPropertiesForGetKeywordsFromSearchEngineId() { return array( 'show_search' => false, 'show_exclude_low_population' => false, 'translations' => array('label' => Piwik::translate('General_ColumnKeyword')) ); } private function getDisplayPropertiesForGetWebsites() { return array( 'subtable_controller_action' => 'getUrlsFromWebsiteId', 'show_exclude_low_population' => false, 'show_goals' => true, 'filter_limit' => 25, 'translations' => array('label' => Piwik::translate('Referrers_ColumnWebsite')), 'visualization_properties' => array( 'table' => array( 'disable_subtable_when_show_goals' => true, ) ), ); } private function getDisplayPropertiesForGetSocials() { $result = array( 'default_view_type' => 'graphPie', 'subtable_controller_action' => 'getUrlsForSocial', 'show_exclude_low_population' => false, 'filter_limit' => 10, 'show_goals' => true, 'translations' => array('label' => Piwik::translate('Referrers_ColumnSocial')), 'visualization_properties' => array( 'table' => array( 'disable_subtable_when_show_goals' => true, ) ), ); $widget = Common::getRequestVar('widget', false); if (empty($widget)) { $result['show_footer_message'] = Piwik::translate('Referrers_SocialFooterMessage'); } return $result; } private function getDisplayPropertiesForGetUrlsForSocial() { return array( 'show_exclude_low_population' => false, 'filter_limit' => 10, 'show_goals' => true, 'translations' => array('label' => Piwik::translate('Referrers_ColumnWebsitePage')) ); } private function getDisplayPropertiesForGetCampaigns() { $result = array( 'subtable_controller_action' => 'getKeywordsFromCampaignId', 'show_exclude_low_population' => false, 'show_goals' => true, 'filter_limit' => 25, 'translations' => array('label' => Piwik::translate('Referrers_ColumnCampaign')), ); if (Common::getRequestVar('viewDataTable', false) != 'graphEvolution') { $result['show_footer_message'] = Piwik::translate('Referrers_CampaignFooterHelp', array('', ' - ', '') ); } return $result; } private function getDisplayPropertiesForGetKeywordsFromCampaignId() { return array( 'show_search' => false, 'show_exclude_low_population' => false, 'translations' => array('label' => Piwik::translate('General_ColumnKeyword')) ); } private function getDisplayPropertiesForGetUrlsFromWebsiteId() { return array( 'show_search' => false, 'show_exclude_low_population' => false, 'translations' => array('label' => Piwik::translate('Referrers_ColumnWebsitePage')), 'tooltip_metadata_name' => 'url' ); } /** * DataTable filter callback that returns the HTML prefix for a label in the * 'getAll' report based on the row's referrer type. * * @param int $referrerType The referrer type. * @return string */ public function setGetAllHtmlPrefix($referrerType) { // get singular label for referrer type $indexTranslation = ''; switch ($referrerType) { case Common::REFERRER_TYPE_DIRECT_ENTRY: $indexTranslation = 'Referrers_DirectEntry'; break; case Common::REFERRER_TYPE_SEARCH_ENGINE: $indexTranslation = 'General_ColumnKeyword'; break; case Common::REFERRER_TYPE_WEBSITE: $indexTranslation = 'Referrers_ColumnWebsite'; break; case Common::REFERRER_TYPE_CAMPAIGN: $indexTranslation = 'Referrers_ColumnCampaign'; break; default: // case of newsletter, partners, before Piwik 0.2.25 $indexTranslation = 'General_Others'; break; } $label = strtolower(Piwik::translate($indexTranslation)); // return html that displays it as grey & italic return '(' . $label . ')'; } }