From 6adf7d7bc5706e8fadcf9bc17acf88ea609c4081 Mon Sep 17 00:00:00 2001 From: Benjamin Dalsass Date: Wed, 15 Nov 2023 08:45:42 +0100 Subject: [PATCH] poc form SDK (symfony 6) --- core/kpi.class.inc.php | 5 ++ lib/composer/autoload_classmap.php | 3 + lib/composer/autoload_static.php | 3 + lib/composer/installed.php | 4 +- sources/DI/Profiler/OQLCollector.php | 43 +++++++++ templates/DI/profiler/oql.html.twig | 126 +++++++++++++++++++++++++++ 6 files changed, 182 insertions(+), 2 deletions(-) create mode 100644 sources/DI/Profiler/OQLCollector.php create mode 100644 templates/DI/profiler/oql.html.twig diff --git a/core/kpi.class.inc.php b/core/kpi.class.inc.php index 4994701031..42060081b9 100644 --- a/core/kpi.class.inc.php +++ b/core/kpi.class.inc.php @@ -509,4 +509,9 @@ class ExecutionKPI // PHP > 5.2.1 - this verb depends on a compilation option return 0; } + + static public function getExecData() + { + return self::$m_aExecData; + } } diff --git a/lib/composer/autoload_classmap.php b/lib/composer/autoload_classmap.php index 962170f15d..bce17ae3f0 100644 --- a/lib/composer/autoload_classmap.php +++ b/lib/composer/autoload_classmap.php @@ -416,6 +416,7 @@ return array( 'Combodo\\iTop\\DI\\Form\\Type\\Layout\\FieldSetType' => $baseDir . '/sources/DI/Form/Type/Layout/FieldSetType.php', 'Combodo\\iTop\\DI\\Form\\Type\\Layout\\RowType' => $baseDir . '/sources/DI/Form/Type/Layout/RowType.php', 'Combodo\\iTop\\DI\\ITopKernel' => $baseDir . '/sources/DI/ITopKernel.php', + 'Combodo\\iTop\\DI\\Profiler\\OQLCollector' => $baseDir . '/sources/DI/Profiler/OQLCollector.php', 'Combodo\\iTop\\DI\\Services\\ObjectPresentationService' => $baseDir . '/sources/DI/Services/ObjectPresentationService.php', 'Combodo\\iTop\\DI\\Services\\ObjectService' => $baseDir . '/sources/DI/Services/ObjectService.php', 'Combodo\\iTop\\DI\\Services\\Orm' => $baseDir . '/sources/DI/Services/Orm.php', @@ -2017,6 +2018,7 @@ return array( 'Symfony\\Component\\Console\\Input\\StreamableInputInterface' => $vendorDir . '/symfony/console/Input/StreamableInputInterface.php', 'Symfony\\Component\\Console\\Input\\StringInput' => $vendorDir . '/symfony/console/Input/StringInput.php', 'Symfony\\Component\\Console\\Logger\\ConsoleLogger' => $vendorDir . '/symfony/console/Logger/ConsoleLogger.php', + 'Symfony\\Component\\Console\\Output\\AnsiColorMode' => $vendorDir . '/symfony/console/Output/AnsiColorMode.php', 'Symfony\\Component\\Console\\Output\\BufferedOutput' => $vendorDir . '/symfony/console/Output/BufferedOutput.php', 'Symfony\\Component\\Console\\Output\\ConsoleOutput' => $vendorDir . '/symfony/console/Output/ConsoleOutput.php', 'Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => $vendorDir . '/symfony/console/Output/ConsoleOutputInterface.php', @@ -2949,6 +2951,7 @@ return array( 'Symfony\\Component\\Routing\\RequestContext' => $vendorDir . '/symfony/routing/RequestContext.php', 'Symfony\\Component\\Routing\\RequestContextAwareInterface' => $vendorDir . '/symfony/routing/RequestContextAwareInterface.php', 'Symfony\\Component\\Routing\\Requirement\\EnumRequirement' => $vendorDir . '/symfony/routing/Requirement/EnumRequirement.php', + 'Symfony\\Component\\Routing\\Requirement\\Requirement' => $vendorDir . '/symfony/routing/Requirement/Requirement.php', 'Symfony\\Component\\Routing\\Route' => $vendorDir . '/symfony/routing/Route.php', 'Symfony\\Component\\Routing\\RouteCollection' => $vendorDir . '/symfony/routing/RouteCollection.php', 'Symfony\\Component\\Routing\\RouteCompiler' => $vendorDir . '/symfony/routing/RouteCompiler.php', diff --git a/lib/composer/autoload_static.php b/lib/composer/autoload_static.php index e41001c302..3804ca7826 100644 --- a/lib/composer/autoload_static.php +++ b/lib/composer/autoload_static.php @@ -811,6 +811,7 @@ class ComposerStaticInit1f6902bb5e16183d06d6f3022e08a03d 'Combodo\\iTop\\DI\\Form\\Type\\Layout\\FieldSetType' => __DIR__ . '/../..' . '/sources/DI/Form/Type/Layout/FieldSetType.php', 'Combodo\\iTop\\DI\\Form\\Type\\Layout\\RowType' => __DIR__ . '/../..' . '/sources/DI/Form/Type/Layout/RowType.php', 'Combodo\\iTop\\DI\\ITopKernel' => __DIR__ . '/../..' . '/sources/DI/ITopKernel.php', + 'Combodo\\iTop\\DI\\Profiler\\OQLCollector' => __DIR__ . '/../..' . '/sources/DI/Profiler/OQLCollector.php', 'Combodo\\iTop\\DI\\Services\\ObjectPresentationService' => __DIR__ . '/../..' . '/sources/DI/Services/ObjectPresentationService.php', 'Combodo\\iTop\\DI\\Services\\ObjectService' => __DIR__ . '/../..' . '/sources/DI/Services/ObjectService.php', 'Combodo\\iTop\\DI\\Services\\Orm' => __DIR__ . '/../..' . '/sources/DI/Services/Orm.php', @@ -2412,6 +2413,7 @@ class ComposerStaticInit1f6902bb5e16183d06d6f3022e08a03d 'Symfony\\Component\\Console\\Input\\StreamableInputInterface' => __DIR__ . '/..' . '/symfony/console/Input/StreamableInputInterface.php', 'Symfony\\Component\\Console\\Input\\StringInput' => __DIR__ . '/..' . '/symfony/console/Input/StringInput.php', 'Symfony\\Component\\Console\\Logger\\ConsoleLogger' => __DIR__ . '/..' . '/symfony/console/Logger/ConsoleLogger.php', + 'Symfony\\Component\\Console\\Output\\AnsiColorMode' => __DIR__ . '/..' . '/symfony/console/Output/AnsiColorMode.php', 'Symfony\\Component\\Console\\Output\\BufferedOutput' => __DIR__ . '/..' . '/symfony/console/Output/BufferedOutput.php', 'Symfony\\Component\\Console\\Output\\ConsoleOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutput.php', 'Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutputInterface.php', @@ -3344,6 +3346,7 @@ class ComposerStaticInit1f6902bb5e16183d06d6f3022e08a03d 'Symfony\\Component\\Routing\\RequestContext' => __DIR__ . '/..' . '/symfony/routing/RequestContext.php', 'Symfony\\Component\\Routing\\RequestContextAwareInterface' => __DIR__ . '/..' . '/symfony/routing/RequestContextAwareInterface.php', 'Symfony\\Component\\Routing\\Requirement\\EnumRequirement' => __DIR__ . '/..' . '/symfony/routing/Requirement/EnumRequirement.php', + 'Symfony\\Component\\Routing\\Requirement\\Requirement' => __DIR__ . '/..' . '/symfony/routing/Requirement/Requirement.php', 'Symfony\\Component\\Routing\\Route' => __DIR__ . '/..' . '/symfony/routing/Route.php', 'Symfony\\Component\\Routing\\RouteCollection' => __DIR__ . '/..' . '/symfony/routing/RouteCollection.php', 'Symfony\\Component\\Routing\\RouteCompiler' => __DIR__ . '/..' . '/symfony/routing/RouteCompiler.php', diff --git a/lib/composer/installed.php b/lib/composer/installed.php index 191b45fdf0..3e5cead417 100644 --- a/lib/composer/installed.php +++ b/lib/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), - 'reference' => '43b73b425a14983ab6ec73ae196b28cdc875b592', + 'reference' => '8f2efa41159b77b1fe1d9be03e1608fa15afa1a9', 'name' => 'combodo/itop', 'dev' => true, ), @@ -25,7 +25,7 @@ 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), - 'reference' => '43b73b425a14983ab6ec73ae196b28cdc875b592', + 'reference' => '8f2efa41159b77b1fe1d9be03e1608fa15afa1a9', 'dev_requirement' => false, ), 'combodo/tcpdf' => array( diff --git a/sources/DI/Profiler/OQLCollector.php b/sources/DI/Profiler/OQLCollector.php new file mode 100644 index 0000000000..700b0501d3 --- /dev/null +++ b/sources/DI/Profiler/OQLCollector.php @@ -0,0 +1,43 @@ +aOQL = [ + 'SELECT PERSON AS p WHERE p.name = "Pascal"', + 'SELECT PERSON AS p WHERE p.name = "Daniel"', + ]; + } + + public function addOQL(string $sOQL) + { + $this->aOQL[] = $sOQL; + } + + public function collect(Request $request, Response $response, \Throwable $exception = null) + { + $this->data = [ + 'execution' => ExecutionKPI::getExecData() + ]; + } + + public function getRequests() + { + return $this->data['execution']; + } + + public static function getTemplate(): ?string + { + return 'DI/profiler/oql.html.twig'; + } +} \ No newline at end of file diff --git a/templates/DI/profiler/oql.html.twig b/templates/DI/profiler/oql.html.twig new file mode 100644 index 0000000000..57aa631ccf --- /dev/null +++ b/templates/DI/profiler/oql.html.twig @@ -0,0 +1,126 @@ +{# templates/data_collector/template.html.twig #} +{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %} + {% set icon %} + + + + + + + + + + + + + + + + + + + + + KPI + {% endset %} + + {% set text %} +
+ Get information about iTop KPI +
+ {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { 'link': true }) }} +{% endblock %} + +{% block menu %} + {# This left-hand menu appears when using the full-screen profiler. #} + + + + + + + + + + + + + + + + + + + + + + + + + KPI + +{% endblock %} + +{% block panel %} + {# Optional, for showing the most details. #} +

iTop KPI

+ + + {% for request in collector.requests %} + + + + {% endfor %} + +
{{ dump(request) }}
+{% endblock %} \ No newline at end of file