Download plugins/Ecommerce/Ecommerce.php from Leon4gr45/matomo: direct link, hf CLI and curl.
- Browser
- Download file 4.29 kB
-
https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/plugins/Ecommerce/Ecommerce.php
- Command line
-
hf download hf://spaces/Leon4gr45/matomo/plugins/Ecommerce/Ecommerce.php
-
curl -L -o Ecommerce.php https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/plugins/Ecommerce/Ecommerce.php
4.29 kB
| /** | |
| * 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\Ecommerce; | |
| use Piwik\Columns\ComputedMetricFactory; | |
| use Piwik\Columns\MetricsList; | |
| use Piwik\Common; | |
| use Piwik\Plugin\ArchivedMetric; | |
| use Piwik\Plugin\ComputedMetric; | |
| use Piwik\Plugins\Ecommerce\Columns\ProductCategory; | |
| use Piwik\Plugins\SegmentEditor\Settings\LimitSegments; | |
| use Piwik\Segment\SegmentsList; | |
| class Ecommerce extends \Piwik\Plugin | |
| { | |
| /** | |
| * @see \Piwik\Plugin::registerEvents | |
| */ | |
| public function registerEvents() | |
| { | |
| return [ | |
| 'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys', | |
| 'Metric.addComputedMetrics' => 'addComputedMetrics', | |
| 'Actions.getCustomActionDimensionFieldsAndJoins' => 'provideActionDimensionFields', | |
| 'Segment.filterSegments' => 'filterSegments', | |
| ]; | |
| } | |
| public function getClientSideTranslationKeys(&$translations) | |
| { | |
| $translations[] = 'Goals_ConversionsOverview'; | |
| $translations[] = 'General_ColumnRevenue'; | |
| $translations[] = 'General_Subtotal'; | |
| $translations[] = 'General_Tax'; | |
| $translations[] = 'General_Shipping'; | |
| $translations[] = 'General_Discount'; | |
| $translations[] = 'Live_RowActionTooltipWithDimension'; | |
| $translations[] = 'General_Goal'; | |
| } | |
| public function provideActionDimensionFields(&$fields, &$joins) | |
| { | |
| $fields[] = 'log_link_visit_action.product_price as productViewPrice'; | |
| $fields[] = 'log_action_productview_name.name as productViewName'; | |
| $fields[] = 'log_action_productview_sku.name as productViewSku'; | |
| $joins[] = 'LEFT JOIN ' . Common::prefixTable('log_action') . ' AS log_action_productview_name | |
| ON log_link_visit_action.idaction_product_name = log_action_productview_name.idaction'; | |
| $joins[] = 'LEFT JOIN ' . Common::prefixTable('log_action') . ' AS log_action_productview_sku | |
| ON log_link_visit_action.idaction_product_sku = log_action_productview_sku.idaction'; | |
| for ($i = 1; $i <= ProductCategory::PRODUCT_CATEGORY_COUNT; $i++) { | |
| $suffix = $i > 1 ? $i : ''; | |
| $fields[] = "log_action_productview_category$i.name as productViewCategory$i"; | |
| $joins[] = "LEFT JOIN " . Common::prefixTable('log_action') . " AS log_action_productview_category$i | |
| ON log_link_visit_action.idaction_product_cat$suffix = log_action_productview_category$i.idaction"; | |
| } | |
| } | |
| public function addComputedMetrics(MetricsList $list, ComputedMetricFactory $computedMetricFactory) | |
| { | |
| $category = 'Goals_Ecommerce'; | |
| $metrics = $list->getMetrics(); | |
| foreach ($metrics as $metric) { | |
| if ($metric instanceof ArchivedMetric && $metric->getDimension()) { | |
| $metricName = $metric->getName(); | |
| if ( | |
| $metric->getDbTableName() === 'log_conversion' | |
| && $metricName !== 'nb_uniq_orders' | |
| && strpos($metricName, ArchivedMetric::AGGREGATION_SUM_PREFIX) === 0 | |
| && $metric->getCategoryId() === $category | |
| ) { | |
| $metric = $computedMetricFactory->createComputedMetric($metric->getName(), 'nb_uniq_orders', ComputedMetric::AGGREGATION_AVG); | |
| $list->addMetric($metric); | |
| } | |
| } | |
| } | |
| } | |
| public function filterSegments(SegmentsList &$list, array $idSites) | |
| { | |
| $limitSegmentsSettingEnabled = false; | |
| if (empty($idSites)) { | |
| $limitSegmentsSettingEnabled = LimitSegments::getInstance()->getValue(); | |
| } else { | |
| foreach ($idSites as $idsite) { | |
| $limitSegmentsSettingEnabled |= LimitSegments::getInstance($idsite)->getValue(); | |
| } | |
| } | |
| if ($limitSegmentsSettingEnabled) { | |
| $list->remove('Goals_Ecommerce', 'orderId'); | |
| $list->remove('Goals_Ecommerce', 'revenueOrder'); | |
| $list->remove('Goals_Ecommerce', 'productPrice'); | |
| $list->remove('Goals_Ecommerce', 'productName'); | |
| $list->remove('Goals_Ecommerce', 'productSku'); | |
| } | |
| } | |
| } | |