Releases: in2code-de/in2publish_core
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.
8.6.0 Performance and bugfix backports
This unscheduled TYPO3-v8 release is an exception.
In this release I have backported the latest performance features from the current version, as well as a few bug fixes.
9.5.0 Performance, sorting publishing, cleanups and fixes
🚀 🚀 🚀
I've got something great for you. Really! It's this release. As you might have guessed from the new version number, this is a feature release and those features are damn yummi 😋
But first, let's see which nags have been addressed.
🐛 bugs zapped:
- Fixed the parent record association of records fetched as translation
- Use
=
instead ofLIKE
for constraints only containing Numerals (#84 thanks to @friggingee) - Use already existing records when searching for records by a single identifier
- Removed some loggers which did not log anything useful
- Only add fields to sys_redirects when EXT:redirects is active
- Do not try to process files which do not exist (Root cause still to be fixed 😑)
✨ Feature time!
Now for those nice features i promised you. To be honest, the first feature is hidden inside the second bug fix, which alters the queries depending on the values used in the constraints. Simply using a =
instead of LIKE
can speed up your application because the database does not have to convert a whole table column to string first and neglect the index. I've measured between -3% and -44% execution time for the Publish Overview Module. This is simply awesome!
Next up: "Respect rootLevel, allowedTables and skip empty tables or missing PIDs"
Oh yeah, this is party a bug fix, partly a feature. Developers know, that TYPO3 has different mechanism which allow or deny specific kinds of records to be created and stored on specific pages or places in the page tree. The content publisher did not adhere to these rules when searching for records stored on pages, which resulted in a vast number of queries which could have been avoided easily. These rules are known as the rootLevel
restriction and allowedTables
depending on page types.
Additionally, the content publisher will peek into tables which are queried. With the information gathered by peeking into the table, the content publisher can now decide to skip further queries to that table because it is either empty or does not contain a special value (the searched PID). This feature reduces even more superfluous queries, which would not yield any result.
The last big change is called "publishSorting". This feature will watch the publishing process and detect changes in the order of published pages and records. If a change was detected, the publish sorting feature will publish the sorting of all records which are affected by this sorting change (but no other property of said records). This will help to maintain the order of records without having to manually publish all records affected by that sorting change.
9.4.0 Redirects Support
Hey there. I am proud to announce a new Content Publisher feature release.
We have developed a new feature and included several bug fixes. See the list below:
Features
Redirects Support
A new optional extension EXT:redirects has been created for TYPO3 v9 that allows editors to create redirects.
In TYPO3 v10, this extension has been further integrated into the core by e.g. automatically creating redirects when the slug of a page changes.
Since editors expect the Foreign System to behave like Local, these redirects must also be published.
The difficulty here is that redirects are usually restricted to one domain, which is different on the remote system. To resolve this difference, the content publisher changes the domain to match the domain on the remote system when publishing the redirect.
It is also possible to publish single redirects with the new Redirects Module.
The documentation will tell you more about it: https://github.com/in2code-de/in2publish_core/blob/develop/Documentation/Features/RedirectsSupport.md
Deletion state changes
Records in the Publish Overview Module which are deleted did not show any changed record properties. We changed this, so that editors at least see the change of the deleted flag.
Important bug fixes
- Esure to publish the default language version of a translated page (for SRP [EE], Workflows [EE] and Publish Overview)
- Share the RecordFactory's runtime cache (this might increase the performance of the Publish Overview Module in some cases)
- Added a new test to the Publish Tools Module Tests to assert that the site configuration contains identical language configurations.
Bug fixes
- The attached extension ZIP will not contain the Build folder anymore
- Assert that the table sys_domain (only TYPO3 v9) exists before querying it
- Add PID detection for new records
- Add missing colored rectangle if the Overview Module to reduce layout shifts for records in a certain state
- Do not throw an exception if the rootline of a page can not be found if the page is disconnected from the page tree (The parent page does no exist)
- Ensure that string function arguments have the correct type (in
replaceGeneralMarkers
) - Skip redirects support if EXT:redirects is not installed
- Don't try to create URLs to deleted pages (TYPO3 can't do that)
- Never relate sys:records to pages based on their PID
- Added missing unique exception code
- Provide missing icons in TYPO3 v9
- Allow deleted redirects to be published