Breaking: Removed the profile switcher plugin
Description
The content element academicpersonsedit_ is no longer
registered. It cannot be selected any more, and the content elements that
still use it are removed by an upgrade wizard.
This is a cleanup that was missed in 2.1, not a change of behaviour.
Background
The profile switcher used to be a real Extbase plugin. It let a frontend user pick one of their profiles, stored that choice in the session, and the profile editing plugin then worked on the chosen profile.
Version 2.1 restructured the frontend editing and replaced that concept:
the profile editing plugin now lists every profile of the logged in user
and links each one directly, so there is nothing left to switch between.
The restructure removed the plugin registration, both controller actions
(show and execute), the templates and the
whole "active profile" infrastructure around it — the request middleware,
the context aspect and the session handling.
What it did not remove was the content type registration. So since 2.1 the element has been offered to editors while nothing rendered it: there is no plugin configuration, no controller action and no TypoScript behind it. Selecting it produces an empty content element.
The same release also migrated the plugins from list_ to CType
(see Breaking: Migrated extbase plugins from list_type to CType) and
carried the dead type along, which is why leftover records exist in two
different shapes today.
Upgrade wizard
The upgrade wizard "Remove content elements of the removed
academic_persons_edit profile switcher plugin"
(academic) sets the affected
content elements to deleted. It covers both shapes:
CType=academicpersonsedit_— records of an installation that ran theprofileswitcher list_totype CTypemigration while it still carried this type along.CType=listwithlist_=type academicpersonsedit_— records of an installation that never ran that migration. TYPO3 v14 removed theprofileswitcher list_column, so this shape is only looked for when the column exists.type
The records are set to deleted, not removed from the table, so they stay visible in the recycler and can be restored if an installation wants to look at them before they are finally discarded.
The list_ to CType migration no longer migrates this plugin. A
record that has not been migrated yet therefore stays in its legacy shape
until the wizard above deletes it, instead of being moved onto a content
type that does not exist.
Impact
The content element cannot be selected any more, and existing elements of it are deleted by the upgrade wizard.
No rendered output changes. These elements have rendered nothing since 2.1, on every page they sit on, so removing them cannot change what a visitor sees. What changes is the backend: the type is gone from the content element type list, and any element the wizard has not deleted yet is shown with an "INVALID VALUE" badge in the page module instead of looking like a working plugin.
Affected Installations
All installations using the EXT: extension that
still have content elements of the profile switcher plugin — either as
CType or as a legacy list_ record.
Installations that never used the plugin are not affected. The upgrade wizard reports nothing to do for them.
Migration
Run the upgrade wizard in the Install Tool, or on the command line:
vendor/bin/typo3 upgrade:run academicPersonsEdit_removeProfileSwitcherContent
To see which records are affected before running it:
SELECT uid, pid, header, CType FROM tt_content
WHERE deleted = 0 AND CType = 'academicpersonsedit_profileswitcher';
-- TYPO3 v13 and below, for records that were never migrated:
SELECT uid, pid, header, CType, list_type FROM tt_content
WHERE deleted = 0 AND CType = 'list'
AND list_type = 'academicpersonsedit_profileswitcher';
There is no replacement to migrate to. The profile editing plugin lists all profiles of the logged in user by itself, which is what the switcher was there for.