@@ -104,8 +104,32 @@ public function removeNode(NodeInterface $node, string $targetWorkspaceName = nu
104
104
}
105
105
}
106
106
107
- $ removalJob = new RemovalJob ($ this ->indexNamePostfix , $ targetWorkspaceName , $ this ->nodeAsArray ($ node ));
108
- $ this ->jobManager ->queue (NodeIndexQueueCommandController::LIVE_QUEUE_NAME , $ removalJob );
107
+ $ dimensionCombinations = $ this ->dimensionService ->getDimensionCombinationsForIndexing ($ node );
108
+
109
+ if (array_filter ($ dimensionCombinations ) === []) {
110
+ $ removalJob = new RemovalJob ($ this ->indexNamePostfix , $ targetWorkspaceName , $ this ->nodeAsArray ($ node ));
111
+ $ this ->jobManager ->queue (NodeIndexQueueCommandController::LIVE_QUEUE_NAME , $ removalJob );
112
+ } else {
113
+ foreach ($ dimensionCombinations as $ combination ) {
114
+
115
+ $ nodeFromContext = $ this ->createContentContext ($ targetWorkspaceName , $ combination )->getNodeByIdentifier ($ node ->getIdentifier ());
116
+ if ($ nodeFromContext instanceof NodeInterface && !$ nodeFromContext ->isRemoved ()) {
117
+ continue ;
118
+ }
119
+
120
+ $ fakeNodeArray = [
121
+ 'persistenceObjectIdentifier ' => 'fake ' ,
122
+ 'workspace ' => $ node ->getWorkspace ()->getName (),
123
+ 'path ' => $ node ->getPath (),
124
+ 'identifier ' => $ node ->getIdentifier (),
125
+ 'nodeType ' => $ node ->getNodeType ()->getName (),
126
+ 'dimensions ' => $ combination
127
+ ];
128
+
129
+ $ removalJob = new RemovalJob ($ this ->indexNamePostfix , $ targetWorkspaceName , [$ fakeNodeArray ]);
130
+ $ this ->jobManager ->queue (NodeIndexQueueCommandController::LIVE_QUEUE_NAME , $ removalJob );
131
+ }
132
+ }
109
133
}
110
134
111
135
/**
0 commit comments