Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
bae079f71c | |||
28f4624e8d | |||
fbd215e741 | |||
2437096473 | |||
dfeee540cf | |||
a0b9e85f38 | |||
08153e6ec1 | |||
2660f5d2d0 | |||
82e67f0b83 | |||
41dd0d86e7 | |||
c8004f1a27 | |||
61edfb932a |
10
CHANGELOG.md
10
CHANGELOG.md
@ -2,6 +2,16 @@
|
||||
|
||||
# CHANGELOG
|
||||
|
||||
## 2024.2.29
|
||||
|
||||
- Fix Hook Functionality
|
||||
- Change Customer Menu
|
||||
|
||||
## 2024.2.28
|
||||
|
||||
- Fix Buy Plan with Balance
|
||||
- Add Expired date for reminder
|
||||
|
||||
## 2024.2.27
|
||||
|
||||
- fix path notification
|
||||
|
1
init.php
1
init.php
@ -96,6 +96,7 @@ $result = ORM::for_table('tbl_appconfig')->find_many();
|
||||
foreach ($result as $value) {
|
||||
$config[$value['setting']] = $value['value'];
|
||||
}
|
||||
$_c = $config;
|
||||
if (empty($http_proxy) && !empty($config['http_proxy'])) {
|
||||
$http_proxy = $config['http_proxy'];
|
||||
if (empty($http_proxyauth) && !empty($config['http_proxyauth'])) {
|
||||
|
@ -38,6 +38,7 @@ function register_menu($name, $admin, $function, $position, $icon = '', $label =
|
||||
$hook_registered = array();
|
||||
|
||||
function register_hook($action, $function){
|
||||
global $hook_registered;
|
||||
$hook_registered[] = [
|
||||
'action' => $action,
|
||||
'function' => $function
|
||||
|
@ -68,9 +68,13 @@ class Message
|
||||
|
||||
public static function sendPackageNotification($phone, $name, $package, $price, $message, $via)
|
||||
{
|
||||
global $u;
|
||||
$msg = str_replace('[[name]]', $name, $message);
|
||||
$msg = str_replace('[[package]]', $package, $msg);
|
||||
$msg = str_replace('[[price]]', $price, $msg);
|
||||
if($u){
|
||||
$msg = str_replace('[[expired_date]]', Lang::dateAndTimeFormat($u['expiration'], $u['time']), $msg);
|
||||
}
|
||||
if (
|
||||
!empty($phone) && strlen($phone) > 5
|
||||
&& !empty($message) && in_array($via, ['sms', 'wa'])
|
||||
|
@ -48,7 +48,7 @@ class Package
|
||||
$t->routers = $router_name;
|
||||
$t->type = "Balance";
|
||||
if ($admin) {
|
||||
$t->admin_id = $admin['id'];
|
||||
$t->admin_id = ($admin['id']) ? $admin['id'] : '0';
|
||||
} else {
|
||||
$t->admin_id = '0';
|
||||
}
|
||||
@ -152,7 +152,7 @@ class Package
|
||||
$b->routers = $router_name;
|
||||
$b->type = "Hotspot";
|
||||
if ($admin) {
|
||||
$b->admin_id = $admin['id'];
|
||||
$b->admin_id = ($admin['id']) ? $admin['id'] : '0';
|
||||
} else {
|
||||
$b->admin_id = '0';
|
||||
}
|
||||
@ -172,7 +172,7 @@ class Package
|
||||
$t->routers = $router_name;
|
||||
$t->type = "Hotspot";
|
||||
if ($admin) {
|
||||
$t->admin_id = $admin['id'];
|
||||
$t->admin_id = ($admin['id']) ? $admin['id'] : '0';
|
||||
} else {
|
||||
$t->admin_id = '0';
|
||||
}
|
||||
@ -201,9 +201,9 @@ class Package
|
||||
$d->routers = $router_name;
|
||||
$d->type = "Hotspot";
|
||||
if ($admin) {
|
||||
$b->admin_id = $admin['id'];
|
||||
$d->admin_id = ($admin['id']) ? $admin['id'] : '0';
|
||||
} else {
|
||||
$b->admin_id = '0';
|
||||
$d->admin_id = '0';
|
||||
}
|
||||
$d->save();
|
||||
|
||||
@ -221,7 +221,7 @@ class Package
|
||||
$t->routers = $router_name;
|
||||
$t->type = "Hotspot";
|
||||
if ($admin) {
|
||||
$t->admin_id = $admin['id'];
|
||||
$t->admin_id = ($admin['id']) ? $admin['id'] : '0';
|
||||
} else {
|
||||
$t->admin_id = '0';
|
||||
}
|
||||
@ -276,7 +276,7 @@ class Package
|
||||
$b->routers = $router_name;
|
||||
$b->type = "PPPOE";
|
||||
if ($admin) {
|
||||
$b->admin_id = $admin['id'];
|
||||
$b->admin_id = ($admin['id']) ? $admin['id'] : '0';
|
||||
} else {
|
||||
$b->admin_id = '0';
|
||||
}
|
||||
@ -296,7 +296,7 @@ class Package
|
||||
$t->routers = $router_name;
|
||||
$t->type = "PPPOE";
|
||||
if ($admin) {
|
||||
$t->admin_id = $admin['id'];
|
||||
$t->admin_id = ($admin['id']) ? $admin['id'] : '0';
|
||||
} else {
|
||||
$t->admin_id = '0';
|
||||
}
|
||||
@ -325,7 +325,7 @@ class Package
|
||||
$d->routers = $router_name;
|
||||
$d->type = "PPPOE";
|
||||
if ($admin) {
|
||||
$d->admin_id = $admin['id'];
|
||||
$d->admin_id = ($admin['id']) ? $admin['id'] : '0';
|
||||
} else {
|
||||
$d->admin_id = '0';
|
||||
}
|
||||
@ -344,7 +344,7 @@ class Package
|
||||
$t->method = "$gateway - $channel";
|
||||
$t->routers = $router_name;
|
||||
if ($admin) {
|
||||
$t->admin_id = $admin['id'];
|
||||
$t->admin_id = ($admin['id']) ? $admin['id'] : '0';
|
||||
} else {
|
||||
$t->admin_id = '0';
|
||||
}
|
||||
|
@ -12,6 +12,9 @@ $ui->assign('_system_menu', 'customers');
|
||||
$action = $routes['1'];
|
||||
$ui->assign('_admin', $admin);
|
||||
|
||||
if(empty($action)){
|
||||
$action = 'list';
|
||||
}
|
||||
|
||||
switch ($action) {
|
||||
case 'list':
|
||||
|
@ -142,7 +142,7 @@ switch ($action) {
|
||||
$ui->display('user-orderView.tpl');
|
||||
break;
|
||||
case 'pay':
|
||||
if ($_c['enable_balance'] != 'yes' && $config['allow_balance_transfer'] != 'yes') {
|
||||
if ($config['enable_balance'] != 'yes') {
|
||||
r2(U . "order/package", 'e', Lang::T("Balance not enabled"));
|
||||
}
|
||||
$plan = ORM::for_table('tbl_plans')->where('enabled', '1')->find_one($routes['3']);
|
||||
@ -176,7 +176,7 @@ switch ($action) {
|
||||
}
|
||||
break;
|
||||
case 'send':
|
||||
if ($_c['enable_balance'] != 'yes') {
|
||||
if ($config['enable_balance'] != 'yes') {
|
||||
r2(U . "order/package", 'e', Lang::T("Balance not enabled"));
|
||||
}
|
||||
$ui->assign('_title', Lang::T('Buy for friend'));
|
||||
|
@ -36,9 +36,9 @@ switch ($action) {
|
||||
$logo = $UPLOAD_PATH . DIRECTORY_SEPARATOR . 'logo.default.png';
|
||||
}
|
||||
$ui->assign('logo', $logo);
|
||||
if ($_c['radius_enable'] && empty($_c['radius_client'])) {
|
||||
if ($config['radius_enable'] && empty($config['radius_client'])) {
|
||||
try {
|
||||
$_c['radius_client'] = Radius::getClient();
|
||||
$config['radius_client'] = Radius::getClient();
|
||||
$ui->assign('_c', $_c);
|
||||
} catch (Exception $e) {
|
||||
//ignore
|
||||
|
@ -24,7 +24,7 @@ echo "Found " . count($d) . " user(s)\n";
|
||||
run_hook('cronjob'); #HOOK
|
||||
|
||||
foreach ($d as $ds) {
|
||||
if ($ds['type'] == 'Hotspot') {
|
||||
if ($ds['type'] == 'Hotspot') { # HOTSPOT
|
||||
$date_now = strtotime(date("Y-m-d H:i:s"));
|
||||
$expiration = strtotime($ds['expiration'] . ' ' . $ds['time']);
|
||||
echo $ds['expiration'] . " : " . (($isCli) ? $ds['username'] : Lang::maskText($ds['username']));
|
||||
@ -82,7 +82,7 @@ foreach ($d as $ds) {
|
||||
}
|
||||
} else
|
||||
echo " : ACTIVE \r\n";
|
||||
} else {
|
||||
} else { # PPPOE
|
||||
$date_now = strtotime(date("Y-m-d H:i:s"));
|
||||
$expiration = strtotime($ds['expiration'] . ' ' . $ds['time']);
|
||||
echo $ds['expiration'] . " : " . (($isCli) ? $ds['username'] : Lang::maskText($ds['username']));
|
||||
|
@ -15,13 +15,14 @@
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Expired Notification Message')}</label>
|
||||
<div class="col-md-6">
|
||||
<textarea class="form-control" id="expired"
|
||||
name="expired"
|
||||
<textarea class="form-control" id="expired" name="expired"
|
||||
placeholder="Hello [[name]], your internet package [[package]] has been expired"
|
||||
rows="3">{if $_json['expired']!=''}{Lang::htmlspecialchars($_json['expired'])}{else}Hello [[name]], your internet package [[package]] has been expired.{/if}</textarea>
|
||||
</div>
|
||||
<p class="help-block col-md-4">
|
||||
<b>[[name]]</b> will be replaced with Customer Name. <b>[[package]]</b> will be replaced with Package name. <b>[[price]]</b> will be replaced with Package price.
|
||||
<b>[[name]]</b> will be replaced with Customer Name.
|
||||
<b>[[package]]</b> will be replaced with Package name.
|
||||
<b>[[price]]</b> will be replaced with Package price.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -33,7 +34,10 @@
|
||||
rows="3">{Lang::htmlspecialchars($_json['reminder_7_day'])}</textarea>
|
||||
</div>
|
||||
<p class="help-block col-md-4">
|
||||
<b>[[name]]</b> will be replaced with Customer Name. <b>[[package]]</b> will be replaced with Package name. <b>[[price]]</b> will be replaced with Package price.
|
||||
<b>[[name]]</b> will be replaced with Customer Name.
|
||||
<b>[[package]]</b> will be replaced with Package name.
|
||||
<b>[[price]]</b> will be replaced with Package price.
|
||||
<b>[[expired_date]]</b> will be replaced with Expiration date.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -45,7 +49,10 @@
|
||||
rows="3">{Lang::htmlspecialchars($_json['reminder_3_day'])}</textarea>
|
||||
</div>
|
||||
<p class="help-block col-md-4">
|
||||
<b>[[name]]</b> will be replaced with Customer Name. <b>[[package]]</b> will be replaced with Package name. <b>[[price]]</b> will be replaced with Package price.
|
||||
<b>[[name]]</b> will be replaced with Customer Name.
|
||||
<b>[[package]]</b> will be replaced with Package name.
|
||||
<b>[[price]]</b> will be replaced with Package price.
|
||||
<b>[[expired_date]]</b> will be replaced with Expiration date.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -57,7 +64,10 @@
|
||||
rows="3">{Lang::htmlspecialchars($_json['reminder_1_day'])}</textarea>
|
||||
</div>
|
||||
<p class="help-block col-md-4">
|
||||
<b>[[name]]</b> will be replaced with Customer Name. <b>[[package]]</b> will be replaced with Package name. <b>[[price]]</b> will be replaced with Package price.
|
||||
<b>[[name]]</b> will be replaced with Customer Name.
|
||||
<b>[[package]]</b> will be replaced with Package name.
|
||||
<b>[[price]]</b> will be replaced with Package price.
|
||||
<b>[[expired_date]]</b> will be replaced with Expiration date.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -149,8 +159,7 @@
|
||||
|
||||
<div class="panel-body">
|
||||
<div class="form-group">
|
||||
<button class="btn btn-success btn-block"
|
||||
type="submit">{Lang::T('Save Changes')}</button>
|
||||
<button class="btn btn-success btn-block" type="submit">{Lang::T('Save Changes')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -108,8 +108,7 @@
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Attributes')}</label>
|
||||
<div id="custom-fields-container" class="col-md-6">
|
||||
<button class="btn btn-success btn-sm" type="button"
|
||||
id="add-custom-field">+</button>
|
||||
<button class="btn btn-success btn-sm" type="button" id="add-custom-field">+</button>
|
||||
</div>
|
||||
</div>
|
||||
<!--Customers Attributes add end -->
|
||||
|
@ -60,6 +60,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-7">
|
||||
|
||||
<!-- solid sales graph -->
|
||||
{if $_c['hide_mrc'] != 'yes'}
|
||||
<div class="box box-solid ">
|
||||
@ -71,7 +74,8 @@
|
||||
<div class="box-tools pull-right">
|
||||
<button type="button" class="btn bg-teal btn-sm" data-widget="collapse"><i class="fa fa-minus"></i>
|
||||
</button>
|
||||
<a href="{$_url}settings/app#hide_dashboard_content" class="btn bg-teal btn-sm" ><i class="fa fa-times"></i>
|
||||
<a href="{$_url}settings/app#hide_dashboard_content" class="btn bg-teal btn-sm"><i
|
||||
class="fa fa-times"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@ -92,7 +96,8 @@
|
||||
<div class="box-tools pull-right">
|
||||
<button type="button" class="btn bg-teal btn-sm" data-widget="collapse"><i class="fa fa-minus"></i>
|
||||
</button>
|
||||
<a href="{$_url}settings/app#hide_dashboard_content" class="btn bg-teal btn-sm" ><i class="fa fa-times"></i>
|
||||
<a href="{$_url}settings/app#hide_dashboard_content" class="btn bg-teal btn-sm"><i
|
||||
class="fa fa-times"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@ -101,8 +106,6 @@
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
<div class="row">
|
||||
<div class="col-md-7">
|
||||
{if $_c['disable_voucher'] != 'yes' && $stocks['unused']>0 || $stocks['used']>0}
|
||||
{if $_c['hide_vs'] != 'yes'}
|
||||
<div class="panel panel-primary mb20 panel-hovered project-stats table-responsive">
|
||||
|
@ -130,20 +130,11 @@
|
||||
</li>
|
||||
{$_MENU_AFTER_DASHBOARD}
|
||||
{if !in_array($_admin['user_type'],['Report'])}
|
||||
<li class="{if $_system_menu eq 'customers'}active{/if} treeview">
|
||||
<a href="#">
|
||||
<i class="ion ion-android-contacts"></i> <span>{Lang::T('Customer')}</span>
|
||||
<span class="pull-right-container">
|
||||
<i class="fa fa-angle-left pull-right"></i>
|
||||
</span>
|
||||
<li {if $_system_menu eq 'customers'}class="active" {/if}>
|
||||
<a href="{$_url}customers">
|
||||
<i class="fa fa-users"></i>
|
||||
<span>{Lang::T('Customer')}</span>
|
||||
</a>
|
||||
<ul class="treeview-menu">
|
||||
<li {if $_routes[1] eq 'add'}class="active" {/if}><a href="{$_url}customers/add"><i
|
||||
class="fa fa-user-plus"></i> {Lang::T('Add New Contact')}</a></li>
|
||||
<li {if $_routes[1] eq 'list'}class="active" {/if}><a href="{$_url}customers/list"><i
|
||||
class="fa fa-users"></i> {Lang::T('List Contact')}</a></li>
|
||||
{$_MENU_CUSTOMERS}
|
||||
</ul>
|
||||
</li>
|
||||
{$_MENU_AFTER_CUSTOMERS}
|
||||
<li class="{if $_system_menu eq 'prepaid'}active{/if} treeview">
|
||||
|
@ -111,7 +111,7 @@
|
||||
<div class="box-header">
|
||||
<h3 class="box-title">{$_bill['routers']}</h3>
|
||||
<div class="btn-group pull-right">
|
||||
{if $_bill['type'] != 'Hotspot'}
|
||||
{if $_bill['type'] == 'Hotspot'}
|
||||
{if $_c['hotspot_plan']==''}Hotspot Plan{else}{$_c['hotspot_plan']}{/if}
|
||||
{else}
|
||||
{if $_c['pppoe_plan']==''}PPPOE Plan{else}{$_c['pppoe_plan']}{/if}
|
||||
|
@ -77,6 +77,9 @@ if (empty($step)) {
|
||||
// remove downloaded zip
|
||||
if (file_exists($file)) unlink($file);
|
||||
} else if ($step == 3) {
|
||||
deleteFolder('system/autoload/');
|
||||
deleteFolder('system/vendor/');
|
||||
deleteFolder('ui/ui/');
|
||||
copyFolder($folder, pathFixer('./'));
|
||||
deleteFolder('install/');
|
||||
deleteFolder($folder);
|
||||
|
@ -1,3 +1,3 @@
|
||||
{
|
||||
"version": "2024.2.27"
|
||||
"version": "2024.2.29"
|
||||
}
|
Reference in New Issue
Block a user