update Piwik to version 2.16 (fixes #91)
This commit is contained in:
parent
296343bf3b
commit
d885a4baa9
5833 changed files with 418860 additions and 226988 deletions
70
www/analytics/plugins/Actions/Columns/ActionType.php
Normal file
70
www/analytics/plugins/Actions/Columns/ActionType.php
Normal 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\Columns;
|
||||
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugin\Dimension\ActionDimension;
|
||||
use Piwik\Plugins\Actions\Segment;
|
||||
use Piwik\Tracker\Action;
|
||||
use Exception;
|
||||
|
||||
/**
|
||||
* This example dimension only defines a name and does not track any data. It's supposed to be only used in reports.
|
||||
*
|
||||
* See {@link http://developer.piwik.org/api-reference/Piwik/Columns\Dimension} for more information.
|
||||
*/
|
||||
class ActionType extends ActionDimension
|
||||
{
|
||||
private $types = array(
|
||||
Action::TYPE_PAGE_URL => 'pageviews',
|
||||
Action::TYPE_CONTENT => 'contents',
|
||||
Action::TYPE_SITE_SEARCH => 'sitesearches',
|
||||
Action::TYPE_EVENT => 'events',
|
||||
Action::TYPE_OUTLINK => 'outlinks',
|
||||
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()
|
||||
{
|
||||
return Piwik::translate('Actions_ActionType');
|
||||
}
|
||||
|
||||
protected function configureSegments()
|
||||
{
|
||||
$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 $index;
|
||||
});
|
||||
$segment->setSuggestedValuesCallback(function ($idSite, $maxSuggestionsToReturn) use ($types) {
|
||||
return array_slice(array_values($types), 0, $maxSuggestionsToReturn);
|
||||
});
|
||||
$this->addSegment($segment);
|
||||
}
|
||||
}
|
||||
32
www/analytics/plugins/Actions/Columns/ActionUrl.php
Normal file
32
www/analytics/plugins/Actions/Columns/ActionUrl.php
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
<?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\Piwik;
|
||||
use Piwik\Plugin\Dimension\ActionDimension;
|
||||
use Piwik\Plugins\Actions\Segment;
|
||||
|
||||
class ActionUrl extends ActionDimension
|
||||
{
|
||||
public function getName()
|
||||
{
|
||||
return Piwik::translate('Actions_ColumnActionURL');
|
||||
}
|
||||
|
||||
protected function configureSegments()
|
||||
{
|
||||
$segment = new Segment();
|
||||
$segment->setSegment('actionUrl');
|
||||
$segment->setName('Actions_ColumnActionURL');
|
||||
$segment->setUnionOfSegments(array('pageUrl', 'downloadUrl', 'outlinkUrl'));
|
||||
|
||||
$this->addSegment($segment);
|
||||
}
|
||||
|
||||
}
|
||||
31
www/analytics/plugins/Actions/Columns/ClickedUrl.php
Normal file
31
www/analytics/plugins/Actions/Columns/ClickedUrl.php
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<?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\Piwik;
|
||||
use Piwik\Plugin\Dimension\ActionDimension;
|
||||
use Piwik\Plugins\Actions\Segment;
|
||||
|
||||
class ClickedUrl extends ActionDimension
|
||||
{
|
||||
public function getName()
|
||||
{
|
||||
return Piwik::translate('Actions_ColumnClickedURL');
|
||||
}
|
||||
|
||||
protected function configureSegments()
|
||||
{
|
||||
$segment = new Segment();
|
||||
$segment->setSegment('outlinkUrl');
|
||||
$segment->setName('Actions_ColumnClickedURL');
|
||||
$segment->setSqlSegment('log_link_visit_action.idaction_url');
|
||||
$this->addSegment($segment);
|
||||
}
|
||||
|
||||
}
|
||||
20
www/analytics/plugins/Actions/Columns/DestinationPage.php
Normal file
20
www/analytics/plugins/Actions/Columns/DestinationPage.php
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<?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\Dimension;
|
||||
use Piwik\Piwik;
|
||||
|
||||
class DestinationPage extends Dimension
|
||||
{
|
||||
public function getName()
|
||||
{
|
||||
return Piwik::translate('General_ColumnDestinationPage');
|
||||
}
|
||||
}
|
||||
31
www/analytics/plugins/Actions/Columns/DownloadUrl.php
Normal file
31
www/analytics/plugins/Actions/Columns/DownloadUrl.php
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<?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\Piwik;
|
||||
use Piwik\Plugin\Dimension\ActionDimension;
|
||||
use Piwik\Plugins\Actions\Segment;
|
||||
|
||||
class DownloadUrl extends ActionDimension
|
||||
{
|
||||
public function getName()
|
||||
{
|
||||
return Piwik::translate('Actions_ColumnDownloadURL');
|
||||
}
|
||||
|
||||
protected function configureSegments()
|
||||
{
|
||||
$segment = new Segment();
|
||||
$segment->setSegment('downloadUrl');
|
||||
$segment->setName('Actions_ColumnDownloadURL');
|
||||
$segment->setSqlSegment('log_link_visit_action.idaction_url');
|
||||
$this->addSegment($segment);
|
||||
}
|
||||
|
||||
}
|
||||
52
www/analytics/plugins/Actions/Columns/EntryPageTitle.php
Normal file
52
www/analytics/plugins/Actions/Columns/EntryPageTitle.php
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
<?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\Piwik;
|
||||
use Piwik\Plugins\Actions\Segment;
|
||||
use Piwik\Plugin\Dimension\VisitDimension;
|
||||
use Piwik\Tracker\Action;
|
||||
use Piwik\Tracker\Request;
|
||||
use Piwik\Tracker\Visitor;
|
||||
|
||||
class EntryPageTitle extends VisitDimension
|
||||
{
|
||||
protected $columnName = 'visit_entry_idaction_name';
|
||||
protected $columnType = 'INTEGER(11) UNSIGNED NOT NULL';
|
||||
|
||||
protected function configureSegments()
|
||||
{
|
||||
$segment = new Segment();
|
||||
$segment->setSegment('entryPageTitle');
|
||||
$segment->setName('Actions_ColumnEntryPageTitle');
|
||||
$this->addSegment($segment);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return mixed
|
||||
*/
|
||||
public function onNewVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
$idActionName = false;
|
||||
|
||||
if (!empty($action)) {
|
||||
$idActionName = $action->getIdActionNameForEntryAndExitIds();
|
||||
}
|
||||
|
||||
return (int) $idActionName;
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return Piwik::translate('Actions_ColumnEntryPageTitle');
|
||||
}
|
||||
}
|
||||
53
www/analytics/plugins/Actions/Columns/EntryPageUrl.php
Normal file
53
www/analytics/plugins/Actions/Columns/EntryPageUrl.php
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
<?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\Piwik;
|
||||
use Piwik\Plugins\Actions\Segment;
|
||||
use Piwik\Plugin\Dimension\VisitDimension;
|
||||
use Piwik\Tracker\Action;
|
||||
use Piwik\Tracker\Request;
|
||||
use Piwik\Tracker\Visitor;
|
||||
|
||||
class EntryPageUrl extends VisitDimension
|
||||
{
|
||||
protected $columnName = 'visit_entry_idaction_url';
|
||||
protected $columnType = 'INTEGER(11) UNSIGNED NOT NULL';
|
||||
|
||||
protected function configureSegments()
|
||||
{
|
||||
$segment = new Segment();
|
||||
$segment->setSegment('entryPageUrl');
|
||||
$segment->setName('Actions_ColumnEntryPageURL');
|
||||
$this->addSegment($segment);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return mixed
|
||||
*/
|
||||
public function onNewVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
$idActionUrl = false;
|
||||
|
||||
if (!empty($action)) {
|
||||
$idActionUrl = $action->getIdActionUrlForEntryAndExitIds();
|
||||
}
|
||||
|
||||
return (int) $idActionUrl;
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return Piwik::translate('Actions_ColumnEntryPageURL');
|
||||
}
|
||||
|
||||
}
|
||||
67
www/analytics/plugins/Actions/Columns/ExitPageTitle.php
Normal file
67
www/analytics/plugins/Actions/Columns/ExitPageTitle.php
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
<?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\Piwik;
|
||||
use Piwik\Plugins\Actions\Segment;
|
||||
use Piwik\Plugin\Dimension\VisitDimension;
|
||||
use Piwik\Tracker\Action;
|
||||
use Piwik\Tracker\Request;
|
||||
use Piwik\Tracker\Visitor;
|
||||
|
||||
class ExitPageTitle extends VisitDimension
|
||||
{
|
||||
protected $columnName = 'visit_exit_idaction_name';
|
||||
protected $columnType = 'INTEGER(11) UNSIGNED NOT NULL';
|
||||
|
||||
protected function configureSegments()
|
||||
{
|
||||
$segment = new Segment();
|
||||
$segment->setSegment('exitPageTitle');
|
||||
$segment->setName('Actions_ColumnExitPageTitle');
|
||||
$this->addSegment($segment);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return int|bool
|
||||
*/
|
||||
public function onNewVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
$idActionName = false;
|
||||
|
||||
if (!empty($action)) {
|
||||
$idActionName = $action->getIdActionNameForEntryAndExitIds();
|
||||
}
|
||||
|
||||
return (int) $idActionName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return int|bool
|
||||
*/
|
||||
public function onExistingVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
if (empty($action)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $action->getIdActionNameForEntryAndExitIds();
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return Piwik::translate('Actions_ColumnExitPageTitle');
|
||||
}
|
||||
}
|
||||
73
www/analytics/plugins/Actions/Columns/ExitPageUrl.php
Normal file
73
www/analytics/plugins/Actions/Columns/ExitPageUrl.php
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
<?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\Piwik;
|
||||
use Piwik\Plugins\Actions\Segment;
|
||||
use Piwik\Plugin\Dimension\VisitDimension;
|
||||
use Piwik\Tracker\Action;
|
||||
use Piwik\Tracker\Request;
|
||||
use Piwik\Tracker\Visitor;
|
||||
|
||||
class ExitPageUrl extends VisitDimension
|
||||
{
|
||||
protected $columnName = 'visit_exit_idaction_url';
|
||||
protected $columnType = 'INTEGER(11) UNSIGNED NULL DEFAULT 0';
|
||||
|
||||
protected function configureSegments()
|
||||
{
|
||||
$segment = new Segment();
|
||||
$segment->setSegment('exitPageUrl');
|
||||
$segment->setName('Actions_ColumnExitPageURL');
|
||||
$this->addSegment($segment);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return int|bool
|
||||
*/
|
||||
public function onNewVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
$idActionUrl = false;
|
||||
|
||||
if (!empty($action)) {
|
||||
$idActionUrl = $action->getIdActionUrlForEntryAndExitIds();
|
||||
}
|
||||
|
||||
return (int) $idActionUrl;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return int
|
||||
*/
|
||||
public function onExistingVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
if (empty($action)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$id = $action->getIdActionUrlForEntryAndExitIds();
|
||||
|
||||
if (!empty($id)) {
|
||||
$id = (int) $id;
|
||||
}
|
||||
|
||||
return $id;
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return Piwik::translate('Actions_ColumnExitPageURL');
|
||||
}
|
||||
}
|
||||
20
www/analytics/plugins/Actions/Columns/Keyword.php
Normal file
20
www/analytics/plugins/Actions/Columns/Keyword.php
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<?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\Dimension;
|
||||
use Piwik\Piwik;
|
||||
|
||||
class Keyword extends Dimension
|
||||
{
|
||||
public function getName()
|
||||
{
|
||||
return Piwik::translate('General_ColumnKeyword');
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<?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\Dimension;
|
||||
use Piwik\Piwik;
|
||||
|
||||
class KeywordwithNoSearchResult extends Dimension
|
||||
{
|
||||
public function getName()
|
||||
{
|
||||
return Piwik::translate('Actions_ColumnNoResultKeyword');
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
<?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\Metrics;
|
||||
|
||||
use Piwik\DataTable;
|
||||
use Piwik\DataTable\Row;
|
||||
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
|
||||
*
|
||||
* sum_time_generation / nb_hits_with_time_generation
|
||||
*
|
||||
* The above metrics are calculated during archiving. This metric is calculated before
|
||||
* serving a report.
|
||||
*/
|
||||
class AveragePageGenerationTime extends ProcessedMetric
|
||||
{
|
||||
public function getName()
|
||||
{
|
||||
return 'avg_time_generation';
|
||||
}
|
||||
|
||||
public function getTranslatedName()
|
||||
{
|
||||
return Piwik::translate('General_ColumnAverageGenerationTime');
|
||||
}
|
||||
|
||||
public function getDependentMetrics()
|
||||
{
|
||||
return array('sum_time_generation', 'nb_hits_with_time_generation');
|
||||
}
|
||||
|
||||
public function getTemporaryMetrics()
|
||||
{
|
||||
return array('sum_time_generation');
|
||||
}
|
||||
|
||||
public function compute(Row $row)
|
||||
{
|
||||
$sumGenerationTime = $this->getMetric($row, 'sum_time_generation');
|
||||
$hitsWithTimeGeneration = $this->getMetric($row, 'nb_hits_with_time_generation');
|
||||
|
||||
return Piwik::getQuotientSafe($sumGenerationTime, $hitsWithTimeGeneration, $precision = 3);
|
||||
}
|
||||
|
||||
public function format($value, Formatter $formatter)
|
||||
{
|
||||
if ($formatter instanceof Formatter\Html
|
||||
&& !$value
|
||||
) {
|
||||
return '-';
|
||||
} else {
|
||||
return $formatter->getPrettyTimeFromSeconds($value, $displayAsSentence = true);
|
||||
}
|
||||
}
|
||||
|
||||
public function beforeCompute($report, DataTable $table)
|
||||
{
|
||||
$hasTimeGeneration = array_sum($this->getMetricValues($table, 'sum_time_generation')) > 0;
|
||||
|
||||
if (!$hasTimeGeneration
|
||||
&& $table->getRowsCount() != 0
|
||||
&& !$this->hasAverageTimeGeneration($table)
|
||||
) {
|
||||
// No generation time: remove it from the API output and add it to empty_columns metadata, so that
|
||||
// the columns can also be removed from the view
|
||||
$table->filter('ColumnDelete', array(array(
|
||||
Metrics::INDEX_PAGE_SUM_TIME_GENERATION,
|
||||
Metrics::INDEX_PAGE_NB_HITS_WITH_TIME_GENERATION,
|
||||
Metrics::INDEX_PAGE_MIN_TIME_GENERATION,
|
||||
Metrics::INDEX_PAGE_MAX_TIME_GENERATION,
|
||||
'sum_time_generation',
|
||||
'nb_hits_with_time_generation',
|
||||
'min_time_generation',
|
||||
'max_time_generation'
|
||||
)));
|
||||
|
||||
if ($table instanceof DataTable) {
|
||||
$emptyColumns = $table->getMetadata(DataTable::EMPTY_COLUMNS_METADATA_NAME);
|
||||
if (!is_array($emptyColumns)) {
|
||||
$emptyColumns = array();
|
||||
}
|
||||
$emptyColumns[] = 'sum_time_generation';
|
||||
$emptyColumns[] = 'avg_time_generation';
|
||||
$emptyColumns[] = 'min_time_generation';
|
||||
$emptyColumns[] = 'max_time_generation';
|
||||
$table->setMetadata(DataTable::EMPTY_COLUMNS_METADATA_NAME, $emptyColumns);
|
||||
}
|
||||
}
|
||||
|
||||
return $hasTimeGeneration;
|
||||
}
|
||||
|
||||
private function hasAverageTimeGeneration(DataTable $table)
|
||||
{
|
||||
return $table->getFirstRow()->getColumn('avg_time_generation') !== false;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
<?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\Metrics;
|
||||
|
||||
use Piwik\DataTable\Row;
|
||||
use Piwik\Metrics\Formatter;
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugin\ProcessedMetric;
|
||||
|
||||
/**
|
||||
* The average amount of time spent on a page. Calculated as:
|
||||
*
|
||||
* sum_time_spent / nb_visits
|
||||
*
|
||||
* sum_time_spent and nb_visits are calculated by Archiver classes.
|
||||
*/
|
||||
class AverageTimeOnPage extends ProcessedMetric
|
||||
{
|
||||
public function getName()
|
||||
{
|
||||
return 'avg_time_on_page';
|
||||
}
|
||||
|
||||
public function getTranslatedName()
|
||||
{
|
||||
return Piwik::translate('General_ColumnAverageTimeOnPage');
|
||||
}
|
||||
|
||||
public function compute(Row $row)
|
||||
{
|
||||
$sumTimeSpent = $this->getMetric($row, 'sum_time_spent');
|
||||
$visits = $this->getMetric($row, 'nb_hits');
|
||||
|
||||
return Piwik::getQuotientSafe($sumTimeSpent, $visits, $precision = 0);
|
||||
}
|
||||
|
||||
public function format($value, Formatter $formatter)
|
||||
{
|
||||
return $formatter->getPrettyTimeFromSeconds($value, $timeAsSentence = false);
|
||||
}
|
||||
|
||||
public function getDependentMetrics()
|
||||
{
|
||||
return array('sum_time_spent', 'nb_hits');
|
||||
}
|
||||
}
|
||||
51
www/analytics/plugins/Actions/Columns/Metrics/BounceRate.php
Normal file
51
www/analytics/plugins/Actions/Columns/Metrics/BounceRate.php
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
<?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\Metrics;
|
||||
|
||||
use Piwik\DataTable\Row;
|
||||
use Piwik\Metrics\Formatter;
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugin\ProcessedMetric;
|
||||
|
||||
/**
|
||||
* The bounce rate for individual pages. Calculated as:
|
||||
*
|
||||
* entry_bounce_count (single page visits on this page) / entry_nb_visits (all visits that started on this page)
|
||||
*
|
||||
* entry_bounce_count & entry_nb_visits are calculated by the Actions archiver.
|
||||
*/
|
||||
class BounceRate extends ProcessedMetric
|
||||
{
|
||||
public function getName()
|
||||
{
|
||||
return 'bounce_rate';
|
||||
}
|
||||
|
||||
public function getTranslatedName()
|
||||
{
|
||||
return Piwik::translate('General_ColumnBounceRate');
|
||||
}
|
||||
|
||||
public function compute(Row $row)
|
||||
{
|
||||
$entryBounceCount = $this->getMetric($row, 'entry_bounce_count');
|
||||
$entryVisits = $this->getMetric($row, 'entry_nb_visits');
|
||||
|
||||
return Piwik::getQuotientSafe($entryBounceCount, $entryVisits, $precision = 2);
|
||||
}
|
||||
|
||||
public function format($value, Formatter $formatter)
|
||||
{
|
||||
return $formatter->getPrettyPercentFromQuotient($value);
|
||||
}
|
||||
|
||||
public function getDependentMetrics()
|
||||
{
|
||||
return array('entry_bounce_count', 'entry_nb_visits');
|
||||
}
|
||||
}
|
||||
51
www/analytics/plugins/Actions/Columns/Metrics/ExitRate.php
Normal file
51
www/analytics/plugins/Actions/Columns/Metrics/ExitRate.php
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
<?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\Metrics;
|
||||
|
||||
use Piwik\DataTable\Row;
|
||||
use Piwik\Metrics\Formatter;
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugin\ProcessedMetric;
|
||||
|
||||
/**
|
||||
* Percent of visits that finished on this page. Calculated as:
|
||||
*
|
||||
* exit_nb_visits / nb_visits
|
||||
*
|
||||
* exit_nb_visits & nb_visits are calculated by the Actions archiver.
|
||||
*/
|
||||
class ExitRate extends ProcessedMetric
|
||||
{
|
||||
public function getName()
|
||||
{
|
||||
return 'exit_rate';
|
||||
}
|
||||
|
||||
public function getTranslatedName()
|
||||
{
|
||||
return Piwik::translate('General_ColumnExitRate');
|
||||
}
|
||||
|
||||
public function compute(Row $row)
|
||||
{
|
||||
$exitVisits = $this->getMetric($row, 'exit_nb_visits');
|
||||
$visits = $this->getMetric($row, 'nb_visits');
|
||||
|
||||
return Piwik::getQuotientSafe($exitVisits, $visits, $precision = 2);
|
||||
}
|
||||
|
||||
public function format($value, Formatter $formatter)
|
||||
{
|
||||
return $formatter->getPrettyPercentFromQuotient($value);
|
||||
}
|
||||
|
||||
public function getDependentMetrics()
|
||||
{
|
||||
return array('exit_nb_visits', 'nb_visits');
|
||||
}
|
||||
}
|
||||
33
www/analytics/plugins/Actions/Columns/PageTitle.php
Normal file
33
www/analytics/plugins/Actions/Columns/PageTitle.php
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<?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\Piwik;
|
||||
use Piwik\Plugin\Dimension\ActionDimension;
|
||||
use Piwik\Plugins\Actions\Segment;
|
||||
|
||||
class PageTitle extends ActionDimension
|
||||
{
|
||||
protected $columnName = 'idaction_name';
|
||||
protected $columnType = 'INTEGER(10) UNSIGNED';
|
||||
|
||||
protected function configureSegments()
|
||||
{
|
||||
$segment = new Segment();
|
||||
$segment->setSegment('pageTitle');
|
||||
$segment->setName('Actions_ColumnPageName');
|
||||
$this->addSegment($segment);
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return Piwik::translate('Actions_ColumnPageName');
|
||||
}
|
||||
|
||||
}
|
||||
33
www/analytics/plugins/Actions/Columns/PageUrl.php
Normal file
33
www/analytics/plugins/Actions/Columns/PageUrl.php
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<?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\Piwik;
|
||||
use Piwik\Plugin\Dimension\ActionDimension;
|
||||
use Piwik\Plugins\Actions\Segment;
|
||||
|
||||
class PageUrl extends ActionDimension
|
||||
{
|
||||
protected $columnName = 'idaction_url';
|
||||
protected $columnType = 'INTEGER(10) UNSIGNED DEFAULT NULL';
|
||||
|
||||
protected function configureSegments()
|
||||
{
|
||||
$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);
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return Piwik::translate('Actions_ColumnPageURL');
|
||||
}
|
||||
}
|
||||
20
www/analytics/plugins/Actions/Columns/SearchCategory.php
Normal file
20
www/analytics/plugins/Actions/Columns/SearchCategory.php
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<?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\Dimension;
|
||||
use Piwik\Piwik;
|
||||
|
||||
class SearchCategory extends Dimension
|
||||
{
|
||||
public function getName()
|
||||
{
|
||||
return Piwik::translate('Actions_ColumnSearchCategory');
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<?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\Dimension;
|
||||
use Piwik\Piwik;
|
||||
|
||||
class SearchDestinationPage extends Dimension
|
||||
{
|
||||
public function getName()
|
||||
{
|
||||
return Piwik::translate('General_ColumnDestinationPage');
|
||||
}
|
||||
}
|
||||
30
www/analytics/plugins/Actions/Columns/SearchKeyword.php
Normal file
30
www/analytics/plugins/Actions/Columns/SearchKeyword.php
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?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\Piwik;
|
||||
use Piwik\Plugin\Dimension\ActionDimension;
|
||||
use Piwik\Plugins\Actions\Segment;
|
||||
|
||||
class SearchKeyword extends ActionDimension
|
||||
{
|
||||
protected function configureSegments()
|
||||
{
|
||||
$segment = new Segment();
|
||||
$segment->setSegment('siteSearchKeyword');
|
||||
$segment->setName('Actions_SiteSearchKeyword');
|
||||
$segment->setSqlSegment('log_link_visit_action.idaction_name');
|
||||
$this->addSegment($segment);
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return Piwik::translate('General_ColumnKeyword');
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<?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\Dimension;
|
||||
use Piwik\Piwik;
|
||||
|
||||
class SearchNoResultKeyword extends Dimension
|
||||
{
|
||||
public function getName()
|
||||
{
|
||||
return Piwik::translate('Actions_ColumnNoResultKeyword');
|
||||
}
|
||||
}
|
||||
31
www/analytics/plugins/Actions/Columns/TimeSpentRefAction.php
Normal file
31
www/analytics/plugins/Actions/Columns/TimeSpentRefAction.php
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<?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\Plugin\Dimension\ActionDimension;
|
||||
use Piwik\Tracker\Action;
|
||||
use Piwik\Tracker\Request;
|
||||
use Piwik\Tracker\Visitor;
|
||||
|
||||
class TimeSpentRefAction extends ActionDimension
|
||||
{
|
||||
protected $columnName = 'time_spent_ref_action';
|
||||
protected $columnType = 'INTEGER(10) UNSIGNED NOT NULL';
|
||||
|
||||
public function onNewAction(Request $request, Visitor $visitor, Action $action)
|
||||
{
|
||||
$timeSpent = $visitor->getVisitorColumn('time_spent_ref_action');
|
||||
|
||||
if (empty($timeSpent)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return $timeSpent;
|
||||
}
|
||||
}
|
||||
90
www/analytics/plugins/Actions/Columns/VisitTotalActions.php
Normal file
90
www/analytics/plugins/Actions/Columns/VisitTotalActions.php
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
<?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\Plugin\Dimension\VisitDimension;
|
||||
use Piwik\Plugins\CoreHome\Segment;
|
||||
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 = 'SMALLINT(5) UNSIGNED NOT NULL';
|
||||
|
||||
protected function configureSegments()
|
||||
{
|
||||
$segment = new Segment();
|
||||
$segment->setType(Segment::TYPE_METRIC);
|
||||
$segment->setSegment('actions');
|
||||
$segment->setName('General_NbActions');
|
||||
$this->addSegment($segment);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return int
|
||||
*/
|
||||
public function onNewVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
$actionType = false;
|
||||
if ($action) {
|
||||
$actionType = $action->getActionType();
|
||||
}
|
||||
|
||||
$actions = array(
|
||||
Action::TYPE_PAGE_URL,
|
||||
Action::TYPE_DOWNLOAD,
|
||||
Action::TYPE_OUTLINK,
|
||||
Action::TYPE_SITE_SEARCH,
|
||||
Action::TYPE_EVENT
|
||||
);
|
||||
|
||||
// if visit starts with something else (e.g. ecommerce order), don't record as an action
|
||||
if (in_array($actionType, $actions)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return int
|
||||
*/
|
||||
public function onExistingVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
if (!$action) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$increment = 'visit_total_actions + 1';
|
||||
|
||||
$idActionUrl = $action->getIdActionUrlForEntryAndExitIds();
|
||||
|
||||
if ($idActionUrl !== false) {
|
||||
return $increment;
|
||||
}
|
||||
|
||||
$actionType = $action->getActionType();
|
||||
|
||||
if (in_array($actionType, array(Action::TYPE_SITE_SEARCH, Action::TYPE_EVENT))) {
|
||||
return $increment;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
72
www/analytics/plugins/Actions/Columns/VisitTotalSearches.php
Normal file
72
www/analytics/plugins/Actions/Columns/VisitTotalSearches.php
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
<?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\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 NOT 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);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return int
|
||||
*/
|
||||
public function onNewVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
if ($this->isSiteSearchAction($action)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return int
|
||||
*/
|
||||
public function onExistingVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
if ($this->isSiteSearchAction($action)) {
|
||||
return 'visit_total_searches + 1';
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Action|null $action
|
||||
* @return bool
|
||||
*/
|
||||
private function isSiteSearchAction($action)
|
||||
{
|
||||
return ($action && $action->getActionType() == Action::TYPE_SITE_SEARCH);
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue