diff --git a/init.php b/init.php index e636d04d..c33acdfc 100644 --- a/init.php +++ b/init.php @@ -131,17 +131,26 @@ if ((!empty($radius_user) && $config['radius_enable']) || _post('radius_enable') } -if (empty($config['language'])) { - $config['language'] = 'english'; +// Check if the user has selected a language +if (!empty($_SESSION['user_language'])) { + $config['language'] = $_SESSION['user_language']; } -$lan_file = $root_path . File::pathFixer('system/lan/' . $config['language'] . '.json'); -if (file_exists($lan_file)) { - $_L = json_decode(file_get_contents($lan_file), true); - $_SESSION['Lang'] = $_L; + +if (empty($_SESSION['Lang'])) { + if (empty($config['language'])) { + $config['language'] = 'english'; + } + $lan_file = $root_path . File::pathFixer('system/lan/' . $config['language'] . '.json'); + if (file_exists($lan_file)) { + $_L = json_decode(file_get_contents($lan_file), true); + $_SESSION['Lang'] = $_L; + } else { + $_L['author'] = 'Auto Generated by iBNuX Script'; + $_SESSION['Lang'] = $_L; + file_put_contents($lan_file, json_encode($_L)); + } } else { - $_L['author'] = 'Auto Generated by iBNuX Script'; - $_SESSION['Lang'] = $_L; - file_put_contents($lan_file, json_encode($_L)); + $_L = $_SESSION['Lang']; } diff --git a/system/autoload/Lang.php b/system/autoload/Lang.php index c6328293..e037bf60 100644 --- a/system/autoload/Lang.php +++ b/system/autoload/Lang.php @@ -10,7 +10,12 @@ class Lang { public static function T($key) { - global $_L, $lan_file, $config; + global $_L, $lan_file, $root_path, $config; + + if (empty($lan_file)) { + $lan_file = $root_path . File::pathFixer('system/lan/' . $config['language'] . '.json'); + } + if (is_array($_SESSION['Lang'])) { $_L = array_merge($_L, $_SESSION['Lang']); } diff --git a/system/autoload/Validator.php b/system/autoload/Validator.php index c435fe95..a5e02091 100644 --- a/system/autoload/Validator.php +++ b/system/autoload/Validator.php @@ -325,6 +325,6 @@ class Validator public static function containsKeyword($string, $keywords = ['mikrotik', 'hotspot', 'pppoe', 'radius', 'dummy']) { $regex = '/' . implode('|', $keywords) . '/i'; - return preg_match($regex, $string); + return preg_match($regex, strtolower($string)); } } diff --git a/system/boot.php b/system/boot.php index 67101234..374a5b24 100644 --- a/system/boot.php +++ b/system/boot.php @@ -46,6 +46,7 @@ $ui->assign('_domain', str_replace('www.', '', parse_url(APP_URL, PHP_URL_HOST)) $ui->assign('_url', APP_URL . '/?_route='); $ui->assign('_path', __DIR__); $ui->assign('_c', $config); +$ui->assign('user_language', $_SESSION['user_language']); $ui->assign('UPLOAD_PATH', str_replace($root_path, '', $UPLOAD_PATH)); $ui->assign('CACHE_PATH', str_replace($root_path, '', $CACHE_PATH)); $ui->assign('PAGES_PATH', str_replace($root_path, '', $PAGES_PATH)); diff --git a/system/controllers/accounts.php b/system/controllers/accounts.php index 373cce22..1c40cef8 100644 --- a/system/controllers/accounts.php +++ b/system/controllers/accounts.php @@ -37,7 +37,7 @@ switch ($action) { } $user->password = $npass; $turs = ORM::for_table('tbl_user_recharges')->where('customer_id', $user['id'])->find_many(); - foreach($turs as $tur) { + foreach ($turs as $tur) { // if has active plan, change the password to devices if ($tur['status'] == 'on') { $p = ORM::for_table('tbl_plans')->where('id', $tur['plan_id'])->find_one(); @@ -239,6 +239,28 @@ switch ($action) { r2(U . 'accounts/profile', 's', Lang::T('Phone number updated successfully')); break; + case 'language-update-post': + global $root_path; + $selected_language = _req('lang', 'english'); + + $_SESSION['user_language'] = $selected_language; + + $lan_file = $root_path . File::pathFixer('system/lan/' . $selected_language . '.json'); + + if (file_exists($lan_file)) { + $_L = json_decode(file_get_contents($lan_file), true); + $_SESSION['Lang'] = $_L; + } else { + $_L['author'] = 'Auto Generated by iBNuX Script'; + $_SESSION['Lang'] = $_L; + file_put_contents($lan_file, json_encode($_L)); + } + + r2($_SERVER['HTTP_REFERER'], 's', ucwords($selected_language)); + + + break; + default: $ui->display('a404.tpl'); } diff --git a/system/controllers/autoload_user.php b/system/controllers/autoload_user.php index 78b51c14..be1fc66b 100644 --- a/system/controllers/autoload_user.php +++ b/system/controllers/autoload_user.php @@ -21,7 +21,7 @@ switch ($action) { $p = ORM::for_table('tbl_plans')->find_one($bill['plan_id']); $dvc = Package::getDevice($p); if ($_app_stage != 'demo') { - try{ + try { if (file_exists($dvc)) { require_once $dvc; if ((new $p['device'])->online_customer($user, $bill['routers'])) { @@ -36,7 +36,7 @@ switch ($action) { } else { die(Lang::T('-')); } - }catch (Exception $e) { + } catch (Exception $e) { die(Lang::T('Failed to connect to device')); } } @@ -47,14 +47,31 @@ switch ($action) { break; case 'inbox_unread': $count = ORM::for_table('tbl_customers_inbox')->where('customer_id', $user['id'])->whereRaw('date_read is null')->count('id'); - if($count>0){ + if ($count > 0) { echo $count; } die(); case 'inbox': $inboxs = ORM::for_table('tbl_customers_inbox')->selects(['id', 'subject', 'date_created'])->where('customer_id', $user['id'])->whereRaw('date_read is null')->order_by_desc('date_created')->limit(10)->find_many(); - foreach($inboxs as $inbox){ - echo '