mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-13 13:54:23 +00:00
59 lines
1.7 KiB
PHP
59 lines
1.7 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Chill is a software for social workers
|
|
*
|
|
* For the full copyright and license information, please view
|
|
* the LICENSE file that was distributed with this source code.
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Chill\MainBundle\DependencyInjection;
|
|
|
|
use LogicException;
|
|
use RuntimeException;
|
|
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
|
|
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
|
|
|
use function count;
|
|
|
|
/**
|
|
* Description of ConfigConsistencyCompilerPass.
|
|
*/
|
|
class ConfigConsistencyCompilerPass implements CompilerPassInterface
|
|
{
|
|
public function process(ContainerBuilder $container)
|
|
{
|
|
$availableLanguages = $container
|
|
->getParameter('chill_main.available_languages');
|
|
$methodCallsTranslator = $container
|
|
->findDefinition('translator.default')
|
|
->getMethodCalls();
|
|
|
|
$fallbackLocales = [];
|
|
|
|
foreach ($methodCallsTranslator as $call) {
|
|
if ('setFallbackLocales' === $call[0]) {
|
|
$fallbackLocales = array_merge(
|
|
$fallbackLocales,
|
|
$call[1][0]
|
|
);
|
|
}
|
|
}
|
|
|
|
if (count($fallbackLocales) === 0) {
|
|
throw new LogicException('the fallback locale are not defined. '
|
|
. 'The framework config should not allow this.');
|
|
}
|
|
|
|
$diff = array_diff($fallbackLocales, $availableLanguages);
|
|
|
|
if (count($diff) > 0) {
|
|
throw new RuntimeException(sprintf('The chill_main.available_languages'
|
|
. ' parameter does not contains fallback locales. The languages %s'
|
|
. ' are missing.', implode(', ', $diff)));
|
|
}
|
|
}
|
|
}
|