Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / modules / contrib / permissions_by_term / modules / permissions_by_entity / tests / modules / pbt_entity_test / src / EventSubscriber / MockedDynamicPageCacheSubscriber.php
diff --git a/web/modules/contrib/permissions_by_term/modules/permissions_by_entity/tests/modules/pbt_entity_test/src/EventSubscriber/MockedDynamicPageCacheSubscriber.php b/web/modules/contrib/permissions_by_term/modules/permissions_by_entity/tests/modules/pbt_entity_test/src/EventSubscriber/MockedDynamicPageCacheSubscriber.php
new file mode 100644 (file)
index 0000000..445ef3e
--- /dev/null
@@ -0,0 +1,44 @@
+<?php
+
+namespace Drupal\pbt_entity_test\EventSubscriber;
+
+use Drupal\dynamic_page_cache\EventSubscriber\DynamicPageCacheSubscriber;
+use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
+use Symfony\Component\HttpKernel\Event\GetResponseEvent;
+
+/**
+ * Mocked dynamic page cache subscriber.
+ *
+ * Ensures the requests are cached.
+ */
+class MockedDynamicPageCacheSubscriber extends DynamicPageCacheSubscriber {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function onRouteMatch(GetResponseEvent $event) {
+    // Sets the response for the current route, if cached.
+    $cached = $this->renderCache->get($this->dynamicPageCacheRedirectRenderArray);
+    if ($cached) {
+      $response = $this->renderArrayToResponse($cached);
+      $response->headers->set(self::HEADER, 'HIT');
+      $event->setResponse($response);
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function onResponse(FilterResponseEvent $event) {
+    $response = $event->getResponse();
+
+    // Embed the response object in a render array so that RenderCache is able
+    // to cache it, handling cache redirection for us.
+    $response_as_render_array = $this->responseToRenderArray($response);
+    $this->renderCache->set($response_as_render_array, $this->dynamicPageCacheRedirectRenderArray);
+
+    // The response was generated, mark the response as a cache miss. The next
+    // time, it will be a cache hit.
+    $response->headers->set(self::HEADER, 'MISS');
+  }
+}