Project

General

Profile

Actions

Bug #103476

open

Disrepancy of returned link type in LinktypeInternal::fetchType

Added by Sybille Peters 8 months ago. Updated 5 months ago.

Status:
Under Review
Priority:
Should have
Category:
Linkvalidator
Target version:
-
Start date:
2024-03-23
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
13
PHP Version:
Tags:
Complexity:
Is Regression:
Sprint Focus:

Description

Currently, when calling fetchType for various link types differs if you change the order of the link types.

Also, InternalLinktype always returns "db" link type if the "db" link type is set by the softref parser even if it has no business doing so.

These link types are mutually exclusive:

- "db" => InternalLinktype
- "file" => FileLinktype
- "record" => RecordLinktype (introduced in patch via issue #103403)

However, the softref parsers returns "db" for all of these.

Fixing this may avoid problems further down the line.

Test protocol (by debugging the link types)

file link: t3://file?uid=<uid>
-------------------------------------

$softRefEntry
- value['type'] = 'db'
- value['recordRef'] = 'sys_file:94'
- value['tokenValue'] = 'file:94'

- result of fetchType: (order: db, file)
- if class=InternatlLinktype => AbstactLinktype::fetchType: 'db'
- if class=FileLinktype => FileLinkType::fetchType: 'file'

- after changing order: file,db
- if class=FileLinktype => FileLinkType::fetchType: 'file'
sets $value['type'] to 'file'
- if class=InternatlLinktype => AbstactLinktype::fetchType: 'file'

!!!! discrepancy !!! effective type depends on order of evaluation!

if "file" type is not in "linktypes", file links will be checked with InteralLinktype

BUT if "file" type is in "linktypes, file links will be checked with FileLinktype

The result is in most cases still ok, because InternalLinktype refuses to check file links, but it is messy, makes troubleshooting difficult and may cause problems in some scenarios.

Actions

Also available in: Atom PDF