TranslationPeer::getListForLocale()   C
last analyzed

Complexity

Conditions 7
Paths 36

Size

Total Lines 28
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 2 Features 0
Metric Value
c 3
b 2
f 0
dl 0
loc 28
rs 6.7273
cc 7
eloc 16
nc 36
nop 1
1
<?php
2
3
namespace ItBlaster\TranslationBundle\Model;
4
5
use ItBlaster\TranslationBundle\Model\om\BaseTranslationPeer;
6
7
class TranslationPeer extends BaseTranslationPeer
8
{
9
    /**
10
     * Список перевода для локали
11
     *
12
     * @param $locale
13
     * @return array
14
     */
15
    public static function getListForLocale($locale)
16
    {
17
        $translation_list_en = array();
18
        $translation_list_locale = array();
19
        $result = array();
20
21
        $translation_list = TranslationQuery::create()->joinWithI18n('en')->find();
22
23
        foreach ($translation_list as $translation_item) {
24
            /** @var Translation $translation_item */
25
            $translation_list_en[$translation_item->getId()]['alias'] = $translation_item->getAlias();
26
            $translation_list_en[$translation_item->getId()]['title'] = $translation_item->getTitle();
27
        }
28
29
        $translation_list = TranslationQuery::create()->joinWithI18n($locale)->find();
30
        foreach ($translation_list as $translation_item) {
31
            /** @var Translation $translation_item */
32
            $translation_list_locale[$translation_item->getId()] = $translation_item->getTitle();
33
        }
34
35
        foreach ($translation_list_en as $id => $translation_item) {
36
            $result[$translation_item['alias']] = isset($translation_list_locale[$id]) && $translation_list_locale[$id] ?
37
                $translation_list_locale[$id] :
38
                ($translation_item['title'] ? $translation_item['title'] : $translation_item['alias']);
39
        }
40
41
        return $result;
42
    }
43
}
44