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:
-rw-r--r--core/Tracker/TableLogAction.php16
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_actions_outlinks_vlog.png3
-rw-r--r--tests/UI/specs/UIIntegration_spec.js17
3 files changed, 31 insertions, 5 deletions
diff --git a/core/Tracker/TableLogAction.php b/core/Tracker/TableLogAction.php
index fea4cac171..331239f3d9 100644
--- a/core/Tracker/TableLogAction.php
+++ b/core/Tracker/TableLogAction.php
@@ -43,7 +43,7 @@ class TableLogAction
$actionIds = self::queryIdsAction($actionsNameAndType);
- list($queriedIds, $fieldNamesToInsert) = self::processIdsToInsert($actionsNameAndType, $actionIds);
+ [$queriedIds, $fieldNamesToInsert] = self::processIdsToInsert($actionsNameAndType, $actionIds);
$insertedIds = self::insertNewIdsAction($actionsNameAndType, $fieldNamesToInsert);
$queriedIds = $queriedIds + $insertedIds;
@@ -95,7 +95,7 @@ class TableLogAction
$inserted = array();
foreach ($fieldNamesToInsert as $fieldName) {
- list($name, $type, $urlPrefix) = $actionsNameAndType[$fieldName];
+ [$name, $type, $urlPrefix] = $actionsNameAndType[$fieldName];
$actionId = self::getModel()->createNewIdAction($name, $type, $urlPrefix);
@@ -116,7 +116,7 @@ class TableLogAction
{
$toQuery = array();
foreach ($actionsNameAndType as &$actionNameType) {
- list($name, $type, $urlPrefix) = $actionNameType;
+ [$name, $type, $urlPrefix] = $actionNameType;
$toQuery[] = array('name' => $name, 'type' => $type);
}
@@ -184,14 +184,20 @@ class TableLogAction
$valueToMatch = preg_replace('@^http[s]?://(www\.)?@i', '', $valueToMatch);
}
+ $unsanitizedValue = $valueToMatch;
$valueToMatch = self::normaliseActionString($actionType, $valueToMatch);
if ($matchType == SegmentExpression::MATCH_EQUAL
|| $matchType == SegmentExpression::MATCH_NOT_EQUAL
) {
$idAction = self::getModel()->getIdActionMatchingNameAndType($valueToMatch, $actionType);
- // Action is not found (eg. &segment=pageTitle==Větrnásssssss)
+ // If action can't be found normalized try search for it with original value
+ // This can eg happen for outlinks that contain a & see https://github.com/matomo-org/matomo/issues/11806
if (empty($idAction)) {
- $idAction = null;
+ $idAction = self::getModel()->getIdActionMatchingNameAndType($unsanitizedValue, $actionType);
+ // Action is not found (eg. &segment=pageTitle==Větrnásssssss)
+ if (empty($idAction)) {
+ $idAction = null;
+ }
}
return $idAction;
}
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_actions_outlinks_vlog.png b/tests/UI/expected-screenshots/UIIntegrationTest_actions_outlinks_vlog.png
new file mode 100644
index 0000000000..7a5c3382fa
--- /dev/null
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_actions_outlinks_vlog.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c4b68a2792ba76873fa4572caa396347b3f9c04ec5259165d610aa5374fa9b80
+size 79583
diff --git a/tests/UI/specs/UIIntegration_spec.js b/tests/UI/specs/UIIntegration_spec.js
index 2530ffcc5c..c2bde5f9dc 100644
--- a/tests/UI/specs/UIIntegration_spec.js
+++ b/tests/UI/specs/UIIntegration_spec.js
@@ -398,6 +398,23 @@ describe("UIIntegrationTest", function () { // TODO: Rename to Piwik?
expect(await pageWrap.screenshot()).to.matchImage('actions_outlinks');
});
+ it('should load the segmented vlog correctly for outlink containing a &', async function () {
+ await (await page.jQuery('#widgetActionsgetOutlinks .value:contains("outlinks.org")')).click();
+ await page.waitForNetworkIdle();
+
+ const row = 'tr:contains("&pk") ';
+ const first = await page.jQuery(row + 'td.column:first');
+ await first.hover();
+ const second = await page.jQuery(row + 'td.label .actionSegmentVisitorLog');
+ await second.hover();
+ await second.click();
+ await page.waitForNetworkIdle();
+ await page.mouse.move(0, 0);
+
+ pageWrap = await page.$('.ui-dialog');
+ expect(await pageWrap.screenshot()).to.matchImage('actions_outlinks_vlog');
+ });
+
it('should load the actions > downloads page correctly', async function () {
await page.goto("?" + urlBase + "#?" + generalParams + "&category=General_Actions&subcategory=General_Downloads");
await page.waitForNetworkIdle();