Completed
Pull Request — develop (#518)
by Agel_Nash
06:14
created

action_connection.php ➔ getLangs()   C

Complexity

Conditions 8
Paths 12

Size

Total Lines 29
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 8
eloc 19
nc 12
nop 1
dl 0
loc 29
rs 5.3846
c 0
b 0
f 0
1
<?php
2
$installMode = isset($_POST['installmode']) ? (int)$_POST['installmode'] : 0;
3
4
// Determine upgradeability
5
$upgradeable= 0;
6
if ($installMode === 0) {
7
    $database_name= '';
8
    $database_server= 'localhost';
9
    $table_prefix= substr(md5(time()), rand(0, 27), rand(3, 5))."_";
10
} else {
11
    $database_name = '';
12
    if (!is_file($base_path.MGR_DIR.'/includes/config.inc.php')) $upgradeable = 0;
13
    else {
14
        // Include the file so we can test its validity
15
        include($base_path.MGR_DIR.'/includes/config.inc.php');
16
        // We need to have all connection settings - but prefix may be empty so we have to ignore it
17
        if ($dbase) {
18
          $database_name = trim($dbase, '`');
19 View Code Duplication
          if (!$conn = mysqli_connect($database_server, $database_user, $database_password))
20
              $upgradeable = (isset($_POST['installmode']) && $_POST['installmode']=='new') ? 0 : 2;
21
          elseif (! mysqli_select_db($conn, trim($dbase, '`')))
22
              $upgradeable = (isset($_POST['installmode']) && $_POST['installmode']=='new') ? 0 : 2;
23
          else
24
              $upgradeable = 1;
25
        }
26
        else $upgradable= 2;
27
    }
28
}
29
30
// check the database collation if not specified in the configuration
31 View Code Duplication
if ($upgradeable && (!isset ($database_connection_charset) || empty($database_connection_charset))) {
32
    if (!$rs = mysqli_query($conn, "show session variables like 'collation_database'")) {
33
        $rs = mysqli_query($conn, "show session variables like 'collation_server'");
34
    }
35
    if ($rs && $collation = mysqli_fetch_row($rs)) {
36
        $database_collation = $collation[1];
37
    }
38
    if (empty ($database_collation)) {
39
        $database_collation = 'utf8_general_ci';
40
    }
41
    $database_charset = substr($database_collation, 0, strpos($database_collation, '_'));
42
    $database_connection_charset = $database_charset;
43
} else {
44
    $database_collation = 'utf8_general_ci';
45
}
46
47
// determine the database connection method if not specified in the configuration
48
if ($upgradeable && (!isset($database_connection_method) || empty($database_connection_method))) {
49
    $database_connection_method = 'SET CHARACTER SET';
50
}
51
52
$ph['database_name'] = isset($_POST['database_name']) ? $_POST['database_name']: $database_name;
53
$ph['tableprefix'] = isset($_POST['tableprefix']) ? $_POST['tableprefix']: $table_prefix;
54
$ph['selected_set_character_set'] = isset($database_connection_method) && $database_connection_method == 'SET CHARACTER SET' ? 'selected' : '';
55
$ph['selected_set_names'] = isset($database_connection_method) && $database_connection_method == 'SET NAMES' ? 'selected' : '';
56
$ph['show#connection_method'] = (($installMode == 0) || ($installMode == 2)) ? 'block' : 'none';
57
$ph['database_collation'] = isset($_POST['database_collation']) ? $_POST['database_collation']: $database_collation;
58
$ph['show#AUH'] = ($installMode == 0) ? 'block':'none';
59
$ph['cmsadmin'] = isset($_POST['cmsadmin']) ? $_POST['cmsadmin']:'admin';
60
$ph['cmsadminemail'] = isset($_POST['cmsadminemail']) ? $_POST['cmsadminemail']:"";
61
$ph['cmspassword'] = isset($_POST['cmspassword']) ? $_POST['cmspassword']:"";
62
$ph['cmspasswordconfirm'] = isset($_POST['cmspasswordconfirm']) ? $_POST['cmspasswordconfirm']:"";
63
$ph['managerLangs'] = getLangs($install_language);
64
$ph['install_language'] = $install_language;
65
$ph['installMode'] = $installMode;
66
$ph['checkedChkagree']  = isset($_POST['chkagree']) ? 'checked':"";
67
$ph['database_connection_method'] = isset($database_connection_method) ? $database_connection_method : '';
68
$ph['databasehost'] = isset($_POST['databasehost']) ? $_POST['databasehost']: $database_server;
69
$ph['databaseloginname'] = isset($_SESSION['databaseloginname']) ? $_SESSION['databaseloginname']: '';
70
$ph['databaseloginpassword'] = isset($_SESSION['databaseloginpassword']) ? $_SESSION['databaseloginpassword']: "";
71
$ph['MGR_DIR'] = MGR_DIR;
72
73
$content = file_get_contents('./actions/tpl_connection.html');
74
$content = parse($content, $_lang, '[%','%]');
75
$content = parse($content, $ph);
76
echo $content;
77
78
if( ! function_exists('getLangs')) {
79
    /**
80
     * @param $install_language
81
     * @return string
82
     */
83
    function getLangs($install_language)
84
    {
85
        if ($install_language !== "english" && is_file(sprintf("../%s/includes/lang/%s.inc.php", MGR_DIR, $install_language))) {
86
            $manager_language = $install_language;
87
        } else {
88
            $manager_language = "english";
89
        }
90
91
        $langs = array();
92
        if ($handle = opendir("../" . MGR_DIR . "/includes/lang")) {
93
            while (false !== ($file = readdir($handle))) {
94
                if (strpos($file, '.inc.') !== false) {
95
                    $langs[] = $file;
96
                }
97
            }
98
            closedir($handle);
99
        }
100
        sort($langs);
101
102
        $_ = array();
103
        foreach ($langs as $language) {
104
            $abrv_language = explode('.', $language);
105
            $selected = (strtolower($abrv_language[0]) == strtolower($manager_language)) ? ' selected' : '';
106
            $_[] = sprintf('<option value="%s" %s>%s</option>', $abrv_language[0], $selected,
107
                ucwords($abrv_language[0]));
108
        }
109
110
        return implode("\n", $_);
111
    }
112
}
113