@@ -131,7 +131,7 @@ private function encodeIriToCacheKey(string $iri): string
131131    private  function  getResourceId (mixed  $ privateFieldobject $ previousObjectstring 
132132    {
133133        $ id$ previousObject'get ' .ucfirst ($ privateFieldgetId ();
134-         if  ($ idinstanceof  \Stringable) {
134+         if  ($ idinstanceof  \Stringable ||  is_numeric ( $ id ) ) {
135135            return  (string ) $ id
136136        }
137137
@@ -149,39 +149,61 @@ private function getCreatedOrUpdatedPayloads(object $object): array
149149        $ resourceMetadata$ this resourceMetadataCollectionFactory ->create ($ resourceClass
150150        $ shortName$ resourceMetadatagetOperation ()->getShortName ();
151151
152-         $ mercure$ resourceMetadatagetOperation ()->getMercure () ?? false ;
153-         $ private$ mercure'private ' ] ?? false ;
154-         $ privateFieldsConfig$ mercure'private_fields ' ] ?? [];
155-         $ privateFieldData
156-         if  ($ private$ privateFieldsConfig
157-             foreach  ($ privateFieldsConfigas  $ privateField
158-                 $ privateFieldData'__private_field_ ' .$ privateField$ this getResourceId ($ privateField$ object
159-             }
160-         }
161- 
162-         $ iri$ this iriConverter ->getIriFromResource ($ object
163-         // Add collection subscriptions 
164-         $ subscriptionsarray_merge (
165-             $ this getSubscriptionsFromIri ($ this getCollectionIri ($ iri$ privateFieldData
166-             $ this getSubscriptionsFromIri ($ iri
167-         );
168- 
169152        $ payloads
170-         foreach  ($ subscriptionsas  [$ subscriptionId$ subscriptionFields$ subscriptionResult
171-             if  ($ privateFieldData
172-                 $ fieldDiffarray_intersect_assoc ($ subscriptionFields$ privateFieldData
173-                 if  ($ fieldDiff$ privateFieldData
153+         foreach  ($ resourceMetadataas  $ apiResource
154+             foreach  ($ apiResourcegetGraphQlOperations () as  $ operation
155+                 if  (!$ operationinstanceof  Subscription) {
174156                    continue ;
175157                }
176-             }
177-             $ resolverContext'fields '  => $ subscriptionFields'is_collection '  => false , 'is_mutation '  => false , 'is_subscription '  => true ];
178-             $ operationnew  Subscription ())->withName ('mercure_subscription ' )->withShortName ($ shortName
179-             $ data$ this normalizeProcessor ->process ($ object$ operation$ resolverContext
180- 
181-             unset($ data'clientSubscriptionId ' ]);
158+                 $ mercure$ resourceMetadatagetOperation ()->getMercure () ?? false ;
159+                 $ operationMercure$ operationgetMercure () ?? false ;
160+                 if  ($ mercurefalse  && $ operationMercurefalse ) {
161+                     /** @noinspection SlowArrayOperationsInLoopInspection */ 
162+                     $ mercurearray_merge ($ mercure$ operationMercure
163+                 }
164+                 $ private$ mercure'private ' ] ?? false ;
165+                 $ privateFieldsConfig$ mercure'private_fields ' ] ?? [];
166+                 $ privateFieldData
167+                 if  ($ private$ privateFieldsConfig
168+                     foreach  ($ privateFieldsConfigas  $ privateField
169+                         $ privateFieldData'__private_field_ '  . $ privateField$ this getResourceId (
170+                             $ privateField
171+                             $ object
172+                         );
173+                     }
174+                 }
182175
183-             if  ($ data$ subscriptionResult
184-                 $ payloads$ subscriptionId$ data
176+                 $ iri$ this iriConverter ->getIriFromResource ($ object
177+                 // Add collection subscriptions 
178+                 $ subscriptionsarray_merge (
179+                     $ this getSubscriptionsFromIri ($ this getCollectionIri ($ iri$ privateFieldData
180+                     $ this getSubscriptionsFromIri ($ iri
181+                 );
182+ 
183+                 foreach  ($ subscriptionsas  [$ subscriptionId$ subscriptionFields$ subscriptionResult
184+                     if  ($ privateFieldData
185+                         $ fieldDiffarray_intersect_assoc ($ subscriptionFields$ privateFieldData
186+                         if  ($ fieldDiff$ privateFieldData
187+                             continue ;
188+                         }
189+                     }
190+                     $ resolverContext
191+                         'fields '           => $ subscriptionFields
192+                         'is_collection '    => false ,
193+                         'is_mutation '      => false ,
194+                         'is_subscription '  => true 
195+                     ];
196+                     $ subscriptionOperationnew  Subscription ())->withName ('mercure_subscription ' )->withShortName (
197+                         $ shortName
198+                     );
199+                     $ data$ this normalizeProcessor ->process ($ object$ subscriptionOperation$ resolverContext
200+ 
201+                     unset($ data'clientSubscriptionId ' ]);
202+ 
203+                     if  ($ data$ subscriptionResult
204+                         $ payloads$ subscriptionId$ data
205+                     }
206+                 }
185207            }
186208        }
187209
0 commit comments