Releases: in2code-de/in2publish_core
10.2.2 Minor bug fixes
This release fixes minor bugs (typos and PHP warnings).
11.0.0 TYPO3 v11 compatibility
TYPO3 v11 compatibility
Hey people,
with some unscheduled delay compared to our planning, i am happy to present the new major version of the Content Publisher. We have never spent as much time on a release as we did on this one. In addition to countless adjustments for TYPO3 11, we also fixed a lot of bugs that also went back into version 10. We also did a lot for quality assurance. Now, the Content Publisher is tested automatically in a (currently private) CI pipeline with acceptance tests in addition to the existing unit and functional tests. These very elaborate browser-based tests run at least once a week with the latest version of the Content Publisher.
The biggest changes are in the area of layouts. Not only has the rendering been completely adapted for TYPO3 v11, but the Publish Files module is the first module to get a full makeover.
The new module fits much better to the look and feel of the Backend. Also the "Publishing Bag" feature has been added to the Enterprise version, which allows to select and publish multiple files at once.
The filters for files have been revised. We added a search field to filter files by name. The status filters are now applied with immediate effect and are saved much faster in the user session.
As far as code quality is concerned, we have also made great leaps. With the introduction of GrumPHP, every new commit is now checked for style and quality using phpcs, phpcsfixer, phpmd, phpstan and psalm. With the introduction of the tool over 2400 lines of code were adjusted.
10.2.1 Bugfixes, bugfixes, bugfixes,...
🐛 Gotta fix 'em all
Important ones
- Using
foreign_types
in IRRE MM relations is no reason to not support those anymore. The key will be ignored and IRRE relations with MM tables will be supported. - Command registrations are now dependent on the context. Commands only available on Local will only be registered on Local. This fixes an exception in the Scheduler module on Foreign.
- Return correct value in
VoteIfRecordShouldBeSkipped::getCommonRepository
. Fixes exceptions when this events' method is used. - The SysInfo exporter which dumps the config will actually dump the config again.
- Fix variable type in
ReplaceMarkersService
. Fixes exceptions when###
markers with IDs are used in PageTS. - Fix exceptions when localized Records withouth given identifiers are created using a custom Factory.
- Fix exceptions when file preview domains to not contain a path nor scheme.
- Disable ConfigContainer UserTsProvider until the Backend User was loaded. PageTS may contain conditions referring to the BE User group and the evaluation result is cached. This will fix broken PageTS conditions in the Backend.
- Added new event
TaskExecutionWasFinished
. The actual bug occurs in the Enterprise Edition, but you get this event for free 😉 - Support T3 URIs as redirect targets. This will link redirects to pages which are the target defined in that T3 URI. Fixes missing redirect associations (TYPO3 changed the redirect target format)
- Make
RecordFinder
andRecordPublisher
public services. Prevents exceptions in the Publish Redirects module.
Fixes under the hood
- TaskRepository::findByExecutionBegin return type hint and annotation fixed to return the actual type
- Set default values for typed properties which are not injected.
- Fix property name MissingRequiredAttributesException::$requiredAttributes (it's an array but was named
requiredAttributesString
) - Removed superfluous checks for the ToolsController which was refactored some time ago.
- Correctly rethrow exception in the Letterbox. These exception will now contain the actual error again.
- Record properties are sometimes
false
and sometimes[]
and sometimes[false]
. The latter case will not occur anymore. - Prevent exception when files don't exist on foreign. These exceptions have never been seen because they were handled gracefully.
- Fix annotations and type hints for method
EnvelopeDispatcher::getFileObject
10.2.0 SimplifiedOverviewAndPublishing
⚡ SimpleOverviewAndAjax + SimplePublishing = SimplifiedOverviewAndPublishing
in2publish_core (Community Edition) had a feature called "SimpleOverviewAndAjax", which replaced the full fledged comparison by a shallow page scan. With that feature enabled, the Publish Overview Module loads faster, but does not show all changes anymore. The publishing however, does build the complete record tree, so nothing will be missed when publishing a page.
The Enterprise Version includes a feature that builds on top on SimpleOverviewAndAjax which is called "SimplePublishing". Simple Publishing hooks into the publishing process and instead of building the complete record tree, it takes the page record built by SimpleOverviewAndAjax and attaches all records to the page record (and resolves some MM records attached to those content records).
The division into two features in two extensions makes configuration complicated and testing time-consuming.
Furthermore, both features are not optimally implemented and leave much room for improvement.
We decided to merge both features and give an enterprise edition feature to the community. The new feature is called SimplifiedOverviewAndPublishing.
This feature, when activated, replaces the normal process of assembling the record tree. This means that like SimpleOverviewAndAjax, the view in Publisher Overview will load faster, but unlike the previous feature, all elements and MM records are already included in the view. Loading the details of a page is no longer necessary.
When publishing, unlike SimplePublishing, the record tree is not extended by any records, but the same record tree is published that is also visible in the publish overview module. this means that there are no more surprises when publishing.
The performance gain of this feature ranges from a few seconds to minutes, depending on the page and page tree size. Most tests have shown that this feature represents a 10-fold speedup compared to the original and an 8-fold speedup compared to the old features.
You can enable this feature by replacing the default record finder as documented here: https://github.com/in2code-de/in2publish_core/blob/develop/Documentation/Features/SimplifiedOverviewAndPublishing.md
In case you use one of the old features, an automatic configuration migration enables the feature. The Publish Tools Tests tell you if a migration tool place.
10.1.1 TATAPI test and subfolder
This bugfix release contains two changes, both concerning the Temporary Asset Transmission API (TATAPI):
- The test testing the chosen TATAPI adapter will now test if the adapter actually transmits the file. This has been the responsibility of the adapters themselves but was ported to in2publish_core.
- The TATAPI folder was
typo3temp
but is nowtypo3temp/tx_in2publishcore
. TATAPI adapters must create the folder if necessary. This change allows mounting typo3temp or symlinking the tx_in2publishcore folder, e.g. if using secure-web.
10.1.0 Pave the way to v11 - Tasks API / Redirects Filter / Admin DB Compare Tool
Pave the way to v11
We are moving towards compatibility with TYPO3 v11 with big steps. Some of those bugfixes and changes can be made in the in2publish_core 10.x version, so we actually implement these changes in the current develop. After this release, the 11.x version will divert from the 10.x version, because it contains UI changes which can only be made in TYPO v11.
Changes for both versions will be commited in the upcoming TYPO3-v10 branch and merged into develop/TYPO3-v11.
✨ Changes/Features
- Refactored the Task API into a consolidated component with its own service config
- Remove obsolete tasks from the task table after task execution
- Add filters to filter redirects in the Publish Redirects module
- Add admin tool to compare the local and foreign database on a simple row-based level
🐛 Bugfixes
- Defer initialization of the
TcaProcessingService
to be able to log errors - Fixed root path detection in the script that runs the automated tests, so it works on darwin hosts, too.
- Fixed the highlighting of the currently selected tools module in the Publish Tools Module
- Allow the SysRedirect siteID to be null (this error was not visible, though)
- Identify all fields which identify MM Records and use these fields as array indices (Otherwise, MM records with identical uid_local/uid_foreign values always overwrite each other)
- 🤹 More type juggling. Converts identifiers to
int
. - Split the service configuration of features into separate files to disable the logs integration when EXT:logs is not present
🤖 Tests
- Added new functional tests to assert that relations with
type=select
are resolved and published
🧹 Cleanups
- Removed some unused files (phpunit.xml.dist)
- Removed unused imports in various places
- Removed remnants from codeception
9.5.3 Unscheduled bugfix for redirect publishing
This unplanned release contains bug fixes for the Redirect Publishing functionality.
9.5.2 Unscheduled sys_domain fix for TYPO3 v9
This release contains fixes an issue with sys_domain record processing in TYPO3 v9.
10.0.0 Events, Services, dropped TYPO3 v9, automated testing
This release supports TYPO3 version 10 only. If you still run TYPO3 v9 consider updating.
Version 10, a milestone
Like every major release, this one also contains some breaking changes.
We have removed support for TYPO3 v9 because this version is no longer officially supported. At the same time, this enabled us to make some far-reaching changes, such as converting signal slots to events, using dependency injection and declaring central components as services.
Here's the breakdown of all changes.
TYPO3 v9 support removed.
As communicated in the documentation "A current TYPO3 LTS version (not ELTS!)." and communicated in the official Content Publisher channel in the TYPO3 Slack, we have removed the support for TYPO3 v9.
The branch in2publish_core 9.x will no longer receive regular updates.
The branch in2publish_core 10.x is incompatible with TYPO3 v9. Backward compatibility is not possible.
Events
TYPO3 v10 integrates one more component of the Symfony Framework, the event component. This enabled us to replace the clunky implementation of the signal slots in extbase with the DI-Container based fast and lean event system.
For our users which rely on signals to implement their additional publishing logic, we've added a backward compatibility layer for signals (only for signals and only for in2publish_core v10). You can still use the old signals, but you have to upgrade to event listeners before you upgrade TYPO3/in2publish_core to v11.
Here's a comprehensive list of all signals and the events, which replace the signals: https://github.com/in2code-de/in2publish_core/blob/develop/Documentation/Upgrade/Upgrade_v9_to_v10.md
Events not only make it easier to get your code to interact with the Content Publisher, they are also much faster.
Services
Another feature which was introduced with TYPO3 v10 is the dependency injection container, another Symfony Framework component.
We're using the service definition to define factories for different services, such as the local and foreign database connection, which are now injectable. You don't need to use the DatabaseUtility
anymore. Please keep in mind, that an exception will be thrown if you try to inject a connection which is unavailable. (This meas you must not inject connections in classes which will always be loaded, because it will leave your backend in an unusable state.)
Another possibility is the dynamic registration of services in the Services.php
file which will remove some conditions from the ext_tables.php
file, making the TYPO3 booting mechanism a bit more efficient.
Automated testing
Tests only make sense if they are actually carried out. That's why we've restructured our tests so that they run in GitHub Actions. They run with every push into the repository and daily on a scheduled basis. The latter is intended to ensure compatibility with 3rd party libraries, which are updated independently.
The test run for this release can be found here: https://github.com/in2code-de/in2publish_core/actions/runs/1270426719
Other changes
- The deprecated method
modifyConfiguration
was removed fromAbstractTask
. The Task should be constructed with the correct configuration. - Communication adapters don't need to implement the constructor anymore, that being said, they can use the constructor for dependency injection. All Adapters are made public automatically, so no additional configuration in the services configuration is required.
- We require at least
doctrine/dbal
2.11.0. This does correspond to TYPO3's minimum requirement, which is 2.10. Doctrine DBAL changed the way how query results are fetched and we incorporated the new API as our standard. - Type hints everywhere. All parameters which can have a type hint got one, as well as method return type hints. This might break you existing code because of violations of the Liskov Substitution Principle which PHP enforces. Updating your code should be an issue of minutes (Harness the power of your IDE!)
Trivia
382 files changed, 9424 insertions(+), 11751 deletions(-)
9.5.1 TSconfig markers in FlexForms
This release is the last regular release in the 9.x branch.
TYPO3 v9 support has ended. TYPO3 v11 support will begin with the in2publish_core 11 release.
🐛 Bug fixes
- TSconfig markers in FlexForms
additionalWhere
-parts are now supported. - Exceptions which arise from invalid foreign database credentials will be caught before leaving the system in an unusable state.
- Some FAL drivers do not meticulously replicate the default driver's behavior which led to errors during publishing. in2publish_core is now less picky about the return values of those drivers.