b_xlanguage_select_edit()   A
last analyzed

Complexity

Conditions 4
Paths 8

Size

Total Lines 23
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 17
nc 8
nop 1
dl 0
loc 23
rs 9.7
c 0
b 0
f 0
1
<?php
2
/**
3
 * xLanguage module (eXtensible Language Management For XOOPS)
4
 *
5
 * You may not change or alter any portion of this comment or credits
6
 * of supporting developers from this source code or any supporting source code
7
 * which is considered copyrighted (c) material of the original comment or credit authors.
8
 * This program is distributed in the hope that it will be useful,
9
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11
 *
12
 * @copyright    XOOPS Project (https://xoops.org)
13
 * @license      {@link https://www.gnu.org/licenses/gpl-2.0.html GNU Public License}
14
 * @package      xlanguage
15
 * @since        2.0
16
 * @author       D.J.(phppp) [email protected]
17
 * @param $options
18
 * @return array
19
 */
20
21
use XoopsModules\Xlanguage\{Helper,
22
    LanguageHandler
23
};
24
25
/** @var Helper $helper */
26
/** @var LanguageHandler $languageHandler */
27
28
/**
29
 * @param $options
30
 * @return array|false
31
 */
32
function b_xlanguage_select_show($options)
33
{
34
    global $xlanguage;
35
36
    $block = [];
37
38
    if (!class_exists(Helper::class)) {
39
        //  throw new \RuntimeException('Unable to create the $helper directory');
40
        return false;
41
    }
42
43
    $helper          = Helper::getInstance();
44
    $languageHandler = $helper->getHandler('Language');
45
    $languageHandler->loadConfig();
46
    $lang_list = $languageHandler->getAllList();
47
    if (!is_array($lang_list) || (count($lang_list) < 1)) {
0 ignored issues
show
introduced by
The condition is_array($lang_list) is always true.
Loading history...
48
        return $block;
49
    }
50
51
    $languages = [];
52
    foreach ($lang_list as $lang_name => $lang) {
53
        if (!isset($lang['base'])) {
54
            continue;
55
        }
56
        $languages[$lang_name]['name']  = $lang_name;
57
        $languages[$lang_name]['desc']  = $lang['base']->getVar('lang_desc');
58
        $languages[$lang_name]['image'] = XOOPS_URL . '/modules/xlanguage/assets/images/' . $lang['base']->getVar('lang_image');
59
        if (!isset($lang['ext']) || count($lang['ext']) < 1) {
60
            continue;
61
        }
62
        foreach ($lang['ext'] as $ext) {
63
            $langName                      = $ext->getVar('lang_name');
64
            $languages[$langName]['name']  = $langName;
65
            $languages[$langName]['desc']  = $ext->getVar('lang_desc');
66
            $languages[$langName]['image'] = XOOPS_URL . '/modules/xlanguage/assets/images/' . $ext->getVar('lang_image');
67
        }
68
    }
69
70
    $QUERY_STRING_array = array_filter(explode('&', xoops_getenv('QUERY_STRING')));
71
    $QUERY_STRING_new   = [];
72
    foreach ($QUERY_STRING_array as $QUERY) {
73
        if (0 !== mb_strpos($QUERY, XLANGUAGE_LANG_TAG . '=')) {
74
            $vals = explode('=', $QUERY);
75
            foreach (array_keys($vals) as $key) {
76
                if (preg_match('/^a-z0-9$/i', $vals[$key])) {
77
                    $vals[$key] = urlencode($vals[$key]);
78
                }
79
            }
80
            $QUERY_STRING_new[] = implode('=', $vals);
81
        }
82
    }
83
84
    $block['display']   = $options[0];
85
    $block['delimitor'] = $options[1];
86
    $block['number']    = $options[2];
87
    $block['selected']  = $xlanguage['lang']??'';
88
    if ('images' === $options[0] || 'text' === $options[0]) {
89
        $query_string = htmlspecialchars(implode('&', $QUERY_STRING_new), ENT_QUOTES | ENT_HTML5);
90
        $query_string .= empty($query_string) ? '' : '&amp;';
91
    } else {
92
        $query_string = implode('&', array_map('\htmlspecialchars', $QUERY_STRING_new));
93
        $query_string .= empty($query_string) ? '' : '&';
94
    }
95
    $block['url']       = xoops_getenv('SCRIPT_NAME') . '?' . $query_string . XLANGUAGE_LANG_TAG . '=';
96
    $block['languages'] = &$languages;
97
98
    return $block;
99
}
100
101
/**
102
 * @param $options
103
 * @return string
104
 */
105
function b_xlanguage_select_edit($options)
106
{
107
    $form = _MB_XLANGUAGE_DISPLAY_METHOD . "&nbsp;<select name='options[]'>";
108
    $form .= "<option value='images'";
109
    if ('images' === $options[0]) {
110
        $form .= ' selected';
111
    }
112
    $form .= '>' . _MB_XLANGUAGE_DISPLAY_FLAGLIST . "</option>\n";
113
    $form .= "<option value='text'";
114
    if ('text' === $options[0]) {
115
        $form .= ' selected';
116
    }
117
    $form .= '>' . _MB_XLANGUAGE_DISPLAY_TEXTLIST . "</option>\n";
118
    $form .= "<option value='dropdown'";
119
    if ('dropdown' === $options[0]) {
120
        $form .= ' selected';
121
    }
122
    $form .= '>' . _MB_XLANGUAGE_DISPLAY_DROPDOWNLIST . "</option>\n";
123
    $form .= "</select>\n";
124
    $form .= '<br>' . _MB_XLANGUAGE_IMAGE_SEPARATOR . ' (' . _MB_XLANGUAGE_OPTIONAL . "):&nbsp;<input type='text' name='options[]' value='" . $options[1] . "'>";
125
    $form .= '<br>' . _MB_XLANGUAGE_IMAGE_PERROW . ' (' . _MB_XLANGUAGE_OPTIONAL . "):&nbsp;<input type='text' name='options[]' value='" . $options[2] . "'>";
126
127
    return $form;
128
}
129