- 02 Dec, 2021 1 commit
-
-
Resolves: #96207 Related: #93038 Releases: main Change-Id: I8dcaf6ccae3f88ee459ebf65147018ce89e4f8fc Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/72466 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Stefan Bürk <stefan@buerk.tech> Tested-by:
Benni Mack <benni@typo3.org> Tested-by:
Oliver Bartsch <bo@cedev.de> Reviewed-by:
Stefan Bürk <stefan@buerk.tech> Reviewed-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Oliver Bartsch <bo@cedev.de>
-
- 24 Nov, 2021 1 commit
-
-
Christian Kuhn authored
This fixes issues regarding sys_refindex handling when dealing with workspace mm relations. Various DataHandler tests run with disabled refindex check after performing mm related operations. All those are enabled now, so all known issues in this area are fixed. The patch touches various areas in DataHandler, ReferenceIndex and RelationHandler to achieve this. The key changes are triggered by a database scenario that is unique for mm relations. Usually, when creating a workspace record or overlay, child record overlays (for instance inline children) are also created in this workspace. For mm records, this can be different: When the local or foreign side of a record is created in a workspace, it does not necessarily mean that a connected opposite side is also created as workspace overlay. This would otherwise create the need for a recursive operation that would basically end up with "everything" being created as workspace overlay. However, mm table entries are created for these relations, leading to a situation that a workspace record can point to a non-workspace record through the mm table. Reference index entries for mm table connections are always handled from the 'local' side. For instance, with categories, 'sys_category' table is the local side, with 'pages', 'tt_content' and others being the foreign side. If now one of the records on the foreign side gets a workspace overlay record, sys_refindex rows of all connected records of the affected local side need to be created. This can lead to the funny situation that we end up with refindex rows that point from a non-workspace to a non-workspace record, but have a non-0 workspace entry. Those additional rows are needed to have "the full set" and proper sorting when looking at refindex of such a relation from the local side. The patch basically handles especially these 'foreign side has a workspace overlay' scenarios, plus the side effects that have to be taken care of when discarding and publishing these records. Additionally, a couple of side effects are tackled: First, the ReferenceIndex->updateIndex() - that's the main logic when running cli referenceindex:update command - is tuned to drop reference index entries related to meanwhile deleted workspaces. This is covered with additional tests and is done now since the code needs to iterate over existing workspaces for local-side mm records that may have workspace overlays on the foreign side. So most of the code had to be created now anyways. RelationHandler->readMM() receives a fix for a long standing bug (Issue #83582, introduced by #57169), to no longer show workspace relations in live when looking at local-side records, for instance when looking at category items in live when one of the connected items has a workspace overlay. Next to lots of comments explaining details in place and referencing the test cases that nail specific scenarios, a couple of @todo's are added to point out things we may want to tackle in the future. All in all, the patch resolves a series of issues that will especially lead to 'categories' being much more reliable in workspaces. Change-Id: I24407f93665852fa761f6fbe6c5ab249473468d2 Related: #57169 Resolves: #83582 Resolves: #96067 Releases: master, 11.5 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/72250 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Benni Mack <benni@typo3.org> Tested-by:
Stefan Bürk <stefan@buerk.tech> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Stefan Bürk <stefan@buerk.tech> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch>
-
- 12 Oct, 2021 1 commit
-
-
The (ugly) statement strpos($haystack, 'needle') !== false can be safely replaced with str_contains($haystack, 'needle'). This is possible, as a symfony polyfill for php 8.0 functions is in place. Resolves: #95466 Releases: master Change-Id: I313f47832a254c23c6815b6b44557a01019e59e7 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/71429 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Simon Schaufelberger <simonschaufi+typo3@gmail.com> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Simon Schaufelberger <simonschaufi+typo3@gmail.com> Reviewed-by:
Wouter Wolters <typo3@wouterwolters.nl> Reviewed-by:
Benni Mack <benni@typo3.org>
-
- 30 Sep, 2021 1 commit
-
-
Most common use case for TCA type "group" fields is the usage of "internal_type=db". Therefore, this option is now the default value. This allows to simplify corresponding parts in FormEngine, Datahandler, etc. Furthermore are all Core TCA files adjusted and do no longer define this option for type "group". Resolves: #95384 Releases: master Change-Id: I3ab8c505e5512a2d574ed52af1b3943f0243011d Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/71186 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Nikita Hovratov <nikita.h@live.de> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Nikita Hovratov <nikita.h@live.de> Reviewed-by:
Benni Mack <benni@typo3.org>
-
- 24 Sep, 2021 1 commit
-
-
Benni Mack authored
The rule trailing_comma_in_multiline is added to the PHP CS fixer configuration. This reduces possible merge conflicts in the future. The commands to apply the rules over the code base was ./bin/php-cs-fixer fix \ --path-mode intersection \ --config=Build/php-cs-fixer.php \ typo3/sysext And then: ./bin/php-cs-fixer fix --config=Build/php-cs-fixer.php Resolves: #94553 Releases: master Change-Id: I0ebbfa9edbbcde19aaeb44219a71f2f093ab705e Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/69825 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Andreas Fernandez <a.fernandez@scripting-base.de> Tested-by:
Wouter Wolters <typo3@wouterwolters.nl> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Andreas Fernandez <a.fernandez@scripting-base.de> Reviewed-by:
Wouter Wolters <typo3@wouterwolters.nl> Reviewed-by:
Benni Mack <benni@typo3.org>
-
- 17 Sep, 2021 1 commit
-
-
Christian Kuhn authored
Methods FlexFormTools->getArrayValueByPath() and FlexFormTools->setArrayValueByPath() have well test covered counterparts in ArrayUtility since v7. Usages can be adapted easily and the outdated implementations can be deprecated. Change-Id: Ieb40369c883b95f6c7cc398cfdab3a9a08054b8f Resolves: #95254 Releases: master Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/71112 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Benni Mack <benni@typo3.org> Tested-by:
Jochen <rothjochen@gmail.com> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Jochen <rothjochen@gmail.com> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch>
-
- 12 Aug, 2021 1 commit
-
-
The concept for registration and usage of soft reference parsers received a complete overhaul. Starting with the registration, it is now possible to register soft reference parsers by dependency injection in the extension's Services.(yaml|php) file. For this, the new tag name "softreference.parser" has been introduced. One has to provide the additional attribute "parserKey" to identify the parser. This replaces the old way of registering these parsers in the $GLOBALS array. If a parser is registered with the same key in both ways, the old way takes precedence for b/w compatibility. This comes with a completely new factory service class TYPO3\CMS\Core\DataHandling\SoftReference\SoftReferenceParserFactory. This classes' responsibilities are collecting all registered soft reference parsers and serving them to the consumer by calling the method "getSoftReferenceParser" with the desired parser key as the only argument. There is a compatibility layer for the old way of registration and for classes not implementing the new interface. Soft reference parsers now have to implement TYPO3\CMS\Core\DataHandling\SoftReference\SoftReferenceParserInterface. The interface defines the implementation of the "parse" method. The first 4 and the last parameter stay the same as in the old method "findRef". The remaining two parameters "spKey" and "spParams" have to be set with the "setParserKey" method, if they are needed. The key can be retrieved by using the "getParserKey" method. The different parser implementations in the old class TYPO3\CMS\Core\Database\SoftReferenceIndex have been extracted and moved into dedicated classes in the TYPO3\CMS\Core\DataHandling\SoftReference namespace. Missing tests for parsers other than "typolink" and "typolink_tag" are added. The method makeTokenID of SoftReferenceIndex has been moved into TYPO3\CMS\Core\DataHandling\SoftReference\AbstractSoftReferenceParser. A parser can extend this abstract class, if this method is needed. The methods of BackendUtility "softRefParserObj" and "explodeSoftRefParserList" are now deprecated and the replacement TYPO3\CMS\Core\DataHandling\SoftReference\SoftReferenceParserFactory should be used instead. Resolves: #94687 Resolves: #94741 Releases: master Change-Id: I460bfdd4478194fa4b4111fc44871f7225c6c084 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/70177 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Oliver Bartsch <bo@cedev.de> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Oliver Bartsch <bo@cedev.de> Reviewed-by:
Benni Mack <benni@typo3.org>
-
- 02 Aug, 2021 1 commit
-
-
A new TCA type "category" is introduced, which allows to simplify the configuration of category TCA columns. Besides the benefit for integrators, this allows to deprecate the CategoryRegistry in the next step. The new type can also be used for other use cases. Therefore, the TCA option "relationship" is available for this TCA type. Besides "manyToMany" (default), this can also be set to "oneToOne" or "oneToMany". Using the new type, FormEngine will always render a category tree. This means, no additional `renderType` is defined. In such case, TCA type "select" can still be used as before, without any limitation. However, all relevant places in core are adjusted in this patch. The category element is rendered through a custom element (web component), reducing inline javascript. Resolves: #94622 Releases: master Change-Id: I1b95c42288b070fa6bac114266f5ad246a045b21 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/69899 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Benni Mack <benni@typo3.org>
-
- 29 Jul, 2021 1 commit
-
-
This change migrates $result->fetch() methods to $result->fetchAssociative() and $result->closeCursor() to $result->free() methods. Since TYPO3 uses fetchMode "associative" by default when setting up the connections, this change is another step towards Doctrine DBAL 3.0 compatibility. Resolves: #94659 Releases: master Change-Id: Idce7c8466925a6e58059e7e16ebc3ffe35ca6fa6 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/70125 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
Oliver Bartsch <bo@cedev.de> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Oliver Bartsch <bo@cedev.de>
-
- 22 Jul, 2021 1 commit
-
-
This change replaces all query results from the database from fetchColumn() to fetchOne(), as this is the new API used in Doctrine DBAL. This change is one of a few to prepare for Doctrine DBAL 3.0 compatibility. Resolves: #94605 Releases: master Change-Id: Ia9ca2bbb7b2c16a230c5946941cc3023203f494d Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/69917 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
Oliver Bartsch <bo@cedev.de> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Oliver Bartsch <bo@cedev.de>
-
- 08 Jul, 2021 1 commit
-
-
Add fallback for undefined array keys to make "DB Check" compatible with PHP8. Also basic tests have been added to check each page in the module. Resolves: #94498 Releases: master Change-Id: I98a598d0e809077cd89e7620efe31a498b3fbfa1 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/69759 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Benni Mack <benni@typo3.org> Tested-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Reviewed-by:
crell <larry@garfieldtech.com> Reviewed-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Anja Leichsenring <aleichsenring@ab-softlab.de>
-
- 16 Jun, 2021 1 commit
-
-
PSR-3 has specific rules around interpolation: Messages may provide placeholders like {foo} and writers should substitute these in the messages if a context array with such a key is provided. Let's use placeholders correctly. Resolves: #94315 Related: #94356 Releases: master Change-Id: I2c285e84f1832c80828861369e99af9aff6cd267 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/69425 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch>
-
- 14 May, 2021 1 commit
-
-
PHP 8 promotes a lot of notices (previously ignored) to warnings. That means they can no longer be ignored. Resolves: #94057 Releases: master Change-Id: I37de1b7e8e31eb2be78b8e90af015bc88e121791 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/69012 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Andreas Fernandez <a.fernandez@scripting-base.de> Tested-by:
Oliver Bartsch <bo@cedev.de> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Andreas Fernandez <a.fernandez@scripting-base.de> Reviewed-by:
Oliver Bartsch <bo@cedev.de> Reviewed-by:
Benni Mack <benni@typo3.org>
-
- 08 Mar, 2021 1 commit
-
-
PHP 8 throws warning level errors instead of notice level errors when an not existing array key is accessed. The patch fixes another batch of this kind of issues found by functional tests. Resolves: #93675 Releases: master Change-Id: I88e2a0a28af21a95b9ec3e74c7449d9cdc7a23bc Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/68234 Tested-by:
Jochen <rothjochen@gmail.com> Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Richard Haeser <richard@richardhaeser.com> Reviewed-by:
Jochen <rothjochen@gmail.com> Reviewed-by:
Richard Haeser <richard@richardhaeser.com>
-
- 02 Mar, 2021 1 commit
-
-
Change-Id: Ib1e08417a716882e8c354da92d090efdb6924dc7 Resolves: #93632 Releases: master Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/68160 Tested-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Richard Haeser <richard@richardhaeser.com> Reviewed-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Reviewed-by:
Richard Haeser <richard@richardhaeser.com>
-
- 22 Jan, 2021 1 commit
-
-
This reverts commit 84948b2c. The strategy to not have reference index entries for workspace delete placeholders does not work out (for now): * Workspace ElementEntity class relies on it and is used by DataHandler during workspace operations. * Patch was incomplete: While rows 'from' affected records were dropped in refindex, rows 'to' affected records were left. We may later pick this up again, but need more refactoring. Change-Id: I19b36d011b3cae2c3c17763ace8e5ff22f8dfe9b Resolves: #93285 Reverts: #93274 Releases: master Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/67413 Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Benni Mack <benni@typo3.org>
-
- 12 Jan, 2021 1 commit
-
-
The reference index can be seen as a 'cache' for consuming application parts other than the DataHandler, which does not rely on it's state but keeps it updated. From this point of view, workspace delete placeholders (t3ver_state=2 records) should not have reference index entries: The delete placeholder is just a marker that a specific live record is slated for deletion upon publish. It does not carry relation information on it's own. The patch changes reference index code to not consider relations for workspace delete placeholder records. Change-Id: I0a1fd490c4133e7ce92a53ebd4413cc7b43b1d58 Resolves: #93274 Releases: master Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/67396 Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Tested-by:
Richard Haeser <richard@richardhaeser.com> Reviewed-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Reviewed-by:
Richard Haeser <richard@richardhaeser.com>
-
- 14 Dec, 2020 2 commits
-
-
Christian Kuhn authored
A 'true' MM relation (select / group with MM, but not inline with foreign_field - used in core for pages/tt_content table to sys_category via sys_category_record_mm) has two sorting fields: 'sorting' for the local (sys_category) side, and 'sorting_foreign' for the foreign (pages / tt_content) side. When categories are added to a tt_content element, 'sorting_foreign' is set to the given order of sys_category elements. 'sorting' is set to 0. When then opening a sys_category record that has multiple records pointing to it with 0 as sorting, the returned order of records is non-deterministic and depends on implicit DB engine fallbacks. This also confuses the reference index, which checks refindex integrity always from the 'local' side. The patch adds 'uid_foreign' as second order-by field to force deterministic ordering. There is still a possible collision in multi table relations (more than one foreign table uses the mm table like pages AND tt_content to sys_category with foreign records having the same uid) and if the mm table allows "multi" relations. Those scenarios however have no explicit TCA configuration (only implicit via MM_match_fields), need a deeper investigation and possibly further detail patches later. The patch should for now fix a functional test that is flaky with postgres. Change-Id: I3c89d0e67f8a4065354f9df173020ca0080e0d57 Resolves: #93075 Releases: master, 10.4 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/67110 Reviewed-by:
Andreas Fernandez <a.fernandez@scripting-base.de> Reviewed-by:
Oliver Bartsch <bo@cedev.de> Reviewed-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Oliver Bartsch <bo@cedev.de> Tested-by:
Benni Mack <benni@typo3.org> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch>
-
In preparation for Doctrine DBAL 3.0, 1. all usages of Doctrine\DBAL\DBALException have been migrated to Doctrine\DBAL\Exception, because DBAL Exception does not exist in Doctrine 3.0 anymore. 2. Doctrine\DBAL\Platforms\PostgreSqlPlatform has been migrated to Doctrine\DBAL\Platforms\PostgreSQL94Platform because this class does not exist anymore in Doctrine DBAL 3.0, same goes for Doctrine\DBAL\Platforms\SQLServerPlatform which has been replaced by Doctrine\DBAL\Platforms\SQLServer2012Platform 3. Doctrine\DBAL\Driver\PDOException has been renamed to Doctrine\DBAL\Driver\PDO\Exception 4. Doctrine\DBAL\Driver\PDOStatement has been renamed to Doctrine\DBAL\Driver\PDO\Statement Resolves: #93071 Releases: master Change-Id: I05e82f2fca09eb7718a90c09f95e503980ae10ae Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/67109 Tested-by:
Oliver Bartsch <bo@cedev.de> Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Oliver Bartsch <bo@cedev.de> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch>
-
- 09 Dec, 2020 1 commit
-
-
* Since introduction of class ReferenceIndexUpdater each record is handled only once when updating the reference index. The record runtime cache is obsolete and can be dropped. * The $excludedTables and $excludedColumns properties are non-static now: In normal operation only one instance of ReferenceIndex class is created and used for many records, there is no point in creating hard to evict static state. * A runtime cache has been used for information derived from TCA (no db calls). This is dropped in favor of a class property. Change-Id: I5cf16e38ec8f36dfa838cdbc6591b59b463be3f9 Resolves: #93038 Releases: master Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/67076 Tested-by:
Oliver Bartsch <bo@cedev.de> Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Oliver Bartsch <bo@cedev.de> Reviewed-by:
Benni Mack <benni@typo3.org>
-
- 08 Dec, 2020 1 commit
-
-
Keeping relation information for soft deleted records in sys_refindex is quite useless: When records are undeleted, the reference index is updated to recreate rows. Additionally, the deleted handling was incomplete, especially if a record on the 'right' side of the relation got deleted. The patch drops the deleted field from the table and prevents adding relations for soft deleted rows. Furthermore, visibility of a couple of properties and methods is changed to protected and a series of not used methods is removed. Note the hash sums change due to the removal of the deleted field. The CLI command "bin/typo3 referenceindex:update" will update hashes and will drop obsolete deleted rows. Change-Id: I58d7a904a6b4c555529b7c70e45d56ccb498f77f Resolves: #93029 Releases: master Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/66968 Tested-by:
Oliver Bartsch <bo@cedev.de> Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Oliver Bartsch <bo@cedev.de> Reviewed-by:
Benni Mack <benni@typo3.org>
-
- 20 Nov, 2020 1 commit
-
-
It seems the DynamicReturnTypePlugin for PhpStorm does not deal with 'self::class'. Change a couple of makeInstance() calls to hint for the returned object. Resolves: #92876 Releases: master Change-Id: I2cd2ad28dcd4e3baba641bdbc0dbdbc50d6bde9d Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/66699 Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Oliver Bartsch <bo@cedev.de> Tested-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Reviewed-by:
Mathias Brodala <mbrodala@pagemachine.de> Reviewed-by:
Oliver Klee <typo3-coding@oliverklee.de> Reviewed-by:
Oliver Bartsch <bo@cedev.de> Reviewed-by:
Anja Leichsenring <aleichsenring@ab-softlab.de>
-
- 12 Nov, 2020 1 commit
-
-
Benni Mack authored
Creating a new record in a workspace adds two database rows. One that is the "placeholder", which - since v10.4 - contains the same metadata as the other record: * t3ver_wsid = workspaceID * t3ver_oid = 0 (simulating behavior of an "online pendant record") * t3ver_state = 1 And the "versionized" record, identified by: * t3ver_wsid = workspaceID * t3ver_oid = uid of the new placeholder record * t3ver_state = -1 As of TYPO3 v10, the first record is not needed anymore, the versioned record can be queried directly, however, since the relations (except MM) point to the placeholder record, this one is kept. As result, only one record is created from now on: * t3ver_wsid = workspaceID * t3ver_oid = 0 (no online counterpart) * t3ver_state = 1 On reading, the record is queried directly (no overlay needed anymore!) with the existing Database Doctrine Restrictions. On publishing, the record just gets the state/stage/wsid set and is "live". This brings fundamental benefits: * No overlays needed when querying * Fewer database records (placeholders are not helpful) * Conceptual problems with placeholder and shadowed fields are removed Resolves: #92791 Releases: master Change-Id: I0288cc63fe72d8442d586f309bd4054ac44e829b Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/65587 Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
Oliver Bartsch <bo@cedev.de> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Oliver Bartsch <bo@cedev.de> Reviewed-by:
Benni Mack <benni@typo3.org>
-
- 29 Oct, 2020 1 commit
-
-
This patch fixes incompatible type usage in function arguments and is preparatory work for introducing native type hints and strict mode in all core files. Releases: master, 10.4 Resolves: #92273 Change-Id: Ifb45f980a08efd79f5e3f288e0f20e1ac283e1f0 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/65664 Tested-by:
Daniel Goerz <daniel.goerz@posteo.de> Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Daniel Goerz <daniel.goerz@posteo.de> Reviewed-by:
Oliver Klee <typo3-coding@oliverklee.de> Reviewed-by:
Benni Mack <benni@typo3.org>
-
- 12 Oct, 2020 1 commit
-
-
Workspaces ("Element-based versioning") previously had - due to the "pid=-1" logic until TYPO3 v10 - a so-called "MOVE PLACEHOLDER". This was indicated by t3ver_state = 3, all relevant fields: * t3ver_state = 3 (move placeholder) * t3ver_oid = 0 no connected live record, it allowed fetching these records with one query together with live records as db restrictions t3ver_oid > 0 * t3ver_wsid = workspace UID * t3ver_move_id = UID of the live record * pid = new PID the version was moved to * sorting - when a record was moved within page with activated sorting Other record fields were not important. However, when moving a record, the value from TCA ctrl section "shadowColumnsForMovePlaceholders" was used to fill in gaps from the live record. The ACTUAL versioned record was indicated by t3ver_state = 4, the so-called "MOVE POINTER". In previous version until TYPO3 v10, it's PID field was set to -1, but since TYPO3 v10, it has the same PID as the "MOVE PLACEHOLDER". Characteristics of the move pointer as of TYPO3 v10: * t3ver_state = 4 (move pointer) * t3ver_oid = UID of the live record * t3ver_wsid = workspace UID * t3ver_move_id = 0 * pid = PID the version was moved to * sorting - same value as the live record (not evaluated until now) * All other fields with optionally modified content Both move placeholder and move pointer did not know each other directly. Fetching the move pointer for a move placeheldor (or the other way around) involved the live record, leading to many queries. The patch obsoletes the move placeholder records, moving necessary information to the move pointer: It now contains the updated sorting and is considered in the Database Restrictions to be fetched. In general, when publishing, the moved record now behaves identical to the other versioned types. This makes the internal code much easier, creates less DB queries on read + write and leads to less DB records in the database. The change removes creation of move placeholders, and considers the move pointers when evaluating sorting and PID in DataHandler. Read functionality from BackendUtility and PageRepository don't need an additional step to fetch the live version of a move placeholder anymore. An upgrade wizard takes existing move placeholders (state=3), updates pid+sorting (PID generally not needed, just to be sure) of the move pointer (state=4) and then deletes the move placeholder. TCA definition $TCA[my-table][ctrl][shadowColumnsForMovePlaceholders] is not needed anymore and removed by an auto TCA migration. Finally, workspace enabled tables do not need the t3ver_move_id field anymore: The live record UID is already in t3ver_oid field for state=4 records, just like with all other versioned records. The field will be fully removed with a separate patch in order to keep the actual CSV tests readable for this patch. Resolves: #92497 Releases: master Change-Id: I206336aec8be8a324fefdfd69f648f5a298c6ad1 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/65797 Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Oliver Bartsch <bo@cedev.de> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Oliver Bartsch <bo@cedev.de> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch>
-
- 20 Sep, 2020 1 commit
-
-
When publishing workspace changes to live, many sys_refindex rows are not updated properly, especially if dealing with workspace-new or workspace-moved rows and relations. To update the reference index for relations, the data handler uses class ReferenceIndex, which uses class RelationHandler, which uses PlainDataResolver. All of these classes are workspace aware and pick the current user workspace if not explicitely told otherwise. When publishing records, a given user is currently in some workspace, but the reference index needs to be fixed for live. This explicit runtime workspace switch is lost in the ReferenceIndex. The patch hands over given workspace context from ReferenceIndex to RelationHandler during publish. This one-liner fixes tons of broken reference index cases. It also reveals a couple of still missing entries. Those will be tackled with another patch. Change-Id: Ib7647baad827fa8f148763efe91b331e5ad4484e Resolves: #92348 Releases: master, 10.4 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/65771 Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Andreas Fernandez <a.fernandez@scripting-base.de> Tested-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Reviewed-by:
Andreas Fernandez <a.fernandez@scripting-base.de> Reviewed-by:
Anja Leichsenring <aleichsenring@ab-softlab.de>
-
- 19 Sep, 2020 1 commit
-
-
The reference index can be seen as a cache for relations. It is used in various places to show how many other records have a relation to a given record, for instance in list and filelist module and in the record info modal. In workspaces, new and moved records create records pairs: t3ver_state -1 & 1 and t3ver_state 3 & 4. The backend always shows only one of these pairs. The reference index creates an entry for each record, so two for each pair. This is useless and confusing for editors: If for instance a new file reference is added to a content element in workspaces, the file list shows two usages of the file instead of only one. The patch suppresses reference index entries for the placeholder records - t3ver_state 1 and 3 - so each pair ends up with only one sys_refindex entry. Resolves: #92345 Related: #61917 Releases: master, 10.4 Change-Id: I16ede3a9f1b66a7195526a224e9f1c43c03d7ba6 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/65767 Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Oliver Bartsch <bo@cedev.de> Tested-by:
Daniel Goerz <daniel.goerz@posteo.de> Reviewed-by:
Oliver Bartsch <bo@cedev.de> Reviewed-by:
Daniel Goerz <daniel.goerz@posteo.de>
-
- 04 Sep, 2020 1 commit
-
-
The method "shouldExcludeTableFromReferenceIndex()" which also incorporates a PSR-14 currently only skips references FROM a specific table, but in order to keep consistency, they should also be excluded TO this specific table. Resolves: #89100 Releases: master, 10.4 Change-Id: I0bee4fb12cb461e51a97180addd0b0358fba8412 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/65572 Tested-by:
Claus Harup <ch@typoconsult.dk> Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Daniel Goerz <daniel.goerz@posteo.de> Reviewed-by:
Claus Harup <ch@typoconsult.dk> Reviewed-by:
Oliver Bartsch <bo@cedev.de> Reviewed-by:
Daniel Goerz <daniel.goerz@posteo.de>
-
- 09 Jul, 2020 1 commit
-
-
This change removes deprecated functionality: - ReferenceIndex->updateIndex() is now either ProgressListenerInterface or null - ExtensionManagementUtility->findService() expects an array as third argument - BasicFileUtility->setFileExtensionPermissions() removed - GeneralUtility->callUserFunction now expects object or null as third argument - DataMapper->__construct does not expect $query to be set anymore - ObjectAccess->setProperty - fourth argument removed Resolves: #91613 Related: #91473 Releases: master Change-Id: I39fa30f84201b0ed837f6ac0e6d27e1ddb15376d
-
- 16 Apr, 2020 1 commit
-
-
Releases: master Resolves: #90910 Change-Id: If03889ee330e96c5ca82b31ae0604fb1d1d0afc8 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/64031 Tested-by:
Daniel Goerz <daniel.goerz@posteo.de> Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Andreas Fernandez <a.fernandez@scripting-base.de> Reviewed-by:
Daniel Goerz <daniel.goerz@posteo.de> Reviewed-by:
Oliver Klee <typo3-coding@oliverklee.de> Reviewed-by:
Andreas Fernandez <a.fernandez@scripting-base.de>
-
- 15 Apr, 2020 1 commit
-
-
With this patch, the header comment of php files is automatically added by the php-cs-fixer, which guarantees that its format and place of occurrence remain the same in all files. Files that are copied over from other projects are excluded. Furthermore, files that are kind of inspired by other projects also get the same header comment but may have a second, additional comment explaining its origin. Used command: bin/php-cs-fixer fix --config=Build/php-cs-fixer/header-comment.php Releases: master Resolves: #91024 Change-Id: I5a040517e0fbde6e5a27d589bf2f222078326dc8 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/64159 Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Andreas Fernandez <a.fernandez@scripting-base.de> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Andreas Fernandez <a.fernandez@scripting-base.de> Reviewed-by:
Benni Mack <benni@typo3.org>
-
- 14 Apr, 2020 1 commit
-
-
This change adds two changes 'blank_line_after_opening_tag' => true, 'single_trait_insert_per_statement' => true, to our PHP-CS Fixer configuration, adopting more rules related to PSR-12. Resolves: #91020 Releases: master Change-Id: I180b2cbceb077911bddeb42d9f131e5b32244ed2 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/64158 Tested-by:
Josef Glatz <josefglatz@gmail.com> Tested-by:
Oliver Bartsch <bo@cedev.de> Tested-by:
Alexander Schnitzler <git@alexanderschnitzler.de> Tested-by:
Andreas Fernandez <a.fernandez@scripting-base.de> Tested-by:
TYPO3com <noreply@typo3.com> Reviewed-by:
Josef Glatz <josefglatz@gmail.com> Reviewed-by:
Oliver Bartsch <bo@cedev.de> Reviewed-by:
Alexander Schnitzler <git@alexanderschnitzler.de> Reviewed-by:
Andreas Fernandez <a.fernandez@scripting-base.de>
-
- 29 Feb, 2020 1 commit
-
-
Resolves: #90593 Releases: master Change-Id: I2ad6f61906f42c6706d4cbca53013202ce481e7d Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/63498 Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Alexander Schnitzler <git@alexanderschnitzler.de> Tested-by:
Susanne Moog <look@susi.dev> Reviewed-by:
Alexander Schnitzler <git@alexanderschnitzler.de> Reviewed-by:
Susanne Moog <look@susi.dev>
-
- 14 Feb, 2020 1 commit
-
-
Benni Mack authored
Use code cache properly instead of storing strings into it, because it is proper usage of our API, removes the need for stripping PHP code strings and improves performance when OPCache is in use (which is recommended on production systems). Additionally all calls to ->has are removed, except one place where boolean values are stored in a runtime cache and in tests, because the API guarantees returning "false" when using ->get or ->require Doing so reduces the amount of lookups on the backend storage (file_exists for file backend, SQL queries for DB backend) and makes up more straightforward code in most places (reduces cyclomatic complexity by removing obsolete "else" branching). Releases: master Resolves: #89895 Change-Id: I401512ad4ddffb622ce2f4a9d88274deb4b4e849 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/62558 Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Achim Fritz <af@achimfritz.de> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Achim Fritz <af@achimfritz.de> Reviewed-by:
Benni Mack <benni@typo3.org>
-
- 13 Feb, 2020 1 commit
-
-
With adding progressbar support while updating the reference index, it is now possible to see which table is updated and how much progress has already been achieved. To be able to implement the progressbar in the frontend in a different way, a progress listener interface is introduced which can be added separately. At the same time, the FlashMessage logic is now put in the TYPO3 Backend controller and the $cli_echo is now used to inject the progress listener interface Resolves: #82062 Releases: master Change-Id: Id11ba8a9f3e033eaea9f3aff5a7f5eb0602cfa02 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/53748 Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Georg Ringer <georg.ringer@gmail.com> Tested-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Reviewed-by:
Sebastian Fischer <typo3@evoweb.de> Reviewed-by:
Georg Ringer <georg.ringer@gmail.com> Reviewed-by:
Anja Leichsenring <aleichsenring@ab-softlab.de>
-
- 27 Jan, 2020 1 commit
-
-
The public property in ReferenceIndex->WSOL was removed in 2006 and documented like that, but it has no effect, as it was never evaluated since 14 years. This property is removed, as the recommended way is to use the ->setWorkspaceId() anyway since a few years. Resolves: #90217 Releases: master Change-Id: Ib3b58c6823ec78cb0b51f19b104aa80186f0dfe6 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/63047 Reviewed-by:
Oliver Klee <typo3-coding@oliverklee.de> Reviewed-by:
Oliver Hader <oliver.hader@typo3.org> Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Oliver Hader <oliver.hader@typo3.org>
-
- 30 Dec, 2019 1 commit
-
-
php bin/rector process A couple of rectors have been disabled due to different reasons: - Rector\Php71\Rector\FuncCall\CountOnNullRector This rector has been disabled as it creates rather long and complex structures to avoid calling count on null. This rector will be enabled as soon as TYPO3 uses at least PHP 7.3 which introduces a "is_countable" method. - Rector\Php71\Rector\Assign\AssignArrayToStringRector This rector has been disabled as it does not work properly. The default types of parameters have been changed although their types could properly be inferred by a doc block or by value assignments. - Rector\Php71\Rector\BinaryOp\BinaryOpBetweenNumberAndStringRector This rector has been disabled as it does not work properly. A bug report is filed and to be found here: https://github.com/rectorphp/rector/issues/2454 - Rector\Php71\Rector\FuncCall\RemoveExtraParametersRector This rector has been disabled as it does not work properly. It removed arguments in tests, especially when using prophecies. Releases: master Resolves: #90002 Change-Id: I6ed14d38cc697a23104286db57535d6a3c0dbf62 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/62751 Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Benni Mack <benni@typo3.org> Tested-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Reviewed-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Anja Leichsenring <aleichsenring@ab-softlab.de>
-
- 22 Nov, 2019 1 commit
-
-
This change migrates existing Extbase Signal Slots in EXT:core to the new PSR-14 events, which allow to define a proper API for each event fired. The following new Events are in place: - TYPO3\CMS\Core\Imaging\Event\ModifyIconForResourcePropertiesEvent - TYPO3\CMS\Core\DataHandling\Event\IsTableExcludedFromReferenceIndexEvent - TYPO3\CMS\Core\DataHandling\Event\AppendLinkHandlerElementsEvent - TYPO3\CMS\Core\Configuration\Event\AfterTcaCompilationEvent - TYPO3\CMS\Core\Database\Event\AlterTableDefinitionStatementsEvent - TYPO3\CMS\Core\Tree\Event\ModifyTreeDataEvent The following signals are now deprecated: - TYPO3\CMS\Core\Imaging\IconFactory::buildIconForResourceSignal - TYPO3\CMS\Core\Database\SoftReferenceIndex::setTypoLinkPartsElement - TYPO3\CMS\Core\Database\ReferenceIndex::shouldExcludeTableFromReferenceIndex - TYPO3\CMS\Core\Utility\ExtensionManagementUtility::tcaIsBeingBuilt - TYPO3\CMS\Install\Service\SqlExpectedSchemaService::tablesDefinitionIsBeingBuilt - TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider::PostProcessTreeData Resolves: #89733 Releases: master Change-Id: I0747c1de3b77a6be2870d87a054522a7df2fdb18 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/62331 Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Susanne Moog <look@susi.dev> Tested-by:
Daniel Goerz <daniel.goerz@posteo.de> Reviewed-by:
Susanne Moog <look@susi.dev> Reviewed-by:
Daniel Goerz <daniel.goerz@posteo.de>
-
- 04 Nov, 2019 1 commit
-
-
Since the introduction of the new TypoLink format like t3://page?uid=1 the SoftReferenceIndex is parsing these TypoLinks wrong, and does not parse t3://record at all. This patch adds the same parsing of typolinks than the one done by LinkService, and removes old and duplicated code. This patch also fixes the missing softref when a typolink contains an anchor to a tt_content. The signal `getTypoLinkParts` is removed from execution, because it is not needed anymore, as all is handled via LinkService capabilities directly. Resolves: #84016 Releases: master, 9.5 Change-Id: I4b83cd43af938de084aebc1b4bf424e6bb2d9682 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/57610 Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Georg Ringer <georg.ringer@gmail.com> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Georg Ringer <georg.ringer@gmail.com> Reviewed-by:
Benni Mack <benni@typo3.org>
-
- 07 Oct, 2019 1 commit
-
-
Make spelling in TYPO3 great again. Resolves: #89290 Releases: master Change-Id: I520840dd0774aa5d658ce6a45811aa6282c9e461 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61845 Tested-by:
TYPO3com <noreply@typo3.com> Tested-by:
Jörg Bösche <typo3@joergboesche.de> Tested-by:
Daniel Goerz <daniel.goerz@posteo.de> Reviewed-by:
Jörg Bösche <typo3@joergboesche.de> Reviewed-by:
Daniel Goerz <daniel.goerz@posteo.de>
-