Version 1
[yaffs-website] / web / modules / contrib / devel / webprofiler / src / Views / ViewExecutableFactoryWrapper.php
diff --git a/web/modules/contrib/devel/webprofiler/src/Views/ViewExecutableFactoryWrapper.php b/web/modules/contrib/devel/webprofiler/src/Views/ViewExecutableFactoryWrapper.php
new file mode 100644 (file)
index 0000000..6aa363f
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+namespace Drupal\webprofiler\Views;
+
+use Drupal\Core\Routing\RouteProviderInterface;
+use Drupal\Core\Session\AccountInterface;
+use Drupal\views\ViewEntityInterface;
+use Drupal\views\ViewExecutable;
+use Drupal\views\ViewExecutableFactory;
+use Drupal\views\ViewsData;
+use Symfony\Component\HttpFoundation\RequestStack;
+
+/**
+ * Class ViewExecutableFactoryWrapper
+ */
+class ViewExecutableFactoryWrapper extends ViewExecutableFactory {
+
+  /** @var ViewExecutable $view_executable */
+  private $views;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function __construct(AccountInterface $user, RequestStack $request_stack, ViewsData $views_data, RouteProviderInterface $route_provider) {
+    parent::__construct($user, $request_stack, $views_data, $route_provider);
+
+    $this->views = [];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function get(ViewEntityInterface $view) {
+    $view_executable = new TraceableViewExecutable($view, $this->user, $this->viewsData, $this->routeProvider);
+    $view_executable->setRequest($this->requestStack->getCurrentRequest());
+    $this->views[] = $view_executable;
+
+    return $view_executable;
+  }
+
+  /**
+   * @return TraceableViewExecutable
+   */
+  public function getViews() {
+    return $this->views;
+  }
+}