diff --git a/src/lib/Notification/Renderer/Registry.php b/src/lib/Notification/Renderer/Registry.php index 25c344a146..985112bd37 100644 --- a/src/lib/Notification/Renderer/Registry.php +++ b/src/lib/Notification/Renderer/Registry.php @@ -41,6 +41,22 @@ public function hasRenderer(string $alias): bool { return isset($this->registry[$alias]); } + + /** + * @return array + */ + public function getTypeLabels(): array + { + $labels = []; + foreach ($this->registry as $type => $renderer) { + if ($renderer instanceof TypedNotificationRendererInterface) { + $labels[$type] = $renderer->getTypeLabel(); + } + } + ksort($labels); + + return $labels; + } } class_alias(Registry::class, 'eZ\Publish\Core\Notification\Renderer\Registry'); diff --git a/src/lib/Notification/Renderer/TypedNotificationRendererInterface.php b/src/lib/Notification/Renderer/TypedNotificationRendererInterface.php new file mode 100644 index 0000000000..df809ab1e0 --- /dev/null +++ b/src/lib/Notification/Renderer/TypedNotificationRendererInterface.php @@ -0,0 +1,14 @@ +createMock(NotificationRenderer::class); + + $registry = new Registry(); + $registry->addRenderer('z_type', $typedRendererB); + $registry->addRenderer('a_type', $typedRendererA); + $registry->addRenderer('x_type', $nonTypedRenderer); + + $expected = [ + 'a_type' => 'Label A', + 'z_type' => 'Label B', + ]; + + $this->assertSame($expected, $registry->getTypeLabels()); + } +}