Skip to content

Commit d06f805

Browse files
committed
added a priority for data collectors
1 parent ca60259 commit d06f805

File tree

3 files changed

+33
-20
lines changed

3 files changed

+33
-20
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ProfilerPass.php

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,22 @@ public function process(ContainerBuilder $container)
3030

3131
$definition = $container->getDefinition('profiler');
3232

33+
$collectors = array();
34+
$priorities = array();
35+
$templates = array();
3336
foreach ($container->findTaggedServiceIds('data_collector') as $id => $attributes) {
34-
$definition->addMethodCall('add', array(new Reference($id)));
37+
$priorities[] = isset($attributes[0]['priority']) ? $attributes[0]['priority'] : 0;
38+
$collectors[] = $id;
39+
if (isset($attributes[0]['template'])) {
40+
$templates[] = $attributes[0]['template'];
41+
}
3542
}
43+
44+
array_multisort($priorities, SORT_DESC, $collectors, SORT_DESC, $templates);
45+
foreach ($collectors as $collector) {
46+
$definition->addMethodCall('add', array(new Reference($collector)));
47+
}
48+
49+
$container->setParameter('data_collector.templates', array_combine($collectors, $templates));
3650
}
3751
}

src/Symfony/Bundle/FrameworkBundle/Resources/config/collectors.xml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,43 +17,43 @@
1717

1818
<services>
1919
<service id="data_collector.config" class="%data_collector.config.class%">
20-
<tag name="data_collector" template="WebProfilerBundle:Collector:config" />
20+
<tag name="data_collector" template="WebProfilerBundle:Collector:config" priority="255" />
2121
<argument type="service" id="kernel" />
2222
<argument type="service" id="router" on-invalid="ignore" />
2323
</service>
2424

2525
<service id="data_collector.request" class="%data_collector.request.class%">
26-
<tag name="data_collector" template="WebProfilerBundle:Collector:request" />
26+
<tag name="data_collector" template="WebProfilerBundle:Collector:request" priority="250" />
2727
</service>
2828

2929
<service id="data_collector.security" class="%data_collector.security.class%">
30-
<tag name="data_collector" template="WebProfilerBundle:Collector:security" />
30+
<tag name="data_collector" template="WebProfilerBundle:Collector:security" priority="245" />
3131
<argument type="service" id="security.context" on-invalid="ignore" />
3232
</service>
3333

3434
<service id="data_collector.exception" class="%data_collector.exception.class%">
35-
<tag name="data_collector" template="WebProfilerBundle:Collector:exception" />
35+
<tag name="data_collector" template="WebProfilerBundle:Collector:exception" priority="240" />
3636
</service>
3737

3838
<service id="data_collector.events" class="%data_collector.events.class%">
39-
<tag name="data_collector" template="WebProfilerBundle:Collector:events" />
39+
<tag name="data_collector" template="WebProfilerBundle:Collector:events" priority="235" />
4040
<call method="setEventDispatcher">
4141
<argument type="service" id="event_dispatcher" />
4242
</call>
4343
</service>
4444

4545
<service id="data_collector.logger" class="%data_collector.logger.class%">
46-
<tag name="data_collector" template="WebProfilerBundle:Collector:logger" />
46+
<tag name="data_collector" template="WebProfilerBundle:Collector:logger" priority="230" />
4747
<argument type="service" id="logger" on-invalid="ignore" />
4848
</service>
4949

5050
<service id="data_collector.timer" class="%data_collector.timer.class%">
51-
<tag name="data_collector" template="WebProfilerBundle:Collector:timer" />
51+
<tag name="data_collector" template="WebProfilerBundle:Collector:timer" priority="225" />
5252
<argument type="service" id="kernel" />
5353
</service>
5454

5555
<service id="data_collector.memory" class="%data_collector.memory.class%">
56-
<tag name="data_collector" template="WebProfilerBundle:Collector:memory" />
56+
<tag name="data_collector" template="WebProfilerBundle:Collector:memory" priority="220" />
5757
</service>
5858
</services>
5959
</container>

src/Symfony/Bundle/WebProfilerBundle/Controller/ProfilerController.php

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -241,18 +241,17 @@ public function searchAction()
241241
protected function getTemplateNames($profiler)
242242
{
243243
$templates = array();
244-
foreach ($this->container->findTaggedServiceIds('data_collector') as $id => $tags) {
245-
if ($this->container->has($id) && isset($tags[0]['template'])) {
246-
$name = $this->container->get($id)->getName();
247-
$template = $tags[0]['template'];
248-
if ($profiler->has($name)) {
249-
if (!$this->container->get('templating')->exists($template.'.twig.html')) {
250-
continue;
251-
}
252-
253-
$templates[$name] = $template.'.twig.html';
254-
}
244+
foreach ($this->container->getParameter('data_collector.templates') as $id => $template) {
245+
if (!$this->container->has($id)) {
246+
continue;
255247
}
248+
249+
$name = $this->container->get($id)->getName();
250+
if (!$profiler->has($name) || !$this->container->get('templating')->exists($template.'.twig.html')) {
251+
continue;
252+
}
253+
254+
$templates[$name] = $template.'.twig.html';
256255
}
257256

258257
return $templates;

0 commit comments

Comments
 (0)