questlab/www/analytics/plugins/VisitorInterest/VisitorInterest.php
2014-05-14 18:30:25 +02:00

243 lines
10 KiB
PHP

<?php
/**
* Piwik - Open source web analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\VisitorInterest;
use Piwik\ArchiveProcessor;
use Piwik\FrontController;
use Piwik\Menu\MenuMain;
use Piwik\Metrics;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\Cloud;
use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
use Piwik\WidgetsList;
/**
*
*/
class VisitorInterest extends \Piwik\Plugin
{
/**
* @see Piwik\Plugin::getListHooksRegistered
*/
public function getListHooksRegistered()
{
$hooks = array(
'WidgetsList.addWidgets' => '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')
. '<br />' . 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')
. '<br />' . 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')
. '<br />' . 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 = '<div id="leftcolumn">';
}
static public function footerVisitsFrequency(&$out)
{
$out = '</div>
<div id="rightcolumn">
';
$out .= FrontController::getInstance()->fetchDispatch('VisitorInterest', 'index');
$out .= '</div>';
}
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'));
}
}