Feature #12584
Updated by Marc Egger almost 3 years ago
h3. Functional Spec:
* If in any Report or Form there is an occurrence of `id=alias` and the T3 version is higher than 9, then QFQ shows an exception with the following content:
** link to automatically replace all the occurrences with `id=number`
** link to reload and skip this check forever
** Detailed list of each occurrence together with the suggested replacement id
* Once all occurrences where replaced once or the "skip check forever" link was clicked QFQ never shows this exception again.
h3. Technical Spec:
* the following columns are checked for occurrences of `id=alias`
** tt_content.bodytext
** Form.title
** Form.parameter
** Form.parameterLanguageA/B/C/D
** FormElement.label
** FormElement.note
** FormElement.value
** FormElement.sql1
** FormElement.parameter
** FormElement.parameterLanguageA/B/C/D
* patterns which will be replaced
** @href="?id={{pageAlias:T}}@
** @href='?id={{pageAlias:T}}@
** @href="?id=<alias>&@
** @href='?id=<alias>&@
** @href="?id=<alias>"@
** @href='?id=<alias>'@
* The page id for patterns containing @<alias>@ will be found the following way
** search <alias> in column @pages.slug@
*** when migrating from alias to slug underscore "_" was replaced by minus "-" by Typo3 automatically, so search again with "_" replaced in <alias>
** if not found, search in column @pages.zzz_deleted_alias@ if that column exists
** if not found mark <alias> as not found in error message
* Occurrences containing @{{pageAlias:T}}@ will be replaced by @{{pageId:T}}@
* *Question* : should all occurrences of @{{pageAlias:T}}@ be replaced by @{{pageId:T}}@ everywhere even when there is no "href"?
** The page alias will not have any meaning or won't even exist for Typo3 v10
** alternatively we could introduce a new variable @{{pagePath:T}}@. But I don't know how easy it will be to compute that path reliably and I would rather not ask Typo3 to do it...
* If the migration was performed or skipped then the flag @skipAliasMigration@ is added to the comment of the Form table
** The current comment looks like this: @Version=21.5.0a&functionHash=dec0567ea030ed61fe7cee8dbba2a935&functionVersion=20.11.0@
* Variants to check if Typo3 version is higher than 9
** The Typo3 version might be found in a Global variable?
** if not, the symlink in the root folder could be parsed: @typo3_src -> /var/www/typo3_src-8.7.32/@
** or the hacky way it is done in the password hashing function by checking if a certain Typo3 class exists