|
@@ -26,6 +26,7 @@ class MessageCatalogue implements MessageCatalogueInterface
|
|
|
private $locale;
|
|
|
private $resources;
|
|
|
private $fallbackCatalogue;
|
|
|
+ private $parent;
|
|
|
|
|
|
/**
|
|
|
* Constructor.
|
|
@@ -183,6 +184,15 @@ class MessageCatalogue implements MessageCatalogueInterface
|
|
|
*/
|
|
|
public function addFallbackCatalogue(MessageCatalogueInterface $catalogue)
|
|
|
{
|
|
|
+ // detect circular references
|
|
|
+ $c = $this;
|
|
|
+ do {
|
|
|
+ if ($c->getLocale() === $catalogue->getLocale()) {
|
|
|
+ throw new \LogicException(sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale()));
|
|
|
+ }
|
|
|
+ } while ($c = $c->getParent());
|
|
|
+
|
|
|
+ $catalogue->setParent($this);
|
|
|
$this->fallbackCatalogue = $catalogue;
|
|
|
|
|
|
foreach ($catalogue->getResources() as $resource) {
|
|
@@ -190,6 +200,16 @@ class MessageCatalogue implements MessageCatalogueInterface
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public function getParent()
|
|
|
+ {
|
|
|
+ return $this->parent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function setParent(self $parent)
|
|
|
+ {
|
|
|
+ $this->parent = $parent;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* {@inheritdoc}
|
|
|
*
|