Merge pull request #10 from hotspotbilling/Development

- Fix link buy Voucher
- Add email field to registration form
- Change registration design Form
- Add Setting to disable Voucher
- Fix Title for PPPOE plans
- Fix Plugin Cache
This commit is contained in:
iBNu Maksum 2023-07-28 01:44:32 -07:00 committed by GitHub
commit 6aa4fe8b96
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 112 additions and 34 deletions

View File

@ -2,6 +2,14 @@
# CHANGELOG # CHANGELOG
## 2023.7.28
- Fix link buy Voucher
- Add email field to registration form
- Change registration design Form
- Add Setting to disable Voucher
- Fix Title for PPPOE plans
- Fix Plugin Cache
## 2023.6.20 ## 2023.6.20
- Hide time for Created date. - Hide time for Created date.

View File

@ -31,7 +31,7 @@ Most current web servers with PHP & MySQL installed will be capable of running P
Minimum Requirements Minimum Requirements
- Linux or Windows OS - Linux or Windows OS
- PHP Version 7.2+ - PHP Version 7.4
- Both PDO & MySQLi Support - Both PDO & MySQLi Support
- GD2 Image Library - GD2 Image Library
- CURL support - CURL support

View File

@ -56,6 +56,7 @@ switch ($action) {
} else { } else {
r2(U . "order/package/", 's', Lang::T("You have no unpaid transaction")); r2(U . "order/package/", 's', Lang::T("You have no unpaid transaction"));
} }
break;
case 'view': case 'view':
$trxid = $routes['2'] * 1; $trxid = $routes['2'] * 1;
$trx = ORM::for_table('tbl_payment_gateway') $trx = ORM::for_table('tbl_payment_gateway')

View File

@ -20,7 +20,7 @@ if ($admin['user_type'] != 'Admin') {
} }
$cache = File::pathFixer('system/cache/plugin_repository.json'); $cache = File::pathFixer('system/cache/plugin_repository.json');
if (file_exists($cache) && time() - filemtime($cache) > (24 * 60 * 60)) { if (file_exists($cache) && time() - filemtime($cache) < (24 * 60 * 60)) {
$json = json_decode(file_get_contents($cache), true); $json = json_decode(file_get_contents($cache), true);
} else { } else {
$data = file_get_contents($plugin_repository); $data = file_get_contents($plugin_repository);

View File

@ -20,12 +20,15 @@ switch ($do) {
case 'post': case 'post':
$otp_code = _post('otp_code'); $otp_code = _post('otp_code');
$username = alphanumeric(_post('username'),"+_."); $username = alphanumeric(_post('username'),"+_.");
$email = _post('email');
$fullname = _post('fullname'); $fullname = _post('fullname');
$password = _post('password'); $password = _post('password');
$cpassword = _post('cpassword'); $cpassword = _post('cpassword');
$address = _post('address'); $address = _post('address');
if(!empty($config['sms_url'])){ if(!empty($config['sms_url'])){
$phonenumber = $username; $phonenumber = $username;
}else if(strlen($username)<21){
$phonenumber = $username;
} }
$msg = ''; $msg = '';
if (Validator::Length($username, 35, 2) == false) { if (Validator::Length($username, 35, 2) == false) {
@ -37,6 +40,9 @@ switch ($do) {
if (!Validator::Length($password, 35, 2)) { if (!Validator::Length($password, 35, 2)) {
$msg .= 'Password should be between 3 to 35 characters' . '<br>'; $msg .= 'Password should be between 3 to 35 characters' . '<br>';
} }
if (!Validator::Email($email)) {
$msg .= 'Email is not Valid<br>';
}
if ($password != $cpassword) { if ($password != $cpassword) {
$msg .= $_L['PasswordsNotMatch'] . '<br>'; $msg .= $_L['PasswordsNotMatch'] . '<br>';
} }
@ -53,6 +59,7 @@ switch ($do) {
$ui->assign('username', $username); $ui->assign('username', $username);
$ui->assign('fullname', $fullname); $ui->assign('fullname', $fullname);
$ui->assign('address', $address); $ui->assign('address', $address);
$ui->assign('email', $email);
$ui->assign('phonenumber', $phonenumber); $ui->assign('phonenumber', $phonenumber);
$ui->assign('notify', '<div class="alert alert-success"> $ui->assign('notify', '<div class="alert alert-success">
<button type="button" class="close" data-dismiss="alert"> <button type="button" class="close" data-dismiss="alert">
@ -79,7 +86,7 @@ switch ($do) {
$d->password = $password; $d->password = $password;
$d->fullname = $fullname; $d->fullname = $fullname;
$d->address = $address; $d->address = $address;
$d->email = ''; $d->email = $email;
$d->phonenumber = $phonenumber; $d->phonenumber = $phonenumber;
if ($d->save()) { if ($d->save()) {
$user = $d->id(); $user = $d->id();
@ -88,6 +95,7 @@ switch ($do) {
$ui->assign('username', $username); $ui->assign('username', $username);
$ui->assign('fullname', $fullname); $ui->assign('fullname', $fullname);
$ui->assign('address', $address); $ui->assign('address', $address);
$ui->assign('email', $email);
$ui->assign('phonenumber', $phonenumber); $ui->assign('phonenumber', $phonenumber);
$ui->assign('notify', '<div class="alert alert-danger"> $ui->assign('notify', '<div class="alert alert-danger">
<button type="button" class="close" data-dismiss="alert"> <button type="button" class="close" data-dismiss="alert">
@ -101,6 +109,7 @@ switch ($do) {
$ui->assign('username', $username); $ui->assign('username', $username);
$ui->assign('fullname', $fullname); $ui->assign('fullname', $fullname);
$ui->assign('address', $address); $ui->assign('address', $address);
$ui->assign('email', $email);
$ui->assign('phonenumber', $phonenumber); $ui->assign('phonenumber', $phonenumber);
$ui->assign('notify', '<div class="alert alert-danger"> $ui->assign('notify', '<div class="alert alert-danger">
<button type="button" class="close" data-dismiss="alert"> <button type="button" class="close" data-dismiss="alert">
@ -152,6 +161,7 @@ switch ($do) {
$ui->assign('username', ""); $ui->assign('username', "");
$ui->assign('fullname', ""); $ui->assign('fullname', "");
$ui->assign('address', ""); $ui->assign('address', "");
$ui->assign('email', "");
$ui->assign('otp', false); $ui->assign('otp', false);
run_hook('view_register'); #HOOK run_hook('view_register'); #HOOK
$ui->display('register.tpl'); $ui->display('register.tpl');

View File

@ -238,6 +238,7 @@ switch ($action) {
break; break;
case 'pppoe': case 'pppoe':
$ui->assign('_title', $_L['PPPOE_Plans']);
$ui->assign('xfooter', '<script type="text/javascript" src="ui/lib/c/pppoe.js"></script>'); $ui->assign('xfooter', '<script type="text/javascript" src="ui/lib/c/pppoe.js"></script>');
$name = _post('name'); $name = _post('name');
@ -256,6 +257,7 @@ switch ($action) {
break; break;
case 'pppoe-add': case 'pppoe-add':
$ui->assign('_title', $_L['PPPOE_Plans']);
$d = ORM::for_table('tbl_bandwidth')->find_many(); $d = ORM::for_table('tbl_bandwidth')->find_many();
$ui->assign('d', $d); $ui->assign('d', $d);
$p = ORM::for_table('tbl_pool')->find_many(); $p = ORM::for_table('tbl_pool')->find_many();
@ -267,6 +269,7 @@ switch ($action) {
break; break;
case 'pppoe-edit': case 'pppoe-edit':
$ui->assign('_title', $_L['PPPOE_Plans']);
$id = $routes['2']; $id = $routes['2'];
$d = ORM::for_table('tbl_plans')->find_one($id); $d = ORM::for_table('tbl_plans')->find_one($id);
if ($d) { if ($d) {

View File

@ -206,6 +206,7 @@ switch ($action) {
case 'app-post': case 'app-post':
$company = _post('company'); $company = _post('company');
$footer = _post('footer'); $footer = _post('footer');
$disable_voucher = _post('disable_voucher');
$telegram_bot = _post('telegram_bot'); $telegram_bot = _post('telegram_bot');
$telegram_target_id = _post('telegram_target_id'); $telegram_target_id = _post('telegram_target_id');
$sms_url = _post('sms_url'); $sms_url = _post('sms_url');
@ -245,6 +246,17 @@ switch ($action) {
$d->save(); $d->save();
} }
$d = ORM::for_table('tbl_appconfig')->where('setting', 'disable_voucher')->find_one();
if($d){
$d->value = $disable_voucher;
$d->save();
}else{
$d = ORM::for_table('tbl_appconfig')->create();
$d->setting = 'disable_voucher';
$d->value = $disable_voucher;
$d->save();
}
$d = ORM::for_table('tbl_appconfig')->where('setting', 'telegram_bot')->find_one(); $d = ORM::for_table('tbl_appconfig')->where('setting', 'telegram_bot')->find_one();
if($d){ if($d){
$d->value = $telegram_bot; $d->value = $telegram_bot;

View File

@ -329,3 +329,6 @@ $_L['You_are_Online_Logout'] = 'You are Online, Logout?';
$_L['Connect_to_Internet'] = 'Connect to Internet?'; $_L['Connect_to_Internet'] = 'Connect to Internet?';
$_L['Your_account_not_connected_to_internet'] = 'Your account not connected to internet'; $_L['Your_account_not_connected_to_internet'] = 'Your account not connected to internet';
$_L['Failed_to_create_transaction_'] = 'Failed to create transaction. ';
$_L['Failed_to_check_status_transaction_'] = 'Failed to check status transaction. ';
$_L['Disable_Voucher'] = 'Disable Voucher';

View File

@ -56,6 +56,16 @@
<p class="help-block">edit at config.php</p> <p class="help-block">edit at config.php</p>
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('Disable Voucher')}</label>
<div class="col-md-6">
<select name="disable_voucher" id="disable_voucher" class="form-control">
<option value="no" {if $_c['disable_voucher'] == 'no'}selected="selected" {/if}>No</option>
<option value="yes" {if $_c['disable_voucher'] == 'yes'}selected="selected" {/if}>Yes</option>
</select>
<p class="help-block">Voucher activation menu will be hidden</p>
</div>
</div>
</div> </div>
<div class="panel-heading">Telegram Notification</div> <div class="panel-heading">Telegram Notification</div>
<div class="panel-body"> <div class="panel-body">
@ -155,18 +165,20 @@ add dst-host=*.tawk.to</pre>
<span class="help-block">{$_L['You_can_use_html_tag']}</span> <span class="help-block">{$_L['You_can_use_html_tag']}</span>
</div> </div>
</div> </div>
</div>
</div>
<div class="panel-body">
<div class="form-group"> <div class="form-group">
<div class="col-lg-offset-2 col-lg-10"> <button class="btn btn-success btn-block waves-effect waves-light"
<button class="btn btn-primary waves-effect waves-light"
type="submit">{$_L['Save']}</button> type="submit">{$_L['Save']}</button>
</div> </div>
</div> </div>
</div>
<pre>/ip hotspot walled-garden <pre>/ip hotspot walled-garden
add dst-host={$_domain} add dst-host={$_domain}
add dst-host=*.{$_domain}</pre> add dst-host=*.{$_domain}</pre>
</div> </div>
</div> </div>
</div>
</form> </form>
{include file="sections/footer.tpl"} {include file="sections/footer.tpl"}

View File

@ -58,6 +58,11 @@
<input type="text" required class="form-control" id="fullname" value="{$fullname}" <input type="text" required class="form-control" id="fullname" value="{$fullname}"
name="fullname"> name="fullname">
</div> </div>
<div class="form-group">
<label>{$_L['Email']}</label>
<input type="text" required class="form-control" placeholder="xxxxxx@xxx.xx" id="email" value="{$email}"
name="email">
</div>
<div class="form-group"> <div class="form-group">
<label>{$_L['Address']}</label> <label>{$_L['Address']}</label>
<input type="text" name="address" id="address" value="{$address}" class="form-control"> <input type="text" name="address" id="address" value="{$address}" class="form-control">

View File

@ -63,11 +63,11 @@
</div> </div>
<div class="btn-group btn-group-justified mb15"> <div class="btn-group btn-group-justified mb15">
<div class="btn-group"> <div class="btn-group">
<button class="btn btn-primary waves-effect waves-light" <a href="{$_url}login" class="btn btn-warning">{$_L['Cancel']}</a>
type="submit">{Lang::T('Request OTP')}</button>
</div> </div>
<div class="btn-group"> <div class="btn-group">
<a href="{$_url}login" class="btn btn-success">{$_L['Cancel']}</a> <button class="btn btn-success waves-effect waves-light"
type="submit">{Lang::T('Request OTP')}</button>
</div> </div>
</div> </div>
</div> </div>

View File

@ -43,19 +43,25 @@
<div class="panel-heading">1. {$_L['Register_Member']}</div> <div class="panel-heading">1. {$_L['Register_Member']}</div>
<div class="panel-body"> <div class="panel-body">
<div class="form-container"> <div class="form-container">
<div class="md-input-container md-float-label"> <div class="md-input-container">
<input type="text" required class="md-input" id="username" value="{$username}"
placeholder="{$_L['Phone_Number']}" name="username">
<label>{$_L['Phone_Number']}</label> <label>{$_L['Phone_Number']}</label>
<input type="text" required class="form-control" id="username" value="{$username}"
placeholder="{$_L['Phone_Number']}" name="username">
</div> </div>
<div class="md-input-container md-float-label"> <div class="md-input-container md-float-label">
<input type="text" required class="md-input" id="fullname" value="{$fullname}"
name="fullname">
<label>{$_L['Full_Name']}</label> <label>{$_L['Full_Name']}</label>
<input type="text" required class="form-control" id="fullname" value="{$fullname}"
name="fullname">
</div>
<div class="md-input-container md-float-label">
<label>{$_L['Email']}</label>
<input type="text" required class="form-control" id="email"
placeholder="xxxxxxx@xxxx.xx" value="{$email}" name="email">
</div> </div>
<div class="md-input-container md-float-label"> <div class="md-input-container md-float-label">
<input type="text" name="address" id="address" value="{$address}" class="md-input">
<label>{$_L['Address']}</label> <label>{$_L['Address']}</label>
<input type="text" name="address" id="address" value="{$address}"
class="form-control">
</div> </div>
</div> </div>
</div> </div>
@ -67,20 +73,22 @@
<div class="panel-body"> <div class="panel-body">
<div class="form-container"> <div class="form-container">
<div class="md-input-container md-float-label"> <div class="md-input-container md-float-label">
<input type="password" required class="md-input" id="password" name="password">
<label>{$_L['Password']}</label> <label>{$_L['Password']}</label>
<input type="password" required class="form-control" id="password" name="password">
</div> </div>
<div class="md-input-container md-float-label"> <div class="md-input-container md-float-label">
<input type="password" required class="md-input" id="cpassword" name="cpassword">
<label>{$_L['Confirm_Password']}</label> <label>{$_L['Confirm_Password']}</label>
<input type="password" required class="form-control" id="cpassword"
name="cpassword">
</div> </div>
<br>
<div class="btn-group btn-group-justified mb15"> <div class="btn-group btn-group-justified mb15">
<div class="btn-group"> <div class="btn-group">
<button class="btn btn-primary waves-effect waves-light" <a href="{$_url}login" class="btn btn-warning">{$_L['Cancel']}</a>
type="submit">{$_L['Register']}</button>
</div> </div>
<div class="btn-group"> <div class="btn-group">
<a href="{$_url}login" class="btn btn-success">{$_L['Cancel']}</a> <button class="btn btn-success waves-effect waves-light"
type="submit">{$_L['Register']}</button>
</div> </div>
</div> </div>
</div> </div>

View File

@ -129,10 +129,12 @@
<ul class="treeview-menu"> <ul class="treeview-menu">
<li {if $_routes[1] eq 'list'}class="active" {/if}><a <li {if $_routes[1] eq 'list'}class="active" {/if}><a
href="{$_url}prepaid/list">{$_L['Prepaid_User']}</a></li> href="{$_url}prepaid/list">{$_L['Prepaid_User']}</a></li>
{if $_c['disable_voucher'] != 'yes'}
<li {if $_routes[1] eq 'voucher'}class="active" {/if}><a <li {if $_routes[1] eq 'voucher'}class="active" {/if}><a
href="{$_url}prepaid/voucher">{$_L['Prepaid_Vouchers']}</a></li> href="{$_url}prepaid/voucher">{$_L['Prepaid_Vouchers']}</a></li>
<li {if $_routes[1] eq 'refill'}class="active" {/if}><a <li {if $_routes[1] eq 'refill'}class="active" {/if}><a
href="{$_url}prepaid/refill">{$_L['Refill_Account']}</a></li> href="{$_url}prepaid/refill">{$_L['Refill_Account']}</a></li>
{/if}
<li {if $_routes[1] eq 'recharge'}class="active" {/if}><a <li {if $_routes[1] eq 'recharge'}class="active" {/if}><a
href="{$_url}prepaid/recharge">{$_L['Recharge_Account']}</a></li> href="{$_url}prepaid/recharge">{$_L['Recharge_Account']}</a></li>
{$_MENU_PREPAID} {$_MENU_PREPAID}

View File

@ -102,12 +102,14 @@
</a> </a>
</li> </li>
{$_MENU_AFTER_DASHBOARD} {$_MENU_AFTER_DASHBOARD}
{if $_c['disable_voucher'] != 'yes'}
<li {if $_system_menu eq 'voucher'}class="active" {/if}> <li {if $_system_menu eq 'voucher'}class="active" {/if}>
<a href="{$_url}voucher/activation"> <a href="{$_url}voucher/activation">
<i class="fa fa-ticket"></i> <i class="fa fa-ticket"></i>
<span>{Lang::T('Voucher')}</span> <span>{Lang::T('Voucher')}</span>
</a> </a>
</li> </li>
{/if}
{if $_c['payment_gateway'] != 'none' or $_c['payment_gateway'] == '' } {if $_c['payment_gateway'] != 'none' or $_c['payment_gateway'] == '' }
<li {if $_system_menu eq 'package'}class="active" {/if}> <li {if $_system_menu eq 'package'}class="active" {/if}>
<a href="{$_url}order/package"> <a href="{$_url}order/package">

View File

@ -99,6 +99,16 @@
</tr> </tr>
{/if} {/if}
</table> </table>
{if $_c['disable_voucher'] == 'yes'}
<div class="box-footer">
{if $_c['payment_gateway'] != 'none' or $_c['payment_gateway'] == '' }
<a href="{$_url}order/package" class="btn btn-primary btn-block">
<i class="ion ion-ios-cart"></i>
{Lang::T('Order Package')}
</a>
{/if}
</div>
{/if}
</div> </div>
{if $_bill['type'] == 'Hotspot' && $_bill['status'] == 'on'} {if $_bill['type'] == 'Hotspot' && $_bill['status'] == 'on'}
<script> <script>
@ -114,6 +124,7 @@
</script> </script>
{/if} {/if}
<br> <br>
{if $_c['disable_voucher'] != 'yes'}
<div class="box box-primary box-solid mb30"> <div class="box box-primary box-solid mb30">
<div class="box-header"> <div class="box-header">
<h3 class="box-title">{$_L['Voucher_Activation']}</h3> <h3 class="box-title">{$_L['Voucher_Activation']}</h3>
@ -134,7 +145,7 @@
</div> </div>
<div class="box-body"> <div class="box-body">
<div class="btn-group btn-group-justified" role="group"> <div class="btn-group btn-group-justified" role="group">
<a class="btn btn-warning" href="{$_url}order/voucher"> <a class="btn btn-warning" href="{$_url}voucher/activation">
<i class="ion ion-ios-cart"></i> <i class="ion ion-ios-cart"></i>
{$_L['Order_Voucher']} {$_L['Order_Voucher']}
</a> </a>
@ -147,6 +158,7 @@
</div> </div>
</div> </div>
</div> </div>
{/if}
</div> </div>
</div> </div>
{include file="sections/user-footer.tpl"} {include file="sections/user-footer.tpl"}

View File

@ -1,3 +1,3 @@
{ {
"version": "2023.6.20" "version": "2023.7.28"
} }