Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Steur <tsteur@users.noreply.github.com>2017-10-03 23:22:01 +0300
committerGitHub <noreply@github.com>2017-10-03 23:22:01 +0300
commit9af4e95aa976f3a6533e95b776b5298f73e5f916 (patch)
treed612cd4d32019e9e52ce1398b8bf214ec06a8e0f /plugins/Actions
parent359c3ec875b554c7b71a933b26d18cdde0bb8f4e (diff)
Better segment editor and fixes (#12040)
* column tweak * fix install * more tweaks * rename column to dimension * various fixes * added new control expandable select * starting to refactor segment selector * make segment editor work again * use translation keys * defined some metrics * set types * simplify * simplify * fix join generator * add possibility to use custom join table names when using query builder and it uses an inner query * fix bug in query selector when selecting same field name from different tables twice * more metadata * more tweaks * improve selector * add possibility to use custom entity names * also processed archived metrics * generate sql filter, suggested values callback, and accept values automatically for columns with enums * several tweaks * focus search field when opening it * various tweaks * added missing method * format and fix more metadata * more fixes * better definition * define custom filter * fix definition * fix various tests * fix more tests * fix bug in logquery builder * fix referrerurl segment was missing * fix some tests * fix more tests * add group * refactor for better definition * fix a bug in log query builder when similar columns are used in archiver * add goal metrics * various fixes * make datatable row more flexible * various fixes and visualization enhancements * simply segment editor and make it smaller * remove trailing comma * various fixes and added new dimension * fix formatting of returning customer * added missing primary key * fixes * various fixes and improvements * make sure to update segment definition when selecting a value from auto complete list * various fixes and more metrics * more metrics * more dimensions and fixes * fix some tests * fix some integration tests * update submodule * fix some system tests * fix ui tests * trigger new test run * fix more ui tests * fix system tests * update submodule * fix categories * sort segments by category for more consistency * add custom variables * some translations and fixes * add minute segment * more segments * added plurals * added some docs * fix test * fix tests * fix tests * added suggested values * fix some tests * various fixes * fix more tests * allow to select segments on any site * make sure to include file * added doc block * fix some system tests * fix most system tests * fix ui test * fix system test * adjust examples * added more tests and docs * no metrics for these dimensions * added developer changelog and made some classes public api * some fixes for entity names * add possibility to set format metrics in test * more consistency in defining the name * get idsites only if provided * fix integration tests * added another segment for visit start hour and visit start minute * more clear name for segment * use old segment name to not break bc * various fixes * more test fixes * fix no suggested values for new segment * add event value * for boolean dimensions only sum metric * update available widgets when updating reporting menu * Add new segments in developer changelog + typo * fix system tests * fix screenshot test
Diffstat (limited to 'plugins/Actions')
-rw-r--r--plugins/Actions/Columns/ActionType.php52
-rw-r--r--plugins/Actions/Columns/ActionUrl.php5
-rw-r--r--plugins/Actions/Columns/ClickedUrl.php26
-rw-r--r--plugins/Actions/Columns/DestinationPage.php6
-rw-r--r--plugins/Actions/Columns/DownloadUrl.php26
-rw-r--r--plugins/Actions/Columns/EntryPageTitle.php27
-rw-r--r--plugins/Actions/Columns/EntryPageUrl.php27
-rw-r--r--plugins/Actions/Columns/ExitPageTitle.php27
-rw-r--r--plugins/Actions/Columns/ExitPageUrl.php33
-rw-r--r--plugins/Actions/Columns/IdPageview.php8
-rw-r--r--plugins/Actions/Columns/InteractionPosition.php7
-rw-r--r--plugins/Actions/Columns/Keyword.php6
-rw-r--r--plugins/Actions/Columns/KeywordwithNoSearchResult.php6
-rw-r--r--plugins/Actions/Columns/Metrics/AveragePageGenerationTime.php1
-rw-r--r--plugins/Actions/Columns/PageGenerationTime.php50
-rw-r--r--plugins/Actions/Columns/PageTitle.php23
-rw-r--r--plugins/Actions/Columns/PageUrl.php24
-rw-r--r--plugins/Actions/Columns/SearchCategory.php6
-rw-r--r--plugins/Actions/Columns/SearchDestinationPage.php6
-rw-r--r--plugins/Actions/Columns/SearchKeyword.php24
-rw-r--r--plugins/Actions/Columns/SearchNoResultKeyword.php6
-rw-r--r--plugins/Actions/Columns/TimeSpentRefAction.php1
-rw-r--r--plugins/Actions/Columns/VisitTotalActions.php33
-rw-r--r--plugins/Actions/Columns/VisitTotalInteractions.php16
-rw-r--r--plugins/Actions/Columns/VisitTotalSearches.php16
-rw-r--r--plugins/Actions/lang/en.json11
26 files changed, 276 insertions, 197 deletions
diff --git a/plugins/Actions/Columns/ActionType.php b/plugins/Actions/Columns/ActionType.php
index 59f09c87e9..c407403588 100644
--- a/plugins/Actions/Columns/ActionType.php
+++ b/plugins/Actions/Columns/ActionType.php
@@ -8,9 +8,9 @@
*/
namespace Piwik\Plugins\Actions\Columns;
-use Piwik\Piwik;
+use Piwik\Columns\DimensionMetricFactory;
+use Piwik\Columns\MetricsList;
use Piwik\Plugin\Dimension\ActionDimension;
-use Piwik\Plugins\Actions\Segment;
use Piwik\Tracker\Action;
use Exception;
@@ -30,41 +30,27 @@ class ActionType extends ActionDimension
Action::TYPE_DOWNLOAD => 'downloads'
);
- /**
- * The name of the dimension which will be visible for instance in the UI of a related report and in the mobile app.
- * @return string
- */
- public function getName()
+ protected $columnName = 'type';
+ protected $dbTableName = 'log_action';
+ protected $segmentName = 'actionType';
+ protected $type = self::TYPE_ENUM;
+ protected $nameSingular = 'Actions_ActionType';
+ protected $namePlural = 'Actions_ActionTypes';
+ protected $category = 'General_Actions';
+
+ public function __construct()
{
- return Piwik::translate('Actions_ActionType');
+ $this->acceptValues = sprintf('A type of action, such as: %s', implode(', ', $this->types));
}
- protected function configureSegments()
+ public function getEnumColumnValues()
{
- $types = $this->types;
-
- $segment = new Segment();
- $segment->setSegment('actionType');
- $segment->setName('Actions_ActionType');
- $segment->setSqlSegment('log_action.type');
- $segment->setType(Segment::TYPE_DIMENSION);
- $segment->setAcceptedValues(sprintf('A type of action, such as: %s', implode(', ', $types)));
- $segment->setSqlFilter(function ($type) use ($types) {
- if (array_key_exists($type, $types)) {
- return $type;
- }
-
- $index = array_search(strtolower(trim(urldecode($type))), $types);
-
- if ($index === false) {
- throw new Exception("actionType must be one of: " . implode(', ', $types));
- }
+ return $this->types;
+ }
- return $index;
- });
- $segment->setSuggestedValuesCallback(function ($idSite, $maxSuggestionsToReturn) use ($types) {
- return array_slice(array_values($types), 0, $maxSuggestionsToReturn);
- });
- $this->addSegment($segment);
+ public function configureMetrics(MetricsList $metricsList, DimensionMetricFactory $dimensionMetricFactory)
+ {
+ // do not genereate any metric for this
}
+
} \ No newline at end of file
diff --git a/plugins/Actions/Columns/ActionUrl.php b/plugins/Actions/Columns/ActionUrl.php
index 5fa80d1efa..13fdecc033 100644
--- a/plugins/Actions/Columns/ActionUrl.php
+++ b/plugins/Actions/Columns/ActionUrl.php
@@ -14,10 +14,7 @@ use Piwik\Plugins\Actions\Segment;
class ActionUrl extends ActionDimension
{
- public function getName()
- {
- return Piwik::translate('Actions_ColumnActionURL');
- }
+ protected $nameSingular = 'Actions_ColumnActionURL';
protected function configureSegments()
{
diff --git a/plugins/Actions/Columns/ClickedUrl.php b/plugins/Actions/Columns/ClickedUrl.php
index cd9bc3b7dc..861b6d5202 100644
--- a/plugins/Actions/Columns/ClickedUrl.php
+++ b/plugins/Actions/Columns/ClickedUrl.php
@@ -8,24 +8,28 @@
*/
namespace Piwik\Plugins\Actions\Columns;
-use Piwik\Piwik;
+use Piwik\Columns\Discriminator;
+use Piwik\Columns\Join\ActionNameJoin;
use Piwik\Plugin\Dimension\ActionDimension;
-use Piwik\Plugins\Actions\Segment;
+use Piwik\Tracker\Action;
class ClickedUrl extends ActionDimension
{
- public function getName()
+ protected $columnName = 'idaction_url';
+ protected $segmentName = 'outlinkUrl';
+ protected $nameSingular = 'Actions_ColumnClickedURL';
+ protected $namePlural = 'Actions_ColumnClickedURLs';
+ protected $category = 'General_Actions';
+ protected $sqlFilter = '\\Piwik\\Tracker\\TableLogAction::getIdActionFromSegment';
+ protected $type = self::TYPE_URL;
+
+ public function getDbColumnJoin()
{
- return Piwik::translate('Actions_ColumnClickedURL');
+ return new ActionNameJoin();
}
- protected function configureSegments()
+ public function getDbDiscriminator()
{
- $segment = new Segment();
- $segment->setSegment('outlinkUrl');
- $segment->setName('Actions_ColumnClickedURL');
- $segment->setSqlSegment('log_link_visit_action.idaction_url');
- $this->addSegment($segment);
+ return new Discriminator('log_action', 'type', Action::TYPE_OUTLINK);
}
-
}
diff --git a/plugins/Actions/Columns/DestinationPage.php b/plugins/Actions/Columns/DestinationPage.php
index e47b7195be..4b2b3eb184 100644
--- a/plugins/Actions/Columns/DestinationPage.php
+++ b/plugins/Actions/Columns/DestinationPage.php
@@ -13,8 +13,6 @@ use Piwik\Piwik;
class DestinationPage extends Dimension
{
- public function getName()
- {
- return Piwik::translate('General_ColumnDestinationPage');
- }
+ protected $type = self::TYPE_TEXT;
+ protected $nameSingular = 'General_ColumnDestinationPage';
} \ No newline at end of file
diff --git a/plugins/Actions/Columns/DownloadUrl.php b/plugins/Actions/Columns/DownloadUrl.php
index d611e86f21..6375bba69b 100644
--- a/plugins/Actions/Columns/DownloadUrl.php
+++ b/plugins/Actions/Columns/DownloadUrl.php
@@ -8,24 +8,28 @@
*/
namespace Piwik\Plugins\Actions\Columns;
-use Piwik\Piwik;
+use Piwik\Columns\Discriminator;
+use Piwik\Columns\Join\ActionNameJoin;
use Piwik\Plugin\Dimension\ActionDimension;
-use Piwik\Plugins\Actions\Segment;
+use Piwik\Tracker\Action;
class DownloadUrl extends ActionDimension
{
- public function getName()
+ protected $segmentName = 'downloadUrl';
+ protected $nameSingular = 'Actions_ColumnDownloadURL';
+ protected $namePlural = 'Actions_ColumnDownloadURLs';
+ protected $columnName = 'idaction_url';
+ protected $category = 'General_Actions';
+ protected $sqlFilter = '\\Piwik\\Tracker\\TableLogAction::getIdActionFromSegment';
+ protected $type = self::TYPE_URL;
+
+ public function getDbColumnJoin()
{
- return Piwik::translate('Actions_ColumnDownloadURL');
+ return new ActionNameJoin();
}
- protected function configureSegments()
+ public function getDbDiscriminator()
{
- $segment = new Segment();
- $segment->setSegment('downloadUrl');
- $segment->setName('Actions_ColumnDownloadURL');
- $segment->setSqlSegment('log_link_visit_action.idaction_url');
- $this->addSegment($segment);
+ return new Discriminator('log_action', 'type', Action::TYPE_DOWNLOAD);
}
-
}
diff --git a/plugins/Actions/Columns/EntryPageTitle.php b/plugins/Actions/Columns/EntryPageTitle.php
index 30445f9549..5034f72408 100644
--- a/plugins/Actions/Columns/EntryPageTitle.php
+++ b/plugins/Actions/Columns/EntryPageTitle.php
@@ -8,8 +8,8 @@
*/
namespace Piwik\Plugins\Actions\Columns;
-use Piwik\Piwik;
-use Piwik\Plugins\Actions\Segment;
+use Piwik\Columns\Discriminator;
+use Piwik\Columns\Join\ActionNameJoin;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
@@ -19,13 +19,21 @@ class EntryPageTitle extends VisitDimension
{
protected $columnName = 'visit_entry_idaction_name';
protected $columnType = 'INTEGER(10) UNSIGNED NULL';
+ protected $type = self::TYPE_TEXT;
+ protected $segmentName = 'entryPageTitle';
+ protected $nameSingular = 'Actions_ColumnEntryPageTitle';
+ protected $namePlural = 'Actions_WidgetEntryPageTitles';
+ protected $category = 'General_Actions';
+ protected $sqlFilter = '\\Piwik\\Tracker\\TableLogAction::getIdActionFromSegment';
- protected function configureSegments()
+ public function getDbColumnJoin()
{
- $segment = new Segment();
- $segment->setSegment('entryPageTitle');
- $segment->setName('Actions_ColumnEntryPageTitle');
- $this->addSegment($segment);
+ return new ActionNameJoin();
+ }
+
+ public function getDbDiscriminator()
+ {
+ return new Discriminator('log_action', 'type', Action::TYPE_PAGE_TITLE);
}
/**
@@ -44,9 +52,4 @@ class EntryPageTitle extends VisitDimension
return (int) $idActionName;
}
-
- public function getName()
- {
- return Piwik::translate('Actions_ColumnEntryPageTitle');
- }
}
diff --git a/plugins/Actions/Columns/EntryPageUrl.php b/plugins/Actions/Columns/EntryPageUrl.php
index 6b67b9a092..25750024da 100644
--- a/plugins/Actions/Columns/EntryPageUrl.php
+++ b/plugins/Actions/Columns/EntryPageUrl.php
@@ -8,8 +8,8 @@
*/
namespace Piwik\Plugins\Actions\Columns;
-use Piwik\Piwik;
-use Piwik\Plugins\Actions\Segment;
+use Piwik\Columns\Discriminator;
+use Piwik\Columns\Join\ActionNameJoin;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
@@ -19,13 +19,21 @@ class EntryPageUrl extends VisitDimension
{
protected $columnName = 'visit_entry_idaction_url';
protected $columnType = 'INTEGER(11) UNSIGNED NULL DEFAULT NULL';
+ protected $segmentName = 'entryPageUrl';
+ protected $nameSingular = 'Actions_ColumnEntryPageURL';
+ protected $namePlural = 'Actions_ColumnEntryPageURLs';
+ protected $category = 'General_Actions';
+ protected $sqlFilter = '\\Piwik\\Tracker\\TableLogAction::getIdActionFromSegment';
+ protected $type = self::TYPE_URL;
- protected function configureSegments()
+ public function getDbColumnJoin()
{
- $segment = new Segment();
- $segment->setSegment('entryPageUrl');
- $segment->setName('Actions_ColumnEntryPageURL');
- $this->addSegment($segment);
+ return new ActionNameJoin();
+ }
+
+ public function getDbDiscriminator()
+ {
+ return new Discriminator('log_action', 'type', Action::TYPE_PAGE_URL);
}
/**
@@ -69,9 +77,4 @@ class EntryPageUrl extends VisitDimension
return false;
}
- public function getName()
- {
- return Piwik::translate('Actions_ColumnEntryPageURL');
- }
-
}
diff --git a/plugins/Actions/Columns/ExitPageTitle.php b/plugins/Actions/Columns/ExitPageTitle.php
index 97428d9ad9..6207eff5fd 100644
--- a/plugins/Actions/Columns/ExitPageTitle.php
+++ b/plugins/Actions/Columns/ExitPageTitle.php
@@ -8,8 +8,8 @@
*/
namespace Piwik\Plugins\Actions\Columns;
-use Piwik\Piwik;
-use Piwik\Plugins\Actions\Segment;
+use Piwik\Columns\Discriminator;
+use Piwik\Columns\Join\ActionNameJoin;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
@@ -19,13 +19,21 @@ class ExitPageTitle extends VisitDimension
{
protected $columnName = 'visit_exit_idaction_name';
protected $columnType = 'INTEGER(10) UNSIGNED NULL';
+ protected $segmentName = 'exitPageTitle';
+ protected $nameSingular = 'Actions_ColumnExitPageTitle';
+ protected $namePlural = 'Actions_WidgetExitPageTitles';
+ protected $category = 'General_Actions';
+ protected $sqlFilter = '\\Piwik\\Tracker\\TableLogAction::getIdActionFromSegment';
+ protected $type = self::TYPE_TEXT;
- protected function configureSegments()
+ public function getDbColumnJoin()
{
- $segment = new Segment();
- $segment->setSegment('exitPageTitle');
- $segment->setName('Actions_ColumnExitPageTitle');
- $this->addSegment($segment);
+ return new ActionNameJoin();
+ }
+
+ public function getDbDiscriminator()
+ {
+ return new Discriminator('log_action', 'type', Action::TYPE_PAGE_TITLE);
}
/**
@@ -59,9 +67,4 @@ class ExitPageTitle extends VisitDimension
return $action->getIdActionNameForEntryAndExitIds();
}
-
- public function getName()
- {
- return Piwik::translate('Actions_ColumnExitPageTitle');
- }
}
diff --git a/plugins/Actions/Columns/ExitPageUrl.php b/plugins/Actions/Columns/ExitPageUrl.php
index 094719bb75..c9e35e9da4 100644
--- a/plugins/Actions/Columns/ExitPageUrl.php
+++ b/plugins/Actions/Columns/ExitPageUrl.php
@@ -8,8 +8,11 @@
*/
namespace Piwik\Plugins\Actions\Columns;
+use Piwik\Columns\DimensionMetricFactory;
+use Piwik\Columns\Discriminator;
+use Piwik\Columns\Join;
+use Piwik\Columns\MetricsList;
use Piwik\Piwik;
-use Piwik\Plugins\Actions\Segment;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
@@ -19,13 +22,26 @@ class ExitPageUrl extends VisitDimension
{
protected $columnName = 'visit_exit_idaction_url';
protected $columnType = 'INTEGER(10) UNSIGNED NULL DEFAULT 0';
+ protected $type = self::TYPE_URL;
+ protected $segmentName = 'exitPageUrl';
+ protected $nameSingular = 'Actions_ColumnExitPageURL';
+ protected $namePlural = 'Actions_ColumnExitPageURLs';
+ protected $category = 'General_Actions';
+ protected $sqlFilter = '\\Piwik\\Tracker\\TableLogAction::getIdActionFromSegment';
- protected function configureSegments()
+ public function configureMetrics(MetricsList $metricsList, DimensionMetricFactory $dimensionMetricFactory)
{
- $segment = new Segment();
- $segment->setSegment('exitPageUrl');
- $segment->setName('Actions_ColumnExitPageURL');
- $this->addSegment($segment);
+ parent::configureMetrics($metricsList, $dimensionMetricFactory);
+ }
+
+ public function getDbColumnJoin()
+ {
+ return new Join\ActionNameJoin();
+ }
+
+ public function getDbDiscriminator()
+ {
+ return new Discriminator('log_action', 'type', Action::TYPE_PAGE_URL);
}
/**
@@ -65,9 +81,4 @@ class ExitPageUrl extends VisitDimension
return $id;
}
-
- public function getName()
- {
- return Piwik::translate('Actions_ColumnExitPageURL');
- }
}
diff --git a/plugins/Actions/Columns/IdPageview.php b/plugins/Actions/Columns/IdPageview.php
index c1d5352153..219fa7cbc0 100644
--- a/plugins/Actions/Columns/IdPageview.php
+++ b/plugins/Actions/Columns/IdPageview.php
@@ -8,6 +8,8 @@
*/
namespace Piwik\Plugins\Actions\Columns;
+use Piwik\Columns\DimensionMetricFactory;
+use Piwik\Columns\MetricsList;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
@@ -18,6 +20,8 @@ class IdPageview extends ActionDimension
{
protected $columnName = 'idpageview';
protected $columnType = 'CHAR(6) NULL DEFAULT NULL';
+ protected $type = self::TYPE_TEXT;
+ protected $nameSingular = 'Actions_ColumnIdPageview';
/**
* @param Request $request
@@ -32,9 +36,9 @@ class IdPageview extends ActionDimension
return substr($request->getParam('pv_id'), 0, 6);
}
- public function getName()
+ public function configureMetrics(MetricsList $metricsList, DimensionMetricFactory $dimensionMetricFactory)
{
- return Piwik::translate('Actions_ColumnIdPageview');
+ // metrics for idpageview do not really make any sense
}
} \ No newline at end of file
diff --git a/plugins/Actions/Columns/InteractionPosition.php b/plugins/Actions/Columns/InteractionPosition.php
index 13c85ede65..c825669450 100644
--- a/plugins/Actions/Columns/InteractionPosition.php
+++ b/plugins/Actions/Columns/InteractionPosition.php
@@ -19,6 +19,8 @@ class InteractionPosition extends ActionDimension
{
protected $columnName = 'interaction_position';
protected $columnType = 'SMALLINT UNSIGNED DEFAULT NULL';
+ protected $nameSingular = 'Actions_ColumnInteractionPosition';
+ protected $type = self::TYPE_NUMBER;
/**
* @param Request $request
@@ -46,9 +48,4 @@ class InteractionPosition extends ActionDimension
return false;
}
- public function getName()
- {
- return Piwik::translate('Actions_ColumnInteractionPosition');
- }
-
} \ No newline at end of file
diff --git a/plugins/Actions/Columns/Keyword.php b/plugins/Actions/Columns/Keyword.php
index 3d7051c451..7c7a5aa915 100644
--- a/plugins/Actions/Columns/Keyword.php
+++ b/plugins/Actions/Columns/Keyword.php
@@ -13,8 +13,6 @@ use Piwik\Piwik;
class Keyword extends Dimension
{
- public function getName()
- {
- return Piwik::translate('General_ColumnKeyword');
- }
+ protected $type = self::TYPE_TEXT;
+ protected $nameSingular = 'General_ColumnKeyword';
} \ No newline at end of file
diff --git a/plugins/Actions/Columns/KeywordwithNoSearchResult.php b/plugins/Actions/Columns/KeywordwithNoSearchResult.php
index d6ffaf2044..e96e50eaa3 100644
--- a/plugins/Actions/Columns/KeywordwithNoSearchResult.php
+++ b/plugins/Actions/Columns/KeywordwithNoSearchResult.php
@@ -13,8 +13,6 @@ use Piwik\Piwik;
class KeywordwithNoSearchResult extends Dimension
{
- public function getName()
- {
- return Piwik::translate('Actions_ColumnNoResultKeyword');
- }
+ protected $type = self::TYPE_TEXT;
+ protected $nameSingular = 'Actions_ColumnNoResultKeyword';
} \ No newline at end of file
diff --git a/plugins/Actions/Columns/Metrics/AveragePageGenerationTime.php b/plugins/Actions/Columns/Metrics/AveragePageGenerationTime.php
index 9b44e88943..ed89226ac0 100644
--- a/plugins/Actions/Columns/Metrics/AveragePageGenerationTime.php
+++ b/plugins/Actions/Columns/Metrics/AveragePageGenerationTime.php
@@ -13,7 +13,6 @@ use Piwik\Metrics;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugin\ProcessedMetric;
-use Piwik\Plugin\Report;
/**
* The average amount of time it takes to generate a page. Calculated as
diff --git a/plugins/Actions/Columns/PageGenerationTime.php b/plugins/Actions/Columns/PageGenerationTime.php
new file mode 100644
index 0000000000..d7c8344db4
--- /dev/null
+++ b/plugins/Actions/Columns/PageGenerationTime.php
@@ -0,0 +1,50 @@
+<?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\Columns;
+
+use Piwik\Columns\DimensionMetricFactory;
+use Piwik\Columns\Discriminator;
+use Piwik\Columns\MetricsList;
+use Piwik\Piwik;
+use Piwik\Plugin\ArchivedMetric;
+use Piwik\Plugin\ComputedMetric;
+use Piwik\Plugin\Dimension\ActionDimension;
+use Piwik\Tracker\Action;
+
+class PageGenerationTime extends ActionDimension
+{
+ protected $nameSingular = 'General_ColumnPageGenerationTime';
+ protected $columnName = 'custom_float';
+ protected $category = 'General_Actions';
+ protected $type = self::TYPE_DURATION_MS;
+
+ public function getDbDiscriminator()
+ {
+ return new Discriminator('log_action', 'type', Action::TYPE_PAGE_URL);
+ }
+
+ public function configureMetrics(MetricsList $metricsList, DimensionMetricFactory $dimensionMetricFactory)
+ {
+ $metric1 = $dimensionMetricFactory->createMetric(ArchivedMetric::AGGREGATION_SUM);
+ $metricsList->addMetric($metric1);
+
+ $metric2 = $dimensionMetricFactory->createMetric(ArchivedMetric::AGGREGATION_MAX);
+ $metricsList->addMetric($metric2);
+
+ $metric3 = $dimensionMetricFactory->createMetric(ArchivedMetric::AGGREGATION_COUNT_WITH_NUMERIC_VALUE);
+ $metric3->setName('pageviews_with_generation_time');
+ $metric3->setTranslatedName(Piwik::translate('General_ColumnViewsWithGenerationTime'));
+ $metricsList->addMetric($metric3);
+
+ $metric = $dimensionMetricFactory->createComputedMetric($metric1->getName(), $metric3->getName(), ComputedMetric::AGGREGATION_AVG);
+ $metric->setName('avg_page_generation_time');
+ $metric->setTranslatedName(Piwik::translate('General_ColumnAverageGenerationTime'));
+ $metricsList->addMetric($metric);
+ }
+}
diff --git a/plugins/Actions/Columns/PageTitle.php b/plugins/Actions/Columns/PageTitle.php
index 6517bede92..77bdac1099 100644
--- a/plugins/Actions/Columns/PageTitle.php
+++ b/plugins/Actions/Columns/PageTitle.php
@@ -8,26 +8,29 @@
*/
namespace Piwik\Plugins\Actions\Columns;
-use Piwik\Piwik;
+use Piwik\Columns\Discriminator;
+use Piwik\Columns\Join\ActionNameJoin;
use Piwik\Plugin\Dimension\ActionDimension;
-use Piwik\Plugins\Actions\Segment;
+use Piwik\Tracker\Action;
class PageTitle extends ActionDimension
{
protected $columnName = 'idaction_name';
protected $columnType = 'INTEGER(10) UNSIGNED';
+ protected $type = self::TYPE_TEXT;
+ protected $segmentName = 'pageTitle';
+ protected $nameSingular = 'Goals_PageTitle';
+ protected $namePlural = 'Actions_WidgetPageTitles';
+ protected $category = 'General_Actions';
+ protected $sqlFilter = '\\Piwik\\Tracker\\TableLogAction::getIdActionFromSegment';
- protected function configureSegments()
+ public function getDbColumnJoin()
{
- $segment = new Segment();
- $segment->setSegment('pageTitle');
- $segment->setName('Actions_ColumnPageName');
- $this->addSegment($segment);
+ return new ActionNameJoin();
}
- public function getName()
+ public function getDbDiscriminator()
{
- return Piwik::translate('Actions_ColumnPageName');
+ return new Discriminator('log_action', 'type', Action::TYPE_PAGE_TITLE);
}
-
}
diff --git a/plugins/Actions/Columns/PageUrl.php b/plugins/Actions/Columns/PageUrl.php
index 1f9a7035e5..a236f0e28e 100644
--- a/plugins/Actions/Columns/PageUrl.php
+++ b/plugins/Actions/Columns/PageUrl.php
@@ -8,26 +8,32 @@
*/
namespace Piwik\Plugins\Actions\Columns;
+use Piwik\Columns\Discriminator;
+use Piwik\Columns\Join\ActionNameJoin;
use Piwik\Piwik;
use Piwik\Plugin\Dimension\ActionDimension;
-use Piwik\Plugins\Actions\Segment;
+use Piwik\Tracker\Action;
class PageUrl extends ActionDimension
{
protected $columnName = 'idaction_url';
protected $columnType = 'INTEGER(10) UNSIGNED DEFAULT NULL';
+ protected $segmentName = 'pageUrl';
+ protected $nameSingular = 'Actions_ColumnPageURL';
+ protected $namePlural = 'Actions_PageUrls';
+ protected $type = self::TYPE_URL;
+ protected $acceptValues = 'All these segments must be URL encoded, for example: http%3A%2F%2Fexample.com%2Fpath%2Fpage%3Fquery';
+ protected $category = 'General_Actions';
+ protected $sqlFilter = '\\Piwik\\Tracker\\TableLogAction::getIdActionFromSegment';
- protected function configureSegments()
+ public function getDbColumnJoin()
{
- $segment = new Segment();
- $segment->setSegment('pageUrl');
- $segment->setName('Actions_ColumnPageURL');
- $segment->setAcceptedValues('All these segments must be URL encoded, for example: ' . urlencode('http://example.com/path/page?query'));
- $this->addSegment($segment);
+ return new ActionNameJoin();
}
- public function getName()
+ public function getDbDiscriminator()
{
- return Piwik::translate('Actions_ColumnPageURL');
+ return new Discriminator('log_action', 'type', Action::TYPE_PAGE_URL);
}
+
}
diff --git a/plugins/Actions/Columns/SearchCategory.php b/plugins/Actions/Columns/SearchCategory.php
index 6dc3c0b11b..e61ac25136 100644
--- a/plugins/Actions/Columns/SearchCategory.php
+++ b/plugins/Actions/Columns/SearchCategory.php
@@ -13,8 +13,6 @@ use Piwik\Piwik;
class SearchCategory extends Dimension
{
- public function getName()
- {
- return Piwik::translate('Actions_ColumnSearchCategory');
- }
+ protected $type = self::TYPE_TEXT;
+ protected $nameSingular = 'Actions_ColumnSearchCategory';
} \ No newline at end of file
diff --git a/plugins/Actions/Columns/SearchDestinationPage.php b/plugins/Actions/Columns/SearchDestinationPage.php
index bf36621a9c..4e3271892d 100644
--- a/plugins/Actions/Columns/SearchDestinationPage.php
+++ b/plugins/Actions/Columns/SearchDestinationPage.php
@@ -13,8 +13,6 @@ use Piwik\Piwik;
class SearchDestinationPage extends Dimension
{
- public function getName()
- {
- return Piwik::translate('General_ColumnDestinationPage');
- }
+ protected $type = self::TYPE_TEXT;
+ protected $nameSingular = 'General_ColumnDestinationPage';
}
diff --git a/plugins/Actions/Columns/SearchKeyword.php b/plugins/Actions/Columns/SearchKeyword.php
index f3248da5cf..48283eae02 100644
--- a/plugins/Actions/Columns/SearchKeyword.php
+++ b/plugins/Actions/Columns/SearchKeyword.php
@@ -8,23 +8,27 @@
*/
namespace Piwik\Plugins\Actions\Columns;
-use Piwik\Piwik;
+use Piwik\Columns\Discriminator;
+use Piwik\Columns\Join\ActionNameJoin;
use Piwik\Plugin\Dimension\ActionDimension;
-use Piwik\Plugins\Actions\Segment;
+use Piwik\Tracker\Action;
class SearchKeyword extends ActionDimension
{
- protected function configureSegments()
+ protected $columnName = 'idaction_name';
+ protected $segmentName = 'siteSearchKeyword';
+ protected $nameSingular = 'Actions_SiteSearchKeyword';
+ protected $namePlural = 'Actions_SiteSearchKeywords';
+ protected $type = self::TYPE_TEXT;
+ protected $sqlFilter = '\\Piwik\\Tracker\\TableLogAction::getIdActionFromSegment';
+
+ public function getDbColumnJoin()
{
- $segment = new Segment();
- $segment->setSegment('siteSearchKeyword');
- $segment->setName('Actions_SiteSearchKeyword');
- $segment->setSqlSegment('log_link_visit_action.idaction_name');
- $this->addSegment($segment);
+ return new ActionNameJoin();
}
- public function getName()
+ public function getDbDiscriminator()
{
- return Piwik::translate('General_ColumnKeyword');
+ return new Discriminator('log_action', 'type', Action::TYPE_SITE_SEARCH);
}
}
diff --git a/plugins/Actions/Columns/SearchNoResultKeyword.php b/plugins/Actions/Columns/SearchNoResultKeyword.php
index f4b57c6431..3245d31efc 100644
--- a/plugins/Actions/Columns/SearchNoResultKeyword.php
+++ b/plugins/Actions/Columns/SearchNoResultKeyword.php
@@ -13,8 +13,6 @@ use Piwik\Piwik;
class SearchNoResultKeyword extends Dimension
{
- public function getName()
- {
- return Piwik::translate('Actions_ColumnNoResultKeyword');
- }
+ protected $type = self::TYPE_TEXT;
+ protected $nameSingular = 'Actions_ColumnNoResultKeyword';
}
diff --git a/plugins/Actions/Columns/TimeSpentRefAction.php b/plugins/Actions/Columns/TimeSpentRefAction.php
index a51cac9d59..2b0a8c2526 100644
--- a/plugins/Actions/Columns/TimeSpentRefAction.php
+++ b/plugins/Actions/Columns/TimeSpentRefAction.php
@@ -17,6 +17,7 @@ class TimeSpentRefAction extends ActionDimension
{
protected $columnName = 'time_spent_ref_action';
protected $columnType = 'INTEGER(10) UNSIGNED NULL';
+ protected $type = self::TYPE_DURATION_S;
public function onNewAction(Request $request, Visitor $visitor, Action $action)
{
diff --git a/plugins/Actions/Columns/VisitTotalActions.php b/plugins/Actions/Columns/VisitTotalActions.php
index 750cfc8667..85ddc9336d 100644
--- a/plugins/Actions/Columns/VisitTotalActions.php
+++ b/plugins/Actions/Columns/VisitTotalActions.php
@@ -8,25 +8,42 @@
*/
namespace Piwik\Plugins\Actions\Columns;
+use Piwik\Columns\MetricsList;
+use Piwik\Piwik;
+use Piwik\Plugin\ArchivedMetric;
+use Piwik\Plugin\ComputedMetric;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugins\CoreHome\Segment;
+use Piwik\Columns\DimensionMetricFactory;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
-use Piwik\Tracker;
use Piwik\Tracker\Visitor;
class VisitTotalActions extends VisitDimension
{
protected $columnName = 'visit_total_actions';
protected $columnType = 'INT(11) UNSIGNED NULL';
+ protected $metricId = 'actions';
+ protected $nameSingular = 'Actions_ActionsInVisit';
+ protected $segmentName = 'actions';
+ protected $type = self::TYPE_NUMBER;
- protected function configureSegments()
+ public function configureMetrics(MetricsList $metricsList, DimensionMetricFactory $dimensionMetricFactory)
{
- $segment = new Segment();
- $segment->setType(Segment::TYPE_METRIC);
- $segment->setSegment('actions');
- $segment->setName('General_NbActions');
- $this->addSegment($segment);
+ $metric1 = $dimensionMetricFactory->createCustomMetric('bounce_count', Piwik::translate('General_ColumnBounces'), 'sum(case %s when 1 then 1 when 0 then 1 else 0 end)');
+ $metric1->setDocumentation(Piwik::translate('General_ColumnBouncesDocumentation'));
+ $metricsList->addMetric($metric1);
+
+ $metric = $dimensionMetricFactory->createMetric(ArchivedMetric::AGGREGATION_SUM);
+ $metricsList->addMetric($metric);
+
+ $metric = $dimensionMetricFactory->createMetric(ArchivedMetric::AGGREGATION_MAX);
+ $metricsList->addMetric($metric);
+
+ $metric = $dimensionMetricFactory->createComputedMetric($metric1->getName(), 'nb_visits', ComputedMetric::AGGREGATION_RATE);
+ $metric->setTranslatedName(Piwik::translate('General_ColumnBounceRate'));
+ $metric->setName('bounce_rate');
+ $metric->setDocumentation(Piwik::translate('General_ColumnBounceRateDocumentation'));
+ $metricsList->addMetric($metric);
}
/**
diff --git a/plugins/Actions/Columns/VisitTotalInteractions.php b/plugins/Actions/Columns/VisitTotalInteractions.php
index 9c10b1e03a..a41244211c 100644
--- a/plugins/Actions/Columns/VisitTotalInteractions.php
+++ b/plugins/Actions/Columns/VisitTotalInteractions.php
@@ -18,20 +18,18 @@ class VisitTotalInteractions extends VisitDimension
{
protected $columnName = 'visit_total_interactions';
protected $columnType = 'SMALLINT UNSIGNED DEFAULT 0';
+ protected $type = self::TYPE_NUMBER;
+ protected $segmentName = 'interactions';
+ protected $nameSingular = 'General_NbInteractions';
+ protected $acceptValues = 'Any positive integer';
- protected function configureSegments()
+ public function __construct()
{
- $segment = new Segment();
- $segment->setType(Segment::TYPE_METRIC);
- $segment->setSegment('interactions');
- $segment->setName('General_NbInteractions');
- $segment->setAcceptedValues('Any positive integer');
- $segment->setSuggestedValuesCallback(function ($idSite, $maxValuesToReturn) {
+ $this->suggestedValuesCallback = function ($idSite, $maxValuesToReturn) {
$positions = range(1,50);
return array_slice($positions, 0, $maxValuesToReturn);
- });
- $this->addSegment($segment);
+ };
}
/**
diff --git a/plugins/Actions/Columns/VisitTotalSearches.php b/plugins/Actions/Columns/VisitTotalSearches.php
index e3ebb83247..559b8090bf 100644
--- a/plugins/Actions/Columns/VisitTotalSearches.php
+++ b/plugins/Actions/Columns/VisitTotalSearches.php
@@ -9,26 +9,18 @@
namespace Piwik\Plugins\Actions\Columns;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugins\CoreHome\Segment;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
-use Piwik\Tracker;
use Piwik\Tracker\Visitor;
class VisitTotalSearches extends VisitDimension
{
protected $columnName = 'visit_total_searches';
protected $columnType = 'SMALLINT(5) UNSIGNED NULL';
-
- protected function configureSegments()
- {
- $segment = new Segment();
- $segment->setType(Segment::TYPE_METRIC);
- $segment->setSegment('searches');
- $segment->setName('General_NbSearches');
- $segment->setAcceptedValues('To select all visits who used internal Site Search, use: &segment=searches>0');
- $this->addSegment($segment);
- }
+ protected $segmentName = 'searches';
+ protected $nameSingular = 'General_NbSearches';
+ protected $acceptValues = 'To select all visits who used internal Site Search, use: &segment=searches>0';
+ protected $type = self::TYPE_NUMBER;
/**
* @param Request $request
diff --git a/plugins/Actions/lang/en.json b/plugins/Actions/lang/en.json
index ab9fbff5f7..8725fc8e3f 100644
--- a/plugins/Actions/lang/en.json
+++ b/plugins/Actions/lang/en.json
@@ -2,14 +2,18 @@
"Actions": {
"AvgGenerationTimeTooltip": "Average based on %1$s hit(s) %2$s between %3$s and %4$s",
"ColumnClickedURL": "Clicked URL",
+ "ColumnClickedURLs": "Clicked URLs",
"ColumnActionURL": "Action URL",
"ColumnClicks": "Clicks",
"ColumnClicksDocumentation": "The number of times this link was clicked.",
"ColumnDownloadURL": "Download URL",
+ "ColumnDownloadURLs": "Download URLs",
"ColumnEntryPageTitle": "Entry Page title",
"ColumnEntryPageURL": "Entry Page URL",
+ "ColumnEntryPageURLs": "Entry Page URLs",
"ColumnExitPageTitle": "Exit Page Title",
"ColumnExitPageURL": "Exit Page URL",
+ "ColumnExitPageURLs": "Exit Page URLs",
"ColumnNoResultKeyword": "Keyword with No Search Result",
"ColumnPageName": "Page Name",
"ColumnPagesPerSearch": "Search Results pages",
@@ -28,6 +32,7 @@
"ColumnUniqueOutlinks": "Unique Outlinks",
"ColumnIdPageview": "Pageview ID",
"ColumnInteractionPosition": "Interaction Position",
+ "ActionsInVisit": "Actions In Visit",
"DownloadsReportDocumentation": "In this report, you can see which files your visitors have downloaded. %s What Piwik counts as a download is the click on a download link. Whether the download was completed or not isn't known to Piwik.",
"EntryPagesReportDocumentation": "This report contains information about the entry pages that were used during the specified period. An entry page is the first page that a user views during their visit. %s The entry URLs are displayed as a folder structure.",
"EntryPageTitles": "Entry page titles",
@@ -49,7 +54,10 @@
"SiteSearchCategories2": "For example, Ecommerce websites typically have a \"Category\" selector so that visitors can restrict their searches to all products in a specific Category.",
"SiteSearchFollowingPagesDoc": "When visitors search on your website, they are looking for a particular page, content, product, or service. This report lists the pages that were clicked the most after an internal search. In other words, the list of pages the most searched for by visitors already on your website.",
"SiteSearchIntro": "Tracking searches that visitors make on your website is a very effective way to learn more about what your audience is looking for, it can help find ideas for new content, new Ecommerce products that potential customers might be searching for, and generally improve the visitors' experience on your website.",
+ "SiteSearchCategory": "Category (Site Search)",
+ "SiteSearchCategories": "Categories (Site Search)",
"SiteSearchKeyword": "Keyword (Site Search)",
+ "SiteSearchKeywords": "Keywords (Site Search)",
"SiteSearchKeywordsDocumentation": "This report lists the Search Keywords that visitors searched for on your internal Search Engine.",
"SiteSearchKeywordsNoResultDocumentation": "This report lists the Search Keywords that did not return any Search result: maybe the search engine algorithm can be improved, or maybe your visitors are looking for content that is not (yet) on your website?",
"SubmenuPagesEntry": "Entry pages",
@@ -66,6 +74,7 @@
"WidgetSearchCategories": "Search Categories",
"WidgetSearchKeywords": "Site Search Keywords",
"WidgetSearchNoResultKeywords": "Search Keywords with No Results",
- "ActionType": "Action Type"
+ "ActionType": "Action Type",
+ "ActionTypes": "Action Types"
}
} \ No newline at end of file