قرینه از
https://github.com/matomo-org/matomo.git
synced 2025-08-21 22:47:43 +00:00

* [Coding Style] Enable rule PSR12.Files.FileHeader * Apply CS * Replace Piwik with Matomo in file headers * Unify file headers (position, no. of lines, https links) * Rebuild dist files * Apply CS * Fix system test that relies on line numbers in a file that had the file header updated --------- Co-authored-by: Stefan Giehl <stefan@matomo.org>
119 خطوط
3.5 KiB
PHP
119 خطوط
3.5 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Matomo - free/libre analytics platform
|
|
*
|
|
* @link https://matomo.org
|
|
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
|
*/
|
|
|
|
namespace Piwik\Plugins\Goals;
|
|
|
|
use Piwik\Plugins\VisitFrequency\API as VisitFrequencyAPI;
|
|
|
|
class Archiver extends \Piwik\Plugin\Archiver
|
|
{
|
|
public const VISITS_UNTIL_RECORD_NAME = 'visits_until_conv';
|
|
public const DAYS_UNTIL_CONV_RECORD_NAME = 'days_until_conv';
|
|
public const ITEMS_SKU_RECORD_NAME = 'Goals_ItemsSku';
|
|
public const ITEMS_NAME_RECORD_NAME = 'Goals_ItemsName';
|
|
public const ITEMS_CATEGORY_RECORD_NAME = 'Goals_ItemsCategory';
|
|
public const SKU_FIELD = 'idaction_sku';
|
|
public const NAME_FIELD = 'idaction_name';
|
|
public const CATEGORY_FIELD = 'idaction_category';
|
|
public const CATEGORY2_FIELD = 'idaction_category2';
|
|
public const CATEGORY3_FIELD = 'idaction_category3';
|
|
public const CATEGORY4_FIELD = 'idaction_category4';
|
|
public const CATEGORY5_FIELD = 'idaction_category5';
|
|
public const NO_LABEL = ':';
|
|
public const LOG_CONVERSION_TABLE = 'log_conversion';
|
|
public const VISITS_COUNT_FIELD = 'visitor_count_visits';
|
|
public const SECONDS_SINCE_FIRST_VISIT_FIELD = 'visitor_seconds_since_first';
|
|
|
|
public function getDependentSegmentsToArchive(): array
|
|
{
|
|
$hasConversions = $this->getProcessor()->getNumberOfVisitsConverted() > 0;
|
|
if (!$hasConversions) {
|
|
return [];
|
|
}
|
|
|
|
return [
|
|
VisitFrequencyAPI::NEW_VISITOR_SEGMENT,
|
|
VisitFrequencyAPI::RETURNING_VISITOR_SEGMENT,
|
|
];
|
|
}
|
|
|
|
/**
|
|
* This array stores the ranges to use when displaying the 'visits to conversion' report
|
|
*/
|
|
public static $visitCountRanges = [
|
|
[1, 1],
|
|
[2, 2],
|
|
[3, 3],
|
|
[4, 4],
|
|
[5, 5],
|
|
[6, 6],
|
|
[7, 7],
|
|
[8, 8],
|
|
[9, 14],
|
|
[15, 25],
|
|
[26, 50],
|
|
[51, 100],
|
|
[100],
|
|
];
|
|
|
|
/**
|
|
* This array stores the ranges to use when displaying the 'days to conversion' report
|
|
*/
|
|
public static $daysToConvRanges = [
|
|
[0, 0],
|
|
[1, 1],
|
|
[2, 2],
|
|
[3, 3],
|
|
[4, 4],
|
|
[5, 5],
|
|
[6, 6],
|
|
[7, 7],
|
|
[8, 14],
|
|
[15, 30],
|
|
[31, 60],
|
|
[61, 120],
|
|
[121, 364],
|
|
[364],
|
|
];
|
|
|
|
protected $dimensionRecord = [
|
|
self::SKU_FIELD => self::ITEMS_SKU_RECORD_NAME,
|
|
self::NAME_FIELD => self::ITEMS_NAME_RECORD_NAME,
|
|
self::CATEGORY_FIELD => self::ITEMS_CATEGORY_RECORD_NAME
|
|
];
|
|
protected $actionMapping = [
|
|
self::SKU_FIELD => 'idaction_product_sku',
|
|
self::NAME_FIELD => 'idaction_product_name',
|
|
self::CATEGORY_FIELD => 'idaction_product_cat',
|
|
self::CATEGORY2_FIELD => 'idaction_product_cat2',
|
|
self::CATEGORY3_FIELD => 'idaction_product_cat3',
|
|
self::CATEGORY4_FIELD => 'idaction_product_cat4',
|
|
self::CATEGORY5_FIELD => 'idaction_product_cat5',
|
|
];
|
|
|
|
/**
|
|
* @param string $recordName 'nb_conversions'
|
|
* @param int|bool $idGoal idGoal to return the metrics for, or false to return overall
|
|
* @return string Archive record name
|
|
*/
|
|
public static function getRecordName($recordName, $idGoal = false)
|
|
{
|
|
$idGoalStr = '';
|
|
if ($idGoal !== false) {
|
|
$idGoalStr = $idGoal . "_";
|
|
}
|
|
return 'Goal_' . $idGoalStr . $recordName;
|
|
}
|
|
|
|
public static function getItemRecordNameAbandonedCart($recordName)
|
|
{
|
|
return $recordName . '_Cart';
|
|
}
|
|
}
|