'addWidgets', 'Menu.Reporting.addItems' => 'addMenu', 'API.getReportMetadata' => 'getReportMetadata', 'ViewDataTable.configure' => 'configureViewDataTable', 'ViewDataTable.getDefaultType' => 'getDefaultTypeViewDataTable' ); return $hooks; } public function getReportMetadata(&$reports) { $reports[] = array( 'category' => Piwik::translate('General_Visitors'), 'name' => Piwik::translate('VisitorInterest_WidgetLengths'), 'module' => 'VisitorInterest', 'action' => 'getNumberOfVisitsPerVisitDuration', 'dimension' => Piwik::translate('VisitorInterest_ColumnVisitDuration'), 'metrics' => array('nb_visits'), 'processedMetrics' => false, 'constantRowsCount' => true, 'documentation' => Piwik::translate('VisitorInterest_WidgetLengthsDocumentation') . '
' . Piwik::translate('General_ChangeTagCloudView'), 'order' => 15 ); $reports[] = array( 'category' => Piwik::translate('General_Visitors'), 'name' => Piwik::translate('VisitorInterest_WidgetPages'), 'module' => 'VisitorInterest', 'action' => 'getNumberOfVisitsPerPage', 'dimension' => Piwik::translate('VisitorInterest_ColumnPagesPerVisit'), 'metrics' => array('nb_visits'), 'processedMetrics' => false, 'constantRowsCount' => true, 'documentation' => Piwik::translate('VisitorInterest_WidgetPagesDocumentation') . '
' . Piwik::translate('General_ChangeTagCloudView'), 'order' => 20 ); $reports[] = array( 'category' => Piwik::translate('General_Visitors'), 'name' => Piwik::translate('VisitorInterest_visitsByVisitCount'), 'module' => 'VisitorInterest', 'action' => 'getNumberOfVisitsByVisitCount', 'dimension' => Piwik::translate('VisitorInterest_visitsByVisitCount'), 'metrics' => array( 'nb_visits', 'nb_visits_percentage' => Piwik::translate('General_ColumnPercentageVisits'), ), 'processedMetrics' => false, 'constantRowsCount' => true, 'documentation' => Piwik::translate('VisitorInterest_WidgetVisitsByNumDocumentation') . '
' . Piwik::translate('General_ChangeTagCloudView'), 'order' => 25 ); $reports[] = array( 'category' => Piwik::translate('General_Visitors'), 'name' => Piwik::translate('VisitorInterest_VisitsByDaysSinceLast'), 'module' => 'VisitorInterest', 'action' => 'getNumberOfVisitsByDaysSinceLast', 'dimension' => Piwik::translate('VisitorInterest_VisitsByDaysSinceLast'), 'metrics' => array('nb_visits'), 'processedMetrics' => false, 'constantRowsCount' => true, 'documentation' => Piwik::translate('VisitorInterest_WidgetVisitsByDaysSinceLastDocumentation'), 'order' => 30 ); } public function addWidgets() { WidgetsList::add('General_Visitors', 'VisitorInterest_WidgetLengths', 'VisitorInterest', 'getNumberOfVisitsPerVisitDuration'); WidgetsList::add('General_Visitors', 'VisitorInterest_WidgetPages', 'VisitorInterest', 'getNumberOfVisitsPerPage'); WidgetsList::add('General_Visitors', 'VisitorInterest_visitsByVisitCount', 'VisitorInterest', 'getNumberOfVisitsByVisitCount'); WidgetsList::add('General_Visitors', 'VisitorInterest_WidgetVisitsByDaysSinceLast', 'VisitorInterest', 'getNumberOfVisitsByDaysSinceLast'); } public function addMenu() { MenuMain::getInstance()->rename('General_Visitors', 'VisitFrequency_SubmenuFrequency', 'General_Visitors', 'VisitorInterest_Engagement'); } function postLoad() { Piwik::addAction('Template.headerVisitsFrequency', array('Piwik\Plugins\VisitorInterest\VisitorInterest', 'headerVisitsFrequency')); Piwik::addAction('Template.footerVisitsFrequency', array('Piwik\Plugins\VisitorInterest\VisitorInterest', 'footerVisitsFrequency')); } static public function headerVisitsFrequency(&$out) { $out = '
'; } static public function footerVisitsFrequency(&$out) { $out = '
'; $out .= FrontController::getInstance()->fetchDispatch('VisitorInterest', 'index'); $out .= '
'; } public function getDefaultTypeViewDataTable(&$defaultViewTypes) { $defaultViewTypes['VisitorInterest.getNumberOfVisitsPerVisitDuration'] = Cloud::ID; $defaultViewTypes['VisitorInterest.getNumberOfVisitsPerPage'] = Cloud::ID; } public function configureViewDataTable(ViewDataTable $view) { switch ($view->requestConfig->apiMethodToRequestDataTable) { case 'VisitorInterest.getNumberOfVisitsPerVisitDuration': $this->configureViewForGetNumberOfVisitsPerVisitDuration($view); break; case 'VisitorInterest.getNumberOfVisitsPerPage': $this->configureViewForGetNumberOfVisitsPerPage($view); break; case 'VisitorInterest.getNumberOfVisitsByVisitCount': $this->configureViewForGetNumberOfVisitsByVisitCount($view); break; case 'VisitorInterest.getNumberOfVisitsByDaysSinceLast': $this->configureViewForGetNumberOfVisitsByDaysSinceLast($view); break; } } private function configureViewForGetNumberOfVisitsPerVisitDuration(ViewDataTable $view) { $view->requestConfig->filter_sort_column = 'label'; $view->requestConfig->filter_sort_order = 'asc'; $view->config->addTranslation('label', Piwik::translate('VisitorInterest_ColumnVisitDuration')); $view->config->enable_sort = false; $view->config->show_exclude_low_population = false; $view->config->show_offset_information = false; $view->config->show_pagination_control = false; $view->config->show_limit_control = false; $view->config->show_search = false; $view->config->show_table_all_columns = false; $view->config->columns_to_display = array('label', 'nb_visits'); if ($view->isViewDataTableId(Graph::ID)) { $view->config->show_series_picker = false; $view->config->selectable_columns = array(); $view->config->max_graph_elements = 10; } } private function configureViewForGetNumberOfVisitsPerPage(ViewDataTable $view) { $view->requestConfig->filter_sort_column = 'label'; $view->requestConfig->filter_sort_order = 'asc'; $view->config->addTranslation('label', Piwik::translate('VisitorInterest_ColumnVisitDuration')); $view->config->enable_sort = false; $view->config->show_exclude_low_population = false; $view->config->show_offset_information = false; $view->config->show_pagination_control = false; $view->config->show_limit_control = false; $view->config->show_search = false; $view->config->show_table_all_columns = false; $view->config->columns_to_display = array('label', 'nb_visits'); if ($view->isViewDataTableId(Graph::ID)) { $view->config->show_series_picker = false; $view->config->selectable_columns = array(); $view->config->max_graph_elements = 10; } } private function configureViewForGetNumberOfVisitsByVisitCount(ViewDataTable $view) { $view->requestConfig->filter_sort_column = 'label'; $view->requestConfig->filter_sort_order = 'asc'; $view->requestConfig->filter_limit = 15; $view->config->addTranslations(array( 'label' => Piwik::translate('VisitorInterest_VisitNum'), 'nb_visits_percentage' => Metrics::getPercentVisitColumn()) ); $view->config->columns_to_display = array('label', 'nb_visits', 'nb_visits_percentage'); $view->config->show_exclude_low_population = false; $view->config->enable_sort = false; $view->config->show_offset_information = false; $view->config->show_pagination_control = false; $view->config->show_limit_control = false; $view->config->show_search = false; $view->config->show_table_all_columns = false; $view->config->show_all_views_icons = false; } private function configureViewForGetNumberOfVisitsByDaysSinceLast(ViewDataTable $view) { $view->requestConfig->filter_sort_column = 'label'; $view->requestConfig->filter_sort_order = 'asc'; $view->requestConfig->filter_limit = 15; $view->config->show_search = false; $view->config->enable_sort = false; $view->config->show_offset_information = false; $view->config->show_pagination_control = false; $view->config->show_limit_control = false; $view->config->show_all_views_icons = false; $view->config->show_table_all_columns = false; $view->config->show_exclude_low_population = false; $view->config->addTranslation('label', Piwik::translate('General_DaysSinceLastVisit')); } }