4.3.16 (2020-08-14)

Overview of merged pull requests

TASK: Improve wording of include/exclude concepts where possible

Matching change with https://github.com/neos/flow-development-collection/pull/2024

  • Packages: ContentRepository

BUGFIX: Prevent refetching nodes for policy checks

When defining a policy targeting a static node the static node was refetched for every subject, slowing down policy information retrieval.

This adds a simple caching mechanism to NodePrivilegeContext::getNodeByIdentifier that prevents nodes from being refetched for static policy comparisons.

Resolves #2301

  • Packages: Browser ContentRepository

TASK: Apply fixes from StyleCI

This pull request applies code style fixes from an analysis carried out by [StyleCI](https://github.styleci.io).

For more information, click [here](https://github.styleci.io/analyses/OMdgkW).

Apply fixes from StyleCI

This pull request applies code style fixes from an analysis carried out by [StyleCI](https://github.styleci.io).

For more information, click [here](https://github.styleci.io/analyses/lKyEJV).

  • Packages: Browser ContentRepository Diff Fusion Media Neos

BUGFIX: Variants tab does not use mainRequest in form when opened from inspector

This adds a condition for using the parentRequest only if it is not the mainRequest already.

Fixes #3005

  • Packages: Browser

BUGFIX: Make child nodes of hidden parents inaccessible

Since a couple of months child nodes of hidden nodes are accessible (outside the Neos backend). This change restores the initial behavior and makes sure that accessing child nodes from hidden nodes will lead to a 404 response.

resolves: https://github.com/neos/neos-development-collection/issues/2983

  • Packages: ContentRepository Neos

!!! BUGFIX: Speed up node move actions

Due to an issue in how Doctrine 2.x handles the computation of changesets when given entities to commit it recomputed the changesets for all entities for every entity. Leading to n^2 change computations.

In a large project this improved the moving of ~750 nodes from 1.7m to 8.5s. In the demo site moving the “features” page from 4s to 1.65s. Publishing seems to be only slightly (~10%) faster to its different behaviour in the CR.

What I did

Which this change this behaviour is circumvented by commiting all entities at once. Including entities which might not have been included with the previous code but would have been persisted at the end of the request anyway.

What is breaking This change leads to all entities scheduled for persistence to actually persist when a node is changed, see following comparison timelines:

Old: 1. Create Entity, mark for insertion 2. change node 3. controller call is done / persistAll was called -> entity from step one is now persisted

New: 1. Create Entity, mark for insertion 2. change node (entity will be persisted at this point) 3. controller call is done / persistAll was called -> nothing happens anymore.

How I did it

Replace the repeated flush calls to the entity manager with a single one.

This should only lead to a behavioural change if custom code would modify a node then move other nodes and expect the the first node was not persisted yet.

How to verify it

  1. Move a large set of pages with subpages and nodes in the Neos backend.

  2. Check the request time of the change xhr request.

  3. Apply this patch

  4. Repeat steps 1 + 2 and compare

Example screenshots:

Before:

<img width=”600” alt=”before-change” src=”https://user-images.githubusercontent.com/596967/87766599-b4b94600-c819-11ea-9777-0bbe11f84d3a.png”>

After:

<img width=”600” alt=”after-change” src=”https://user-images.githubusercontent.com/596967/87766608-b7b43680-c819-11ea-83f9-2fbf1993cda7.png”>

  • Packages: ContentRepository

TASK: Remove curly brace string offset access for PHP 7.4 compatibility

What I did I changed string offset access from curly-braces to brackets

  • Packages: Diff Neos

Detailed log