Extension to facilitate import from PIM to TYPO3 records.
- Typo3 version 12.4 or higher
- Typo3 in composer mode
- PHP version 8.1 or higher
- Installed typo3/cms-scheduler package:
composer require typo3/cms-scheduler
Version | TYPO3 | PHP | Support/Development |
---|---|---|---|
6.x | 12.x | 8.1 - 8.3 | Features, Bugfixes, Security Updates |
5.x | 7.6 - 8.7 | 5.5 - 7.2 | Support dropped |
Please refer to the Migration Guide document included in this repository.
Assuming that you put all of the above components together correctly, running the import CLI command should cause the following chain of events to occur:
- Each
Server
is iterated - Each
Module
from eachServer
is iterated - The PIM API is queried using the credentials and configuration from
Server
andModule
- A list of events are received and spooled
- The events are claimed and processed one by one, performing one of either
update
ordelete
actions (note:create
is compounded intoupdate
since ad-hoc creation happens) - If successful, all properties received from PIM are mapped onto the Entity properties and saved to the database.
- If any errors should occur, feedback is output identifying the source of the problem.
The following hints may help developers avoid pitfalls when working with this logic:
- Reflection is widely used and registration happens in extension config files, and both
of these asset types are quite eagerly cached by TYPO3. The cache group that contains
both of these caches is the
system
one which is normally hidden unless you are inDevelopment
context or the system cache flushing was explicitly allowed for your user. - Even though
TypeConverts
are used, Extbase's validation logic is not triggered. This means you can potentially save values in the DB that cause loading of the Entity to fail if for example it is passed as argument to a controller action (unless you disable validation for the argument in the controller action itself). - TYPO3 contains
TypeConverters
for standard types which may not be possible to override. Should you experience problems with this, it is possible to remove an already registeredTypeConverter
directly from theTYPO3_CONF_VARS
array but this is strongly discouraged. If a givenTypeConverter
is unable to convert a value, consider wrapping said value in a ValueObject you attach to your Entity, then create aTypeConverter
that converts to that type of ValueObject. - As far as humanly possible, try to adhere to the best practice described above and make
your Entity as close to the PIM column structures as you can. Overriding any of the logic
of the mapping classes or
TypeConverter
base class may cause vital features to stop working, e.g. could prevent proper handling of relations. The less you customise, the more likely it is that the default rules will handle your object types with no problems.