PDF rausgenommen

This commit is contained in:
aschwarz
2023-01-23 11:03:31 +01:00
parent 82d562a322
commit a6523903eb
28078 changed files with 4247552 additions and 2 deletions

View File

@@ -0,0 +1,112 @@
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\Actions\Reports;
use Piwik\Common;
use Piwik\Metrics;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\Actions\Actions;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\API\Request;
abstract class Base extends \Piwik\Plugin\Report
{
protected function init()
{
$this->categoryId = 'General_Actions';
$this->processedMetrics = false;
$this->recursiveLabelSeparator = '/';
}
protected function addBaseDisplayProperties(ViewDataTable $view)
{
$view->config->datatable_js_type = 'ActionsDataTable';
$view->config->search_recursive = true;
$view->config->show_table_all_columns = false;
$view->requestConfig->filter_limit = Actions::ACTIONS_REPORT_ROWS_DISPLAY;
$view->config->show_all_views_icons = false;
if ($view->isViewDataTableId(HtmlTable::ID)) {
$view->config->show_embedded_subtable = true;
}
if (Request::shouldLoadExpanded()) {
if ($view->isViewDataTableId(HtmlTable::ID)) {
$view->config->show_expanded = true;
}
$view->config->filters[] = function ($dataTable) {
Actions::setDataTableRowLevels($dataTable);
};
}
$view->config->filters[] = function ($dataTable) use ($view) {
if ($view->isViewDataTableId(HtmlTable::ID)) {
$view->config->datatable_css_class = 'dataTableActions';
}
};
}
protected function addPageDisplayProperties(ViewDataTable $view)
{
$view->config->addTranslations(array(
'nb_hits' => Piwik::translate('General_ColumnPageviews'),
'nb_visits' => Piwik::translate('General_ColumnUniquePageviews')
));
$formatter = new Formatter();
// add avg_generation_time tooltip
$tooltipCallback = function ($hits, $min, $max) use ($formatter) {
if (!$hits) {
return false;
}
return Piwik::translate("Actions_AvgGenerationTimeTooltip", array(
$hits,
"<br />",
$formatter->getPrettyTimeFromSeconds($min, true),
$formatter->getPrettyTimeFromSeconds($max, true)
));
};
$view->config->filters[] = array('ColumnCallbackAddMetadata',
array(
array('nb_hits_with_time_generation', 'min_time_generation', 'max_time_generation'),
'avg_time_generation_tooltip',
$tooltipCallback
)
);
$this->addExcludeLowPopDisplayProperties($view);
}
protected function addExcludeLowPopDisplayProperties(ViewDataTable $view)
{
if (Common::getRequestVar('enable_filter_excludelowpop', '0', 'string') != '0') {
if (Common::getRequestVar('flat', 0, 'int') === 1) {
$view->requestConfig->filter_excludelowpop = 'nb_hits';
} else {
$view->requestConfig->filter_excludelowpop = Metrics::INDEX_PAGE_NB_HITS;
}
$view->requestConfig->filter_excludelowpop_value = function () {
// computing minimum value to exclude (2 percent of the total number of actions)
$visitsInfo = \Piwik\Plugins\VisitsSummary\Controller::getVisitsSummary()->getFirstRow();
$nbActions = $visitsInfo->getColumn('nb_actions');
$nbActionsLowPopulationThreshold = floor(0.02 * $nbActions);
// we remove 1 to make sure some actions/downloads are displayed in the case we have a very few of them
// and each of them has 1 or 2 hits...
return min($visitsInfo->getColumn('max_actions') - 1, $nbActionsLowPopulationThreshold - 1);
};
}
}
}

View File

@@ -0,0 +1,37 @@
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\Actions\Reports;
use Piwik\Piwik;
use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime;
class Get extends Base
{
protected function init()
{
parent::init();
$this->name = Piwik::translate('General_Actions') . ' - ' . Piwik::translate('General_MainMetrics');
$this->documentation = ''; // TODO
$this->order = 1;
$this->processedMetrics = array(
new AveragePageGenerationTime()
);
$this->metrics = array(
'nb_pageviews',
'nb_uniq_pageviews',
'nb_downloads',
'nb_uniq_downloads',
'nb_outlinks',
'nb_uniq_outlinks',
'nb_searches',
'nb_keywords'
);
}
}

View File

@@ -0,0 +1,57 @@
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\Actions\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\Actions\Columns\DownloadUrl;
class GetDownloads extends Base
{
protected function init()
{
parent::init();
$this->dimension = new DownloadUrl();
$this->name = Piwik::translate('General_Downloads');
$this->documentation = Piwik::translate('Actions_DownloadsReportDocumentation', '<br />');
$this->metrics = array('nb_visits', 'nb_hits');
$this->actionToLoadSubTables = $this->action;
$this->order = 9;
$this->subcategoryId = 'General_Downloads';
}
public function getMetrics()
{
return array(
'nb_visits' => Piwik::translate('Actions_ColumnUniqueDownloads'),
'nb_hits' => Piwik::translate('General_Downloads')
);
}
protected function getMetricsDocumentation()
{
return array(
'nb_visits' => Piwik::translate('Actions_ColumnUniqueClicksDocumentation'),
'nb_hits' => Piwik::translate('Actions_ColumnClicksDocumentation')
);
}
public function configureView(ViewDataTable $view)
{
$view->config->addTranslations(array('label' => $this->dimension->getName()));
$view->config->columns_to_display = array('label', 'nb_visits', 'nb_hits');
$view->config->show_exclude_low_population = false;
$this->addBaseDisplayProperties($view);
}
}

View File

@@ -0,0 +1,94 @@
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\Actions\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\Actions\Columns\EntryPageTitle;
use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime;
use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage;
use Piwik\Plugins\Actions\Columns\Metrics\BounceRate;
use Piwik\Plugins\Actions\Columns\Metrics\ExitRate;
use Piwik\Plugin\ReportsProvider;
use Piwik\Report\ReportWidgetFactory;
use Piwik\Widget\WidgetsList;
class GetEntryPageTitles extends Base
{
protected function init()
{
parent::init();
$this->dimension = new EntryPageTitle();
$this->name = Piwik::translate('Actions_EntryPageTitles');
$this->documentation = Piwik::translate('Actions_EntryPageTitlesReportDocumentation', '<br />')
. ' ' . Piwik::translate('General_UsePlusMinusIconsDocumentation');
$this->metrics = array('entry_nb_visits', 'entry_bounce_count');
$this->processedMetrics = array(
new AverageTimeOnPage(),
new BounceRate(),
new ExitRate(),
new AveragePageGenerationTime()
);
$this->order = 6;
$this->actionToLoadSubTables = $this->action;
$this->subcategoryId = 'Actions_SubmenuPagesEntry';
}
public function configureWidgets(WidgetsList $widgetsList, ReportWidgetFactory $factory)
{
$widgetsList->addWidgetConfig($factory->createWidget()->setName('Actions_WidgetEntryPageTitles'));
}
public function getProcessedMetrics()
{
$result = parent::getProcessedMetrics();
// these metrics are not displayed in the API.getProcessedReport version of this report,
// so they are removed here.
unset($result['avg_time_on_page']);
unset($result['exit_rate']);
return $result;
}
protected function getMetricsDocumentation()
{
$metrics = parent::getMetricsDocumentation();
$metrics['bounce_rate'] = Piwik::translate('General_ColumnPageBounceRateDocumentation');
// remove these metrics from API.getProcessedReport version of this report
unset($metrics['avg_time_on_page']);
unset($metrics['exit_rate']);
return $metrics;
}
public function configureView(ViewDataTable $view)
{
$view->config->addTranslations(array('label' => $this->dimension->getName()));
$view->config->columns_to_display = array('label', 'entry_nb_visits', 'entry_bounce_count', 'bounce_rate');
$view->config->title = $this->name;
$view->requestConfig->filter_sort_column = 'entry_nb_visits';
$this->addPageDisplayProperties($view);
$this->addBaseDisplayProperties($view);
}
public function getRelatedReports()
{
return array(
ReportsProvider::factory('Actions', 'getPageTitles'),
ReportsProvider::factory('Actions', 'getEntryPageUrls')
);
}
}

View File

@@ -0,0 +1,89 @@
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\Actions\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\Actions\Columns\EntryPageUrl;
use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime;
use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage;
use Piwik\Plugins\Actions\Columns\Metrics\BounceRate;
use Piwik\Plugins\Actions\Columns\Metrics\ExitRate;
use Piwik\Plugin\ReportsProvider;
use Piwik\Report\ReportWidgetFactory;
use Piwik\Widget\WidgetsList;
class GetEntryPageUrls extends Base
{
protected function init()
{
parent::init();
$this->dimension = new EntryPageUrl();
$this->name = Piwik::translate('Actions_SubmenuPagesEntry');
$this->documentation = Piwik::translate('Actions_EntryPagesReportDocumentation', '<br />')
. '<br />' . Piwik::translate('General_UsePlusMinusIconsDocumentation');
$this->metrics = array('entry_nb_visits', 'entry_bounce_count');
$this->processedMetrics = array(
new AverageTimeOnPage(),
new BounceRate(),
new ExitRate(),
new AveragePageGenerationTime()
);
$this->order = 3;
$this->actionToLoadSubTables = $this->action;
$this->subcategoryId = 'Actions_SubmenuPagesEntry';
}
public function getProcessedMetrics()
{
$result = parent::getProcessedMetrics();
// these metrics are not displayed in the API.getProcessedReport version of this report,
// so they are removed here.
unset($result['avg_time_on_page']);
unset($result['exit_rate']);
return $result;
}
protected function getMetricsDocumentation()
{
$metrics = parent::getMetricsDocumentation();
$metrics['bounce_rate'] = Piwik::translate('General_ColumnPageBounceRateDocumentation');
unset($metrics['bounce_rate']);
unset($metrics['exit_rate']);
return $metrics;
}
public function configureView(ViewDataTable $view)
{
$view->config->addTranslations(array('label' => $this->dimension->getName()));
$view->config->title = $this->name;
$view->config->columns_to_display = array('label', 'entry_nb_visits', 'entry_bounce_count', 'bounce_rate');
$view->requestConfig->filter_sort_column = 'entry_nb_visits';
$view->requestConfig->filter_sort_order = 'desc';
$this->addPageDisplayProperties($view);
$this->addBaseDisplayProperties($view);
}
public function getRelatedReports()
{
return array(
ReportsProvider::factory('Actions', 'getEntryPageTitles'),
);
}
}

View File

@@ -0,0 +1,102 @@
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\Actions\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\Actions\Columns\ExitPageTitle;
use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime;
use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage;
use Piwik\Plugins\Actions\Columns\Metrics\BounceRate;
use Piwik\Plugins\Actions\Columns\Metrics\ExitRate;
use Piwik\Plugin\ReportsProvider;
use Piwik\Report\ReportWidgetFactory;
use Piwik\Widget\WidgetsList;
class GetExitPageTitles extends Base
{
protected function init()
{
parent::init();
$this->dimension = new ExitPageTitle();
$this->name = Piwik::translate('Actions_ExitPageTitles');
$this->documentation = Piwik::translate('Actions_ExitPageTitlesReportDocumentation', '<br />')
. ' ' . Piwik::translate('General_UsePlusMinusIconsDocumentation');
$this->subcategoryId = 'Actions_SubmenuPagesExit';
$this->metrics = array('exit_nb_visits', 'nb_visits');
$this->processedMetrics = array(
new AverageTimeOnPage(),
new BounceRate(),
new ExitRate(),
new AveragePageGenerationTime()
);
$this->order = 7;
$this->actionToLoadSubTables = $this->action;
}
public function configureWidgets(WidgetsList $widgetsList, ReportWidgetFactory $factory)
{
// we have to do it manually since it's only done automatically if a subcategoryId is specified,
// we do not set a subcategoryId since this report is not supposed to be shown in the UI
$widgetsList->addWidgetConfig($factory->createWidget());
}
public function getProcessedMetrics()
{
$result = parent::getProcessedMetrics();
// these metrics are not displayed in the API.getProcessedReport version of this report,
// so they are removed here.
unset($result['bounce_rate']);
unset($result['avg_time_on_page']);
return $result;
}
public function getMetrics()
{
$metrics = parent::getMetrics();
$metrics['nb_visits'] = Piwik::translate('General_ColumnUniquePageviews');
return $metrics;
}
protected function getMetricsDocumentation()
{
$metrics = parent::getMetricsDocumentation();
$metrics['nb_visits'] = Piwik::translate('General_ColumnUniquePageviewsDocumentation');
unset($metrics['bounce_rate']);
unset($metrics['avg_time_on_page']);
return $metrics;
}
public function configureView(ViewDataTable $view)
{
$view->config->addTranslations(array('label' => $this->dimension->getName()));
$view->config->title = $this->name;
$view->config->columns_to_display = array('label', 'exit_nb_visits', 'nb_visits', 'exit_rate');
$this->addPageDisplayProperties($view);
$this->addBaseDisplayProperties($view);
}
public function getRelatedReports()
{
return array(
ReportsProvider::factory('Actions', 'getPageTitles'),
ReportsProvider::factory('Actions', 'getExitPageUrls'),
);
}
}

View File

@@ -0,0 +1,105 @@
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\Actions\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\API\Request;
use Piwik\Plugins\Actions\Columns\ExitPageUrl;
use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime;
use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage;
use Piwik\Plugins\Actions\Columns\Metrics\BounceRate;
use Piwik\Plugins\Actions\Columns\Metrics\ExitRate;
use Piwik\Plugin\ReportsProvider;
use Piwik\Report\ReportWidgetFactory;
use Piwik\Widget\WidgetsList;
class GetExitPageUrls extends Base
{
protected function init()
{
parent::init();
$this->dimension = new ExitPageUrl();
$this->name = Piwik::translate('Actions_SubmenuPagesExit');
$this->documentation = Piwik::translate('Actions_ExitPagesReportDocumentation', '<br />')
. '<br />' . Piwik::translate('General_UsePlusMinusIconsDocumentation');
$this->metrics = array('exit_nb_visits', 'nb_visits');
$this->processedMetrics = array(
new AverageTimeOnPage(),
new BounceRate(),
new ExitRate(),
new AveragePageGenerationTime()
);
$this->actionToLoadSubTables = $this->action;
$this->order = 4;
$this->subcategoryId = 'Actions_SubmenuPagesExit';
}
public function getProcessedMetrics()
{
$result = parent::getProcessedMetrics();
// these metrics are not displayed in the API.getProcessedReport version of this report,
// so they are removed here.
unset($result['bounce_rate']);
unset($result['avg_time_on_page']);
return $result;
}
public function getMetrics()
{
$metrics = parent::getMetrics();
$metrics['nb_visits'] = Piwik::translate('General_ColumnUniquePageviews');
unset($metrics['bounce_rate']);
unset($metrics['avg_time_on_page']);
return $metrics;
}
protected function getMetricsDocumentation()
{
$metrics = parent::getMetricsDocumentation();
$metrics['nb_visits'] = Piwik::translate('General_ColumnUniquePageviewsDocumentation');
return $metrics;
}
public function configureView(ViewDataTable $view)
{
$view->config->self_url = Request::getCurrentUrlWithoutGenericFilters(array(
'module' => 'Actions',
'action' => 'getExitPageUrls',
));
$view->config->addTranslations(array('label' => $this->dimension->getName()));
$view->config->title = $this->name;
$view->config->columns_to_display = array('label', 'exit_nb_visits', 'nb_visits', 'exit_rate');
$view->requestConfig->filter_sort_column = 'exit_nb_visits';
$view->requestConfig->filter_sort_order = 'desc';
$this->addPageDisplayProperties($view);
$this->addBaseDisplayProperties($view);
}
public function getRelatedReports()
{
return array(
ReportsProvider::factory('Actions', 'getExitPageTitles'),
);
}
}

View File

@@ -0,0 +1,60 @@
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\Actions\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\Actions\Columns\ClickedUrl;
class GetOutlinks extends Base
{
protected function init()
{
parent::init();
$this->dimension = new ClickedUrl();
$this->name = Piwik::translate('General_Outlinks');
$this->documentation = Piwik::translate('Actions_OutlinksReportDocumentation') . ' '
. Piwik::translate('Actions_OutlinkDocumentation') . '<br />'
. Piwik::translate('General_UsePlusMinusIconsDocumentation');
$this->metrics = array('nb_visits', 'nb_hits');
$this->order = 8;
$this->actionToLoadSubTables = $this->action;
$this->subcategoryId = 'General_Outlinks';
}
public function getMetrics()
{
return array(
'nb_visits' => Piwik::translate('Actions_ColumnUniqueClicks'),
'nb_hits' => Piwik::translate('Actions_ColumnClicks')
);
}
protected function getMetricsDocumentation()
{
return array(
'nb_visits' => Piwik::translate('Actions_ColumnUniqueClicksDocumentation'),
'nb_hits' => Piwik::translate('Actions_ColumnClicksDocumentation')
);
}
public function configureView(ViewDataTable $view)
{
$view->config->addTranslations(array('label' => $this->dimension->getName()));
$view->config->columns_to_display = array('label', 'nb_visits', 'nb_hits');
$view->config->show_exclude_low_population = false;
$this->addBaseDisplayProperties($view);
}
}

View File

@@ -0,0 +1,89 @@
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\Actions\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\API\Request;
use Piwik\Plugins\Actions\Columns\PageTitle;
use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime;
use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage;
use Piwik\Plugins\Actions\Columns\Metrics\BounceRate;
use Piwik\Plugins\Actions\Columns\Metrics\ExitRate;
use Piwik\Plugin\ReportsProvider;
use Piwik\Report\ReportWidgetFactory;
use Piwik\Widget\WidgetsList;
class GetPageTitles extends Base
{
protected function init()
{
parent::init();
$this->dimension = new PageTitle();
$this->name = Piwik::translate('Actions_SubmenuPageTitles');
$this->documentation = Piwik::translate('Actions_PageTitlesReportDocumentation',
array('<br />', htmlentities('<title>', ENT_COMPAT | ENT_HTML401, 'UTF-8')));
$this->order = 5;
$this->metrics = array('nb_hits', 'nb_visits');
$this->processedMetrics = array(
new AverageTimeOnPage(),
new BounceRate(),
new ExitRate(),
new AveragePageGenerationTime()
);
$this->actionToLoadSubTables = $this->action;
$this->subcategoryId = 'Actions_SubmenuPageTitles';
}
public function getMetrics()
{
$metrics = parent::getMetrics();
$metrics['nb_visits'] = Piwik::translate('General_ColumnUniquePageviews');
return $metrics;
}
protected function getMetricsDocumentation()
{
$metrics = parent::getMetricsDocumentation();
$metrics['nb_visits'] = Piwik::translate('General_ColumnUniquePageviewsDocumentation');
$metrics['bounce_rate'] = Piwik::translate('General_ColumnPageBounceRateDocumentation');
return $metrics;
}
public function configureView(ViewDataTable $view)
{
$view->config->self_url = Request::getCurrentUrlWithoutGenericFilters(array(
'module' => $this->module,
'action' => 'getPageTitles',
));
$view->config->title = $this->name;
$view->config->addTranslation('label', $this->dimension->getName());
$view->config->columns_to_display = array('label', 'nb_hits', 'nb_visits', 'bounce_rate',
'avg_time_on_page', 'exit_rate', 'avg_time_generation');
$this->addPageDisplayProperties($view);
$this->addBaseDisplayProperties($view);
}
public function getRelatedReports()
{
return array(
ReportsProvider::factory('Actions', 'getEntryPageTitles'),
ReportsProvider::factory('Actions', 'getExitPageTitles'),
);
}
}

View File

@@ -0,0 +1,88 @@
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\Actions\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\Actions\Columns\DestinationPage;
use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime;
use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage;
use Piwik\Plugins\Actions\Columns\Metrics\BounceRate;
use Piwik\Plugins\Actions\Columns\Metrics\ExitRate;
use Piwik\Plugin\ReportsProvider;
class GetPageTitlesFollowingSiteSearch extends SiteSearchBase
{
protected function init()
{
parent::init();
$this->dimension = new DestinationPage();
$this->name = Piwik::translate('Actions_WidgetPageTitlesFollowingSearch');
$this->documentation = Piwik::translate('Actions_SiteSearchFollowingPagesDoc') . '<br/>' . Piwik::translate('General_UsePlusMinusIconsDocumentation');
$this->metrics = array('nb_hits_following_search', 'nb_hits');
$this->processedMetrics = array(
new AverageTimeOnPage(),
new BounceRate(),
new ExitRate(),
new AveragePageGenerationTime()
);
$this->order = 19;
$this->subcategoryId = 'Actions_SubmenuSitesearch';
}
public function configureView(ViewDataTable $view)
{
$title = Piwik::translate('Actions_WidgetPageUrlsFollowingSearch');
$this->configureViewForUrlAndTitle($view, $title);
}
public function getMetrics()
{
return array(
'nb_hits_following_search' => Piwik::translate('General_ColumnViewedAfterSearch'),
'nb_hits' => Piwik::translate('General_ColumnPageviews'),
);
}
public function getProcessedMetrics()
{
return array();
}
protected function getMetricsDocumentation()
{
return array(
'nb_hits_following_search' => Piwik::translate('General_ColumnViewedAfterSearchDocumentation'),
'nb_hits' => Piwik::translate('General_ColumnPageviewsDocumentation'),
);
}
protected function configureViewForUrlAndTitle(ViewDataTable $view, $title)
{
$view->config->addTranslations(array('label' => $this->dimension->getName()));
$view->config->title = $title;
$view->config->columns_to_display = array('label', 'nb_hits_following_search', 'nb_hits');
$view->config->show_exclude_low_population = false;
$view->requestConfig->filter_sort_column = 'nb_hits_following_search';
$view->requestConfig->filter_sort_order = 'desc';
$this->addExcludeLowPopDisplayProperties($view);
$this->addBaseDisplayProperties($view);
}
public function getRelatedReports()
{
return array(
ReportsProvider::factory('Actions', 'getPageUrlsFollowingSiteSearch'),
);
}
}

View File

@@ -0,0 +1,76 @@
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\Actions\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime;
use Piwik\Plugins\Actions\Columns\Metrics\BounceRate;
use Piwik\Plugins\Actions\Columns\PageUrl;
use Piwik\Plugins\Actions\Columns\Metrics\ExitRate;
use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage;
use Piwik\Report\ReportWidgetFactory;
use Piwik\Widget\WidgetsList;
class GetPageUrls extends Base
{
protected function init()
{
parent::init();
$this->dimension = new PageUrl();
$this->name = Piwik::translate('Actions_PageUrls');
$this->documentation = Piwik::translate('Actions_PagesReportDocumentation', '<br />')
. '<br />' . Piwik::translate('General_UsePlusMinusIconsDocumentation');
$this->actionToLoadSubTables = $this->action;
$this->order = 2;
$this->metrics = array('nb_hits', 'nb_visits');
$this->processedMetrics = array(
new AverageTimeOnPage(),
new BounceRate(),
new ExitRate(),
new AveragePageGenerationTime()
);
$this->subcategoryId = 'General_Pages';
}
public function configureWidgets(WidgetsList $widgetsList, ReportWidgetFactory $factory)
{
$widgetsList->addWidgetConfig($factory->createWidget()->setName($this->subcategoryId));
}
public function getMetrics()
{
$metrics = parent::getMetrics();
$metrics['nb_visits'] = Piwik::translate('General_ColumnUniquePageviews');
return $metrics;
}
protected function getMetricsDocumentation()
{
$metrics = parent::getMetricsDocumentation();
$metrics['nb_visits'] = Piwik::translate('General_ColumnUniquePageviewsDocumentation');
$metrics['bounce_rate'] = Piwik::translate('General_ColumnPageBounceRateDocumentation');
return $metrics;
}
public function configureView(ViewDataTable $view)
{
$view->config->addTranslation('label', $this->dimension->getName());
$view->config->columns_to_display = array('label', 'nb_hits', 'nb_visits', 'bounce_rate',
'avg_time_on_page', 'exit_rate', 'avg_time_generation');
$this->addPageDisplayProperties($view);
$this->addBaseDisplayProperties($view);
}
}

View File

@@ -0,0 +1,42 @@
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\Actions\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\Actions\Columns\DestinationPage;
use Piwik\Plugin\ReportsProvider;
class GetPageUrlsFollowingSiteSearch extends GetPageTitlesFollowingSiteSearch
{
protected function init()
{
parent::init();
$this->dimension = new DestinationPage();
$this->name = Piwik::translate('Actions_WidgetPageUrlsFollowingSearch');
$this->documentation = Piwik::translate('Actions_SiteSearchFollowingPagesDoc') . '<br/>' . Piwik::translate('General_UsePlusMinusIconsDocumentation');
$this->order = 16;
$this->subcategoryId = 'Actions_SubmenuSitesearch';
}
public function configureView(ViewDataTable $view)
{
$title = Piwik::translate('Actions_WidgetPageTitlesFollowingSearch');
$this->configureViewForUrlAndTitle($view, $title);
}
public function getRelatedReports()
{
return array(
ReportsProvider::factory('Actions', 'getPageTitlesFollowingSiteSearch'),
);
}
}

View File

@@ -0,0 +1,66 @@
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\Actions\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\Actions\Actions;
use Piwik\Plugins\Actions\Columns\SearchCategory;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
class GetSiteSearchCategories extends SiteSearchBase
{
protected function init()
{
parent::init();
$this->dimension = new SearchCategory();
$this->name = Piwik::translate('Actions_WidgetSearchCategories');
$this->documentation = Piwik::translate('Actions_SiteSearchCategories1') . '<br/>' . Piwik::translate('Actions_SiteSearchCategories2');
$this->metrics = array('nb_visits', 'nb_pages_per_search', 'exit_rate');
$this->order = 20;
$this->subcategoryId = 'Actions_SubmenuSitesearch';
}
protected function isEnabledForIdSites($idSites, $idSite)
{
return parent::isEnabledForIdSites($idSites, $idSite) && Actions::isCustomVariablesPluginsEnabled();
}
public function getMetrics()
{
return array(
'nb_visits' => Piwik::translate('Actions_ColumnSearches'),
'nb_pages_per_search' => Piwik::translate('Actions_ColumnPagesPerSearch'),
'exit_rate' => Piwik::translate('Actions_ColumnSearchExits'),
);
}
protected function getMetricsDocumentation()
{
return array(
'nb_visits' => Piwik::translate('Actions_ColumnSearchesDocumentation'),
'nb_pages_per_search' => Piwik::translate('Actions_ColumnPagesPerSearchDocumentation'),
'exit_rate' => Piwik::translate('Actions_ColumnSearchExitsDocumentation'),
);
}
public function configureView(ViewDataTable $view)
{
$view->config->addTranslations(array('label' => $this->dimension->getName()));
$view->config->columns_to_display = array('label', 'nb_visits', 'nb_pages_per_search');
$view->config->show_table_all_columns = false;
$view->config->show_bar_chart = false;
if ($view->isViewDataTableId(HtmlTable::ID)) {
$view->config->disable_row_evolution = false;
}
}
}

View File

@@ -0,0 +1,70 @@
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\Actions\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\Actions\Columns\Keyword;
use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime;
use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage;
use Piwik\Plugins\Actions\Columns\Metrics\BounceRate;
use Piwik\Plugins\Actions\Columns\Metrics\ExitRate;
class GetSiteSearchKeywords extends SiteSearchBase
{
protected function init()
{
parent::init();
$this->dimension = new Keyword();
$this->name = Piwik::translate('Actions_WidgetSearchKeywords');
$this->documentation = Piwik::translate('Actions_SiteSearchKeywordsDocumentation') . '<br/><br/>' . Piwik::translate('Actions_SiteSearchIntro') . '<br/><br/>'
. '<a href="https://matomo.org/docs/site-search/" rel="noreferrer noopener" target="_blank">' . Piwik::translate('Actions_LearnMoreAboutSiteSearchLink') . '</a>';
$this->metrics = array('nb_visits', 'nb_pages_per_search');
$this->processedMetrics = array(
new AverageTimeOnPage(),
new BounceRate(),
new ExitRate(),
new AveragePageGenerationTime()
);
$this->order = 15;
$this->subcategoryId = 'Actions_SubmenuSitesearch';
}
public function getMetrics()
{
return array(
'nb_visits' => Piwik::translate('Actions_ColumnSearches'),
'nb_pages_per_search' => Piwik::translate('Actions_ColumnPagesPerSearch'),
);
}
public function getProcessedMetrics()
{
return array(
'exit_rate' => Piwik::translate('Actions_ColumnSearchExits'),
);
}
protected function getMetricsDocumentation()
{
return array(
'nb_visits' => Piwik::translate('Actions_ColumnSearchesDocumentation'),
'nb_pages_per_search' => Piwik::translate('Actions_ColumnPagesPerSearchDocumentation'),
'exit_rate' => Piwik::translate('Actions_ColumnSearchExitsDocumentation'),
);
}
public function configureView(ViewDataTable $view)
{
$view->config->addTranslation('label', $this->dimension->getName());
$view->config->columns_to_display = array('label', 'nb_visits', 'nb_pages_per_search', 'exit_rate');
$this->addSiteSearchDisplayProperties($view);
}
}

View File

@@ -0,0 +1,68 @@
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\Actions\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\Actions\Columns\KeywordwithNoSearchResult;
use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime;
use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage;
use Piwik\Plugins\Actions\Columns\Metrics\BounceRate;
use Piwik\Plugins\Actions\Columns\Metrics\ExitRate;
class GetSiteSearchNoResultKeywords extends SiteSearchBase
{
protected function init()
{
parent::init();
$this->dimension = new KeywordwithNoSearchResult();
$this->name = Piwik::translate('Actions_WidgetSearchNoResultKeywords');
$this->documentation = Piwik::translate('Actions_SiteSearchIntro') . '<br /><br />' . Piwik::translate('Actions_SiteSearchKeywordsNoResultDocumentation');
$this->metrics = array('nb_visits');
$this->processedMetrics = array(
new AverageTimeOnPage(),
new BounceRate(),
new ExitRate(),
new AveragePageGenerationTime()
);
$this->order = 18;
$this->subcategoryId = 'Actions_SubmenuSitesearch';
}
public function getMetrics()
{
return array(
'nb_visits' => Piwik::translate('Actions_ColumnSearches')
);
}
public function getProcessedMetrics()
{
return array(
'exit_rate' => Piwik::translate('Actions_ColumnSearchExits')
);
}
protected function getMetricsDocumentation()
{
return array(
'nb_visits' => Piwik::translate('Actions_ColumnSearchesDocumentation'),
'exit_rate' => Piwik::translate('Actions_ColumnSearchExitsDocumentation'),
);
}
public function configureView(ViewDataTable $view)
{
$view->config->addTranslation('label', $this->dimension->getName());
$view->config->columns_to_display = array('label', 'nb_visits', 'exit_rate');
$this->addSiteSearchDisplayProperties($view);
}
}

View File

@@ -0,0 +1,64 @@
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\Actions\Reports;
use Piwik\Common;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\Actions\Actions;
abstract class SiteSearchBase extends Base
{
protected function init()
{
parent::init();
$this->categoryId = 'General_Actions';
}
public function isEnabled()
{
$idSites = Common::getRequestVar('idSites', '', 'string');
$idSite = Common::getRequestVar('idSite', 0, 'int');
return $this->isEnabledForIdSites($idSites, $idSite);
}
protected function isEnabledForIdSites($idSites, $idSite)
{
$actions = new Actions();
return $actions->isSiteSearchEnabled($idSites, $idSite);
}
public function configureReportMetadata(&$availableReports, $infos)
{
$idSite = array($infos['idSite']);
if (!$this->isEnabledForIdSites($idSite, Common::getRequestVar('idSite', 0, 'int'))) {
return;
}
$report = $this->buildReportMetadata();
if (!empty($report)) {
$availableReports[] = $report;
}
}
protected function addSiteSearchDisplayProperties(ViewDataTable $view)
{
$view->config->addTranslations(array(
'nb_visits' => Piwik::translate('Actions_ColumnSearches'),
'exit_rate' => str_replace("% ", "%&nbsp;", Piwik::translate('Actions_ColumnSearchExits')),
'nb_pages_per_search' => Piwik::translate('Actions_ColumnPagesPerSearch')
));
$view->config->show_bar_chart = false;
$view->config->show_table_all_columns = false;
}
}