Completed
Pull Request — master (#70)
by
unknown
02:44
created

LangSwitcher::getMLSlug()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 23
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 15
nc 1
nop 3
dl 0
loc 23
rs 9.0856
c 0
b 0
f 0
1
<?php
2
/**
3
 * @copyright Copyright (c) 2011 - 2014 Oleksandr Torosh (http://wezoom.net)
4
 * @author Oleksandr Torosh <[email protected]>
5
 */
6
7
namespace Application\Mvc\Helper;
8
9
use Cms\Model\Language;
10
use Phalcon\Mvc\User\Component;
11
12
class LangSwitcher extends Component
13
{
14
15
    public function render($lang, $string)
16
    {
17
        $router = $this->getDI()->get('router');
18
        $view = $this->getDI()->get('view');
19
        $url = $this->getDI()->get('url');
20
21
        $requestQuery = new RequestQuery();
22
        $matched_route = $router->getMatchedRoute();
23
        if ($matched_route) {
24
            $route_name = $matched_route->getName();
25
            $route_name_changed = $this->changeRouteName($route_name, $lang);
26
27
            $route_exitsts = $router->getRouteByName($route_name_changed);
28
            if ($route_exitsts) {
29
                $url_args = array();
30
                $url_args['for'] = $route_name_changed;
31
32
                $route_params = $router->getParams();
33
34
                if ($route_params) {
35
                    foreach ($route_params as $param_key => $param_val) {
36
                        $url_args[$param_key] = $param_val;
37
                    }
38
39
                    $mlSlug = $this->getMLSlug($matched_route, $route_params, $lang);
40
                    $url_args['slug'] = $mlSlug;
41
                }
42
43
                $href = $url->get($url_args);
44
            } else {
45
                $uri = $router->getRewriteUri();
46
                $href = $uri . $requestQuery->getSymbol() . '?lang=' . $lang;
47
            }
48
        } else {
49
            $uri = $router->getRewriteUri();
50
            $href = $uri . $requestQuery->getSymbol() . '?lang=' . $lang;
51
        }
52
53
        if ($lang == LANG) {
54
            $html = '<span>' . $string . '</span>';
55
        } elseif ($view->disabledLang == $lang) {
56
            $html = '<span class="disabled">' . $string . '</span>';
57
        } else {
58
            $html = '<a href="' . $href . '">' . $string . '</a>';
59
        }
60
61
        return $html;
62
63
    }
64
65
    private function changeRouteName($route_name, $lang)
66
    {
67
        $iso_array = Language::findCachedLanguagesIso();
68
        if (!empty($iso_array)) {
69
            foreach ($iso_array as $iso) {
70
                $route_name = str_replace('_' . $iso, '', $route_name);
71
            }
72
        }
73
        return $route_name . '_' . $lang;
74
    }
75
76
    private function getMLSlug($matched_route, $route_params, $lang)
77
    {
78
        $paths = $matched_route->getPaths();
79
        $module = $paths['module'];
80
81
        $curSLug = $route_params['slug'];
82
        // query moudle entity id.
83
        $query = "key = 'slug' and value = '$curSLug'";
84
        $modelName = \Phalcon\Text::camelize($module);
85
        $modelTranslateName = "{$modelName}Translate";
0 ignored issues
show
Unused Code introduced by
$modelTranslateName is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
86
        $translateModel = "{$modelName}\Model\Translate\\{$modelName}Translate";
87
        $slugRecord = $translateModel::findFirst([$query]);
88
        // query all slug.
89
        $mlSlug = $translateModel::findFirst([
90
            'conditions' => 'foreign_id = :id: AND lang = :lang: AND key = "slug"',
91
            'bind'       => [
92
                'id'     => $slugRecord->foreign_id,
93
                'lang'   => $lang
94
            ],
95
        ]);
96
97
        return $mlSlug->value;
98
    }
99
100
}
101