From b72759d15394c07ee1ff8c5c15d4cb5b45c93f74 Mon Sep 17 00:00:00 2001 From: Berny Cantos Date: Tue, 24 Feb 2015 16:39:24 +0100 Subject: [PATCH] rename `languages` twig function to `elcodi_languages` global --- .../LanguageBundle/Resources/config/twig.yml | 4 +- .../Language/Twig/LanguageExtension.php | 46 +++++++++++-------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/src/Elcodi/Bundle/LanguageBundle/Resources/config/twig.yml b/src/Elcodi/Bundle/LanguageBundle/Resources/config/twig.yml index 954b13ec1..1b952a7ab 100644 --- a/src/Elcodi/Bundle/LanguageBundle/Resources/config/twig.yml +++ b/src/Elcodi/Bundle/LanguageBundle/Resources/config/twig.yml @@ -6,7 +6,7 @@ services: elcodi.twig_extension.language: class: %elcodi.twig_extension.language.class% arguments: - language_manager: @elcodi.manager.language - master_language: @elcodi.locale_iso + - @elcodi.manager.language + - @elcodi.locale_iso tags: - { name: twig.extension } diff --git a/src/Elcodi/Component/Language/Twig/LanguageExtension.php b/src/Elcodi/Component/Language/Twig/LanguageExtension.php index 2743b542c..dee0b02b9 100644 --- a/src/Elcodi/Component/Language/Twig/LanguageExtension.php +++ b/src/Elcodi/Component/Language/Twig/LanguageExtension.php @@ -18,7 +18,6 @@ namespace Elcodi\Component\Language\Twig; use Twig_Extension; -use Twig_SimpleFunction; use Elcodi\Component\Language\Entity\Interfaces\LanguageInterface; use Elcodi\Component\Language\Services\LanguageManager; @@ -57,14 +56,14 @@ public function __construct( } /** - * Return all filters + * Returns a list of global variables to add to the existing list. * - * @return Twig_SimpleFunction[] Filters created + * @return array An array of global variables */ - public function getFunctions() + public function getGlobals() { return array( - new Twig_SimpleFunction('languages', array($this, 'getLanguages')), + 'elcodi_languages' => $this->getLanguages(), ); } @@ -77,21 +76,10 @@ public function getLanguages() { $languages = $this ->languageManager - ->getLanguages(); + ->getLanguages() + ->toArray(); - $masterLanguage = $languages - ->filter(function (LanguageInterface $language) { - return $language->getIso() === $this->masterLocale; - }) - ->first(); - - $languages->removeElement($masterLanguage); - $otherLanguagesArray = $languages->toArray(); - - return array_merge( - [$masterLanguage], - $otherLanguagesArray - ); + return $this->promoteMasterLanguage($languages); } /** @@ -103,4 +91,24 @@ public function getName() { return 'language_extension'; } + + /** + * Move master language to the first position + * + * @param LanguageInterface[] $languages + * + * @return LanguageInterface[] + */ + protected function promoteMasterLanguage(array $languages) + { + $index = array_search($this->masterLocale, $languages); + + if (false !== $index) { + + unset($languages[$index]); + array_unshift($languages, $this->masterLocale); + } + + return $languages; + } }