Bug #103476
openDisrepancy of returned link type in LinktypeInternal::fetchType
0%
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!
BUT if "file" type is in "linktypes, file links will be checked with FileLinktypeif "file" type is not in "linktypes", file links will be checked with InteralLinktype
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.