/**
  * Line up (flatten) a tree of inheritance of language packs
  *
  * Record level of recursion (level of inheritance) for further use in sorting
  *
  * @param Config $languageConfig
  * @param array $result
  * @param int $level
  * @return void
  */
 private function collectInheritedPacks($languageConfig, &$result, $level = 0)
 {
     $packKey = implode('|', [$languageConfig->getVendor(), $languageConfig->getPackage()]);
     if (!isset($result[$packKey])) {
         $result[$packKey] = ['inheritance_level' => $level, 'sort_order' => $languageConfig->getSortOrder(), 'language' => $languageConfig];
         foreach ($languageConfig->getUses() as $reuse) {
             if (isset($this->packList[$reuse['vendor']][$reuse['package']])) {
                 $parentLanguageConfig = $this->packList[$reuse['vendor']][$reuse['package']];
                 $this->collectInheritedPacks($parentLanguageConfig, $result, $level + 1);
             }
         }
     }
 }
Beispiel #2
0
 /**
  * @param Config $languageConfig
  * @param array $languageList
  * @param bool $isCircular
  * @return array|null
  */
 private function collectCircularInheritance(Config $languageConfig, &$languageList = [], &$isCircular = false)
 {
     $packKey = implode('|', [$languageConfig->getVendor(), $languageConfig->getPackage()]);
     if (isset($languageList[$packKey])) {
         $isCircular = true;
     } else {
         $languageList[$packKey] = $languageConfig;
         foreach ($languageConfig->getUses() as $reuse) {
             if (isset($this->packs[$reuse['vendor']][$reuse['package']])) {
                 $this->collectCircularInheritance($this->packs[$reuse['vendor']][$reuse['package']], $languageList, $isCircular);
             }
         }
     }
     return $isCircular ? $languageList : [];
 }
Beispiel #3
0
 public function testConfiguration()
 {
     $this->assertEquals('en_GB', $this->config->getCode());
     $this->assertEquals('Magento', $this->config->getVendor());
     $this->assertEquals('en_GB', $this->config->getPackage());
     $this->assertEquals('100', $this->config->getSortOrder());
     $this->assertEquals([['vendor' => 'oxford-university', 'package' => 'en_us'], ['vendor' => 'oxford-university', 'package' => 'en_gb']], $this->config->getUses());
 }
 public function testConfiguration()
 {
     $languageXml = file_get_contents(__DIR__ . '/_files/language.xml');
     $languageConfig = new Config($languageXml);
     $this->assertEquals('en_GB', $languageConfig->getCode());
     $this->assertEquals('magento', $languageConfig->getVendor());
     $this->assertEquals('en_gb', $languageConfig->getPackage());
     $this->assertEquals('100', $languageConfig->getSortOrder());
     $this->assertEquals([['vendor' => 'oxford-university', 'package' => 'en_us'], ['vendor' => 'oxford-university', 'package' => 'en_gb']], $languageConfig->getUses());
 }
 /**
  * Line up (flatten) a tree of inheritance of language packs
  *
  * Record level of recursion (level of inheritance) for further use in sorting
  *
  * @param Config $languageConfig
  * @param array $result
  * @param int $level
  * @param array $visitedPacks
  * @return void
  */
 private function collectInheritedPacks($languageConfig, &$result, $level = 0, array &$visitedPacks = [])
 {
     $packKey = implode('|', [$languageConfig->getVendor(), $languageConfig->getPackage()]);
     if (!isset($visitedPacks[$packKey]) && (!isset($result[$packKey]) || $result[$packKey]['inheritance_level'] < $level)) {
         $visitedPacks[$packKey] = true;
         $result[$packKey] = ['inheritance_level' => $level, 'sort_order' => $languageConfig->getSortOrder(), 'language' => $languageConfig, 'key' => $packKey];
         foreach ($languageConfig->getUses() as $reuse) {
             if (isset($this->packList[$reuse['vendor']][$reuse['package']])) {
                 $parentLanguageConfig = $this->packList[$reuse['vendor']][$reuse['package']];
                 $this->collectInheritedPacks($parentLanguageConfig, $result, $level + 1, $visitedPacks);
             }
         }
     }
 }