Merge branch 'hotspotbilling:Development' into Development

This commit is contained in:
Ahmad Husein 2024-08-15 16:48:38 +07:00 committed by GitHub
commit a4303a4804
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 101 additions and 22 deletions

View File

@ -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'];
}

View File

@ -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']);
}

View File

@ -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));
}
}

View File

@ -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));

View File

@ -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');
}

View File

@ -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 '<li><a href="'.U.'mail/view/'.$inbox['id'].'">'.$inbox['subject'].'<br><sub class="text-muted">'.Lang::dateTimeFormat($inbox['date_created']).'</sub></a></li>';
foreach ($inboxs as $inbox) {
echo '<li><a href="' . U . 'mail/view/' . $inbox['id'] . '">' . $inbox['subject'] . '<br><sub class="text-muted">' . Lang::dateTimeFormat($inbox['date_created']) . '</sub></a></li>';
}
die();
case 'language':
$select = _get('select');
$folders = [];
$files = scandir('system/lan/');
foreach ($files as $file) {
if (is_file('system/lan/' . $file) && !in_array($file, ['index.html', 'country.json', '.DS_Store'])) {
$file = str_replace(".json", "", $file);
if(!empty($file)){
echo '<li><a href="' . U . 'accounts/language-update-post&lang=' . $file. '">';
if($select == $file){
echo '<span class="glyphicon glyphicon-ok"></span> ';
}
echo ucwords($file) . '</a></li>';
}
}
}
die();
default:

View File

@ -722,5 +722,7 @@
"in_here_too_": "in here too.",
"Empty_this_to_use_internal_mail___PHP": "Empty this to use internal mail() PHP",
"Mail_Reply_To": "Mail Reply To",
"Customer_will_reply_email_to_this_address__empty_if_you_want_to_use_From_Address": "Customer will reply email to this address, empty if you want to use From Address"
"Customer_will_reply_email_to_this_address__empty_if_you_want_to_use_From_Address": "Customer will reply email to this address, empty if you want to use From Address",
"You_will_get_Payment_and_Error_notification": "You will get Payment and Error notification",
"Languge_set_to_english": "Bahasa diatur ke bahasa Inggris"
}

View File

@ -567,5 +567,6 @@
"Hotspot_Auth_Method": "Metode Otentikasi Hotspot",
"Api": "Api",
"Http_Chap": "Http-Bab",
"Hotspot_Authentication_Method__Make_sure_you_have_changed_your_hotspot_login_page_": "Metode Otentikasi Hotspot. Pastikan Anda telah mengubah halaman login hotspot Anda."
"Hotspot_Authentication_Method__Make_sure_you_have_changed_your_hotspot_login_page_": "Metode Otentikasi Hotspot. Pastikan Anda telah mengubah halaman login hotspot Anda.",
"Languge_set_to_indonesia": "Language set to indonesia"
}

View File

@ -373,5 +373,6 @@
"Hotspot": "Hotspot",
"Monthly_Registered_Customers": "Monthly Registered Customers",
"Total_Monthly_Sales": "Total Monthly Sales",
"Active_Users": "Active Users"
"Active_Users": "Active Users",
"Languge_set_to_spanish": "Bahasa disetel ke bahasa Spanyol"
}

View File

@ -895,4 +895,4 @@ add dst-host=*.{$_domain}</pre>
document.getElementById("tax_rate").addEventListener("change", toggleCustomTaxRate);
});
</script>
{include file="sections/footer.tpl"}
{include file="sections/footer.tpl"}

View File

@ -66,6 +66,15 @@
transform: rotate(360deg);
}
}
.dropdown-menu .dropdown-item {
margin-bottom: 5px;
}
.dropdown-menu .dropdown-item button {
margin: 0;
padding: 10px;
}
</style>
{if isset($xheader)}
@ -87,10 +96,22 @@
</a>
<div class="navbar-custom-menu">
<ul class="nav navbar-nav">
<li class="dropdown tasks-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="true">
<i class="fa fa-flag-o"></i> <span class="d-none d-sm-inline">{ucwords($user_language)}</span>
</a>
<ul class="dropdown-menu">
<li>
<!-- inner menu: contains the actual data -->
<ul class="menu" api-get-text="{$_url}autoload_user/language&select={$user_language}"></ul>
</li>
</ul>
</li>
<li class="dropdown notifications-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<i class="fa fa-envelope-o"></i>
<span class="label label-warning" api-get-text="{$_url}autoload_user/inbox_unread"></span>
<span class="label label-warning"
api-get-text="{$_url}autoload_user/inbox_unread"></span>
</a>
<ul class="dropdown-menu">
<li>