Compare commits
16 Commits
Author | SHA1 | Date | |
---|---|---|---|
8be8737236 | |||
a8515b7d60 | |||
d71eb37f48 | |||
8fcca70ead | |||
59f6c180cf | |||
d53c4cf8c8 | |||
620bfaeb29 | |||
863dd65145 | |||
4de849fe34 | |||
18d68d68c8 | |||
1b15da5c04 | |||
51416626fb | |||
5a10c19853 | |||
44cdd8f594 | |||
00cf90e6ea | |||
341e26f4d6 |
13
CHANGELOG.md
13
CHANGELOG.md
@ -2,6 +2,19 @@
|
||||
|
||||
# CHANGELOG
|
||||
|
||||
## 2023.9.1
|
||||
|
||||
- Critical bug fixes, bug happen when user buy package, expired time will be calculated from last expired, not from when they buy the package
|
||||
- Time not change after user buy package for extending
|
||||
- Add Cancel Button to user dashboard when it show unpaid package
|
||||
- Fix username in user dashboard
|
||||
|
||||
## 2023.8.30
|
||||
|
||||
- Upload Logo from settings
|
||||
- Fix Print value
|
||||
- Fix Time when editing prepaid
|
||||
|
||||
## 2023.8.28
|
||||
|
||||
- Extend expiration if buy same package
|
||||
|
@ -16,11 +16,8 @@
|
||||
|
||||
<body style='background-color: #FBFBFB;'>
|
||||
<div id='main-container'>
|
||||
<div class='header'>
|
||||
<div class="header-box wrapper">
|
||||
<div class="hd-logo"><a href="#"><img src="img/logo.png" alt="Logo" /></a></div>
|
||||
</div>
|
||||
</div>
|
||||
<img src="img/logo.png" class="img-responsive" alt="Logo" />
|
||||
<hr>
|
||||
<!-- contents area start -->
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
@ -16,11 +16,8 @@
|
||||
|
||||
<body style='background-color: #FBFBFB;'>
|
||||
<div id='main-container'>
|
||||
<div class='header'>
|
||||
<div class="header-box wrapper">
|
||||
<div class="hd-logo"><a href="#"><img src="img/logo.png" alt="Logo" /></a></div>
|
||||
</div>
|
||||
</div>
|
||||
<img src="img/logo.png" class="img-responsive" alt="Logo" />
|
||||
<hr>
|
||||
|
||||
<div class="span12">
|
||||
<h4> PHPNuxBill Installer </h4>
|
||||
|
@ -15,11 +15,8 @@
|
||||
|
||||
<body style='background-color: #FBFBFB;'>
|
||||
<div id='main-container'>
|
||||
<div class='header'>
|
||||
<div class="header-box wrapper">
|
||||
<div class="hd-logo"><a href="#"><img src="img/logo.png" alt="Logo"/></a></div>
|
||||
</div>
|
||||
</div>
|
||||
<img src="img/logo.png" class="img-responsive" alt="Logo" />
|
||||
<hr>
|
||||
|
||||
<div class="span12">
|
||||
<h4> PHPNuxBill Installer </h4>
|
||||
|
@ -82,11 +82,8 @@ $wConfig = "../config.php";
|
||||
|
||||
<body style='background-color: #FBFBFB;'>
|
||||
<div id='main-container'>
|
||||
<div class='header'>
|
||||
<div class="header-box wrapper">
|
||||
<div class="hd-logo"><a href="#"><img src="img/logo.png" alt="Logo"/></a></div>
|
||||
</div>
|
||||
</div>
|
||||
<img src="img/logo.png" class="img-responsive" alt="Logo" />
|
||||
<hr>
|
||||
|
||||
<div class="span12">
|
||||
<h4> PHPNuxBill Installer </h4>
|
||||
|
@ -1,7 +1,8 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>PHPNuxBill Installer</title>
|
||||
<title>PHPNuxBill Installer</title>
|
||||
<link rel="shortcut icon" type="image/x-icon" href="img/favicon.ico">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
@ -9,38 +10,46 @@
|
||||
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
<link type='text/css' href='css/style.css' rel='stylesheet'/>
|
||||
<link type='text/css' href='css/style.css' rel='stylesheet' />
|
||||
<link type='text/css' href="css/bootstrap.min.css" rel="stylesheet">
|
||||
</head>
|
||||
<?php if (!file_exists('../pages')) rename('../pages_template', '../pages'); ?>
|
||||
|
||||
<body style='background-color: #FBFBFB;'>
|
||||
<div id='main-container'>
|
||||
<div class='header'>
|
||||
<div class="header-box wrapper">
|
||||
<div class="hd-logo"><a href="#"><img src="img/logo.png" alt="Logo"/></a></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="span12">
|
||||
<h4> PHPNuxBill Installer </h4>
|
||||
<p>
|
||||
<strong>Congratulations!</strong><br>
|
||||
You have just install PHPNuxBill !<br>
|
||||
To Login Admin Portal:<br>
|
||||
Use this link -
|
||||
<?php
|
||||
$cururl = (((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')|| $_SERVER['SERVER_PORT'] == 443)?'https':'http').'://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
||||
$appurl = str_replace('/install/step5.php', '', $cururl);
|
||||
$appurl = str_replace('/system', '', $appurl);
|
||||
echo '<a href="' . $appurl . '/admin">' . $appurl . '/admin</a>';
|
||||
?>
|
||||
<br>
|
||||
Username: admin<br>
|
||||
Password: admin<br>
|
||||
For security, Delete the <b>install</b> directory inside system folder.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">Copyright © 2021 PHPNuxBill. All Rights Reserved<br/><br/></div>
|
||||
<div id='main-container'>
|
||||
<img src="img/logo.png" class="img-responsive" alt="Logo" />
|
||||
<hr>
|
||||
<div class="span12">
|
||||
<h4> PHPNuxBill Installer </h4>
|
||||
<p>
|
||||
<strong>Congratulations!</strong><br>
|
||||
You have just install PHPNuxBill !<br><br>
|
||||
<span class="text-danger">But wait!!<br>
|
||||
<ol>
|
||||
<li>Don't forget to rename folder <b>pages_example</b> to <b>pages</b>.<br>
|
||||
if it not yet renamed</li>
|
||||
<li>Activate <a href="https://github.com/hotspotbilling/phpnuxbill/wiki/Cron-Jobs" target="_blank">Cronjob</a> for Expired and Reminder.</li>
|
||||
<li>Check <a href="https://github.com/hotspotbilling/phpnuxbill/wiki/How-It-Works---Cara-kerja" target="_blank">how PHPNuxbill Works</a></li>
|
||||
<li><a href="https://github.com/hotspotbilling/phpnuxbill/wiki#login-page-mikrotik" target="_blank">how to link Mikrotik Login to PHPNuxBill</a></li>
|
||||
<li>or use <a href="https://github.com/hotspotbilling/phpnuxbill-mikrotik-login-template" target="_blank">Mikrotik Login Template for PHPNuxBill</a></li>
|
||||
</ol>
|
||||
</span><br><br>
|
||||
To Login Admin Portal:<br>
|
||||
Use this link -
|
||||
<?php
|
||||
$cururl = (((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') || $_SERVER['SERVER_PORT'] == 443) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
||||
$appurl = str_replace('/install/step5.php', '', $cururl);
|
||||
$appurl = str_replace('/system', '', $appurl);
|
||||
echo '<a href="' . $appurl . '/admin">' . $appurl . '/admin</a>';
|
||||
?>
|
||||
<br>
|
||||
Username: admin<br>
|
||||
Password: admin<br>
|
||||
For security, Delete the <b>install</b> directory inside system folder.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">Copyright © 2021 PHPNuxBill. All Rights Reserved<br /><br /></div>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -16,11 +16,8 @@
|
||||
|
||||
<body style='background-color: #FBFBFB;'>
|
||||
<div id='main-container'>
|
||||
<div class='header'>
|
||||
<div class="header-box wrapper">
|
||||
<div class="hd-logo"><a href="#"><img src="img/logo.png" alt="Logo" /></a></div>
|
||||
</div>
|
||||
</div>
|
||||
<img src="img/logo.png" class="img-responsive" alt="Logo" />
|
||||
<hr>
|
||||
|
||||
<div class="span12">
|
||||
<h4> PHPNuxBill Updater </h4>
|
||||
|
@ -33,6 +33,63 @@ class File
|
||||
rmdir($path);
|
||||
}
|
||||
|
||||
public static function resizeCropImage($source_file, $dst_dir, $max_width, $max_height, $quality = 80)
|
||||
{
|
||||
$imgsize = getimagesize($source_file);
|
||||
$width = $imgsize[0];
|
||||
$height = $imgsize[1];
|
||||
$mime = $imgsize['mime'];
|
||||
|
||||
switch ($mime) {
|
||||
case 'image/gif':
|
||||
$image_create = "imagecreatefromgif";
|
||||
$image = "imagegif";
|
||||
break;
|
||||
|
||||
case 'image/png':
|
||||
$image_create = "imagecreatefrompng";
|
||||
$image = "imagepng";
|
||||
$quality = 7;
|
||||
break;
|
||||
|
||||
case 'image/jpeg':
|
||||
$image_create = "imagecreatefromjpeg";
|
||||
$image = "imagejpeg";
|
||||
$quality = 80;
|
||||
break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
|
||||
if ($max_width == 0) {
|
||||
$max_width = $width;
|
||||
}
|
||||
|
||||
if ($max_height == 0) {
|
||||
$max_height = $height;
|
||||
}
|
||||
|
||||
$widthRatio = $max_width / $width;
|
||||
$heightRatio = $max_height / $height;
|
||||
$ratio = min($widthRatio, $heightRatio);
|
||||
$nwidth = (int)$width * $ratio;
|
||||
$nheight = (int)$height * $ratio;
|
||||
|
||||
$dst_img = imagecreatetruecolor($nwidth, $nheight);
|
||||
$white = imagecolorallocate($dst_img, 255, 255, 255);
|
||||
imagefill($dst_img, 0, 0, $white);
|
||||
$src_img = $image_create($source_file);
|
||||
imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $nwidth, $nheight, $width, $height);
|
||||
|
||||
$image($dst_img, $dst_dir, $quality);
|
||||
|
||||
if ($dst_img) imagedestroy($dst_img);
|
||||
if ($src_img) imagedestroy($src_img);
|
||||
return file_exists($dst_dir);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* file path fixer
|
||||
|
@ -39,7 +39,11 @@ class Lang
|
||||
|
||||
public static function dateTimeFormat($date){
|
||||
global $config;
|
||||
return date($config['date_format']. ' H:i', strtotime($date));
|
||||
if(strtotime($date) < strtotime("2000-01-01 00:00:00")){
|
||||
return "";
|
||||
}else{
|
||||
return date($config['date_format']. ' H:i', strtotime($date));
|
||||
}
|
||||
}
|
||||
|
||||
public static function dateAndTimeFormat($date, $time){
|
||||
|
@ -102,7 +102,7 @@ class Package
|
||||
Mikrotik::addHotspotUser($client, $p, $c);
|
||||
}
|
||||
|
||||
if ($b['namebp'] == $p['name_plan']) {
|
||||
if ($b['namebp'] == $p['name_plan'] && $b['status'] == 'on') {
|
||||
// if it same internet plan, expired will extend
|
||||
if ($p['validity_unit'] == 'Months') {
|
||||
$date_exp = date("Y-m-d", strtotime($b['expiration'] . ' +' . $p['validity'] . ' months'));
|
||||
@ -200,12 +200,14 @@ class Package
|
||||
}
|
||||
|
||||
|
||||
if ($b['namebp'] == $p['name_plan']) {
|
||||
if ($b['namebp'] == $p['name_plan'] && $b['status'] == 'on') {
|
||||
// if it same internet plan, expired will extend
|
||||
if ($p['validity_unit'] == 'Months') {
|
||||
$date_exp = date("Y-m-d", strtotime($b['expiration'] . ' +' . $p['validity'] . ' months'));
|
||||
$time = $b['time'];
|
||||
} else if ($p['validity_unit'] == 'Days') {
|
||||
$date_exp = date("Y-m-d", strtotime($b['expiration'] . ' +' . $p['validity'] . ' days'));
|
||||
$time = $b['time'];
|
||||
} else if ($p['validity_unit'] == 'Hrs') {
|
||||
$datetime = explode(' ', date("Y-m-d H:i:s", strtotime($b['expiration'] . ' ' . $b['time'] . ' +' . $p['validity'] . ' hours')));
|
||||
$date_exp = $datetime[0];
|
||||
|
@ -114,7 +114,6 @@ switch ($action) {
|
||||
|
||||
case 'print':
|
||||
$id = _post('id');
|
||||
|
||||
$d = ORM::for_table('tbl_transactions')->where('id', $id)->find_one();
|
||||
$ui->assign('d', $d);
|
||||
|
||||
@ -367,19 +366,17 @@ switch ($action) {
|
||||
break;
|
||||
|
||||
case 'refill-post':
|
||||
$user = _post('id_customer');
|
||||
$code = _post('code');
|
||||
|
||||
$user = ORM::for_table('tbl_customers')->where('id', _post('id_customer'))->find_one();
|
||||
$v1 = ORM::for_table('tbl_voucher')->where('code', $code)->where('status', 0)->find_one();
|
||||
|
||||
run_hook('refill_customer'); #HOOK
|
||||
if ($v1) {
|
||||
if (Package::rechargeUser($user, $v1['routers'], $v1['id_plan'], "Refill", "Voucher")) {
|
||||
if (Package::rechargeUser($user['id'], $v1['routers'], $v1['id_plan'], "Refill", "Voucher")) {
|
||||
$v1->status = "1";
|
||||
$v1->user = $c['username'];
|
||||
$v1->user = $user['username'];
|
||||
$v1->save();
|
||||
$c = ORM::for_table('tbl_customers')->where('id', $id_customer)->find_one();
|
||||
$in = ORM::for_table('tbl_transactions')->where('username', $c['username'])->order_by_desc('id')->find_one();
|
||||
$in = ORM::for_table('tbl_transactions')->where('username', $user['username'])->order_by_desc('id')->find_one();
|
||||
$ui->assign('in', $in);
|
||||
$ui->assign('date', date("Y-m-d H:i:s"));
|
||||
$ui->display('invoice.tpl');
|
||||
|
@ -17,6 +17,12 @@ switch ($action) {
|
||||
if ($admin['user_type'] != 'Admin') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
}
|
||||
if (file_exists('system/uploads/logo.png')) {
|
||||
$logo = 'system/uploads/logo.png?' . time();
|
||||
} else {
|
||||
$logo = 'system/uploads/logo.default.png';
|
||||
}
|
||||
$ui->assign('logo', $logo);
|
||||
run_hook('view_app_settings'); #HOOK
|
||||
$ui->display('app-settings.tpl');
|
||||
break;
|
||||
@ -219,8 +225,15 @@ switch ($action) {
|
||||
$user_notification_payment = _post('user_notification_payment');
|
||||
$address = _post('address');
|
||||
$tawkto = _post('tawkto');
|
||||
$radius_mode = _post('radius_mode')*1;
|
||||
$radius_mode = _post('radius_mode') * 1;
|
||||
run_hook('save_settings'); #HOOK
|
||||
|
||||
|
||||
if (!empty($_FILES['logo']['name'])) {
|
||||
if (file_exists('system/uploads/logo.png')) unlink('system/uploads/logo.png');
|
||||
File::resizeCropImage($_FILES['logo']['tmp_name'], 'system/uploads/logo.png', 1078, 200, 100);
|
||||
if (file_exists($_FILES['logo']['tmp_name'])) unlink($_FILES['logo']['tmp_name']);
|
||||
}
|
||||
if ($company == '') {
|
||||
r2(U . 'settings/app', 'e', $_L['All_field_is_required']);
|
||||
} else {
|
||||
@ -239,10 +252,10 @@ switch ($action) {
|
||||
|
||||
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'CompanyFooter')->find_one();
|
||||
if($d){
|
||||
if ($d) {
|
||||
$d->value = $footer;
|
||||
$d->save();
|
||||
}else{
|
||||
} else {
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'CompanyFooter';
|
||||
$d->value = $footer;
|
||||
@ -250,10 +263,10 @@ switch ($action) {
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'disable_voucher')->find_one();
|
||||
if($d){
|
||||
if ($d) {
|
||||
$d->value = $disable_voucher;
|
||||
$d->save();
|
||||
}else{
|
||||
} else {
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'disable_voucher';
|
||||
$d->value = $disable_voucher;
|
||||
@ -261,10 +274,10 @@ switch ($action) {
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'enable_balance')->find_one();
|
||||
if($d){
|
||||
if ($d) {
|
||||
$d->value = $enable_balance;
|
||||
$d->save();
|
||||
}else{
|
||||
} else {
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'enable_balance';
|
||||
$d->value = $enable_balance;
|
||||
@ -272,10 +285,10 @@ switch ($action) {
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'allow_balance_transfer')->find_one();
|
||||
if($d){
|
||||
if ($d) {
|
||||
$d->value = $allow_balance_transfer;
|
||||
$d->save();
|
||||
}else{
|
||||
} else {
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'allow_balance_transfer';
|
||||
$d->value = $allow_balance_transfer;
|
||||
@ -283,10 +296,10 @@ switch ($action) {
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'minimum_transfer')->find_one();
|
||||
if($d){
|
||||
if ($d) {
|
||||
$d->value = $minimum_transfer;
|
||||
$d->save();
|
||||
}else{
|
||||
} else {
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'minimum_transfer';
|
||||
$d->value = $minimum_transfer;
|
||||
@ -294,10 +307,10 @@ switch ($action) {
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'telegram_bot')->find_one();
|
||||
if($d){
|
||||
if ($d) {
|
||||
$d->value = $telegram_bot;
|
||||
$d->save();
|
||||
}else{
|
||||
} else {
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'telegram_bot';
|
||||
$d->value = $telegram_bot;
|
||||
@ -305,10 +318,10 @@ switch ($action) {
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'telegram_target_id')->find_one();
|
||||
if($d){
|
||||
if ($d) {
|
||||
$d->value = $telegram_target_id;
|
||||
$d->save();
|
||||
}else{
|
||||
} else {
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'telegram_target_id';
|
||||
$d->value = $telegram_target_id;
|
||||
@ -316,10 +329,10 @@ switch ($action) {
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'sms_url')->find_one();
|
||||
if($d){
|
||||
if ($d) {
|
||||
$d->value = $sms_url;
|
||||
$d->save();
|
||||
}else{
|
||||
} else {
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'sms_url';
|
||||
$d->value = $sms_url;
|
||||
@ -327,10 +340,10 @@ switch ($action) {
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'wa_url')->find_one();
|
||||
if($d){
|
||||
if ($d) {
|
||||
$d->value = $wa_url;
|
||||
$d->save();
|
||||
}else{
|
||||
} else {
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'wa_url';
|
||||
$d->value = $wa_url;
|
||||
@ -338,10 +351,10 @@ switch ($action) {
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'user_notification_expired')->find_one();
|
||||
if($d){
|
||||
if ($d) {
|
||||
$d->value = $user_notification_expired;
|
||||
$d->save();
|
||||
}else{
|
||||
} else {
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'user_notification_expired';
|
||||
$d->value = $user_notification_expired;
|
||||
@ -349,10 +362,10 @@ switch ($action) {
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'user_notification_reminder')->find_one();
|
||||
if($d){
|
||||
if ($d) {
|
||||
$d->value = $user_notification_reminder;
|
||||
$d->save();
|
||||
}else{
|
||||
} else {
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'user_notification_reminder';
|
||||
$d->value = $user_notification_reminder;
|
||||
@ -360,10 +373,10 @@ switch ($action) {
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'user_notification_payment')->find_one();
|
||||
if($d){
|
||||
if ($d) {
|
||||
$d->value = $user_notification_payment;
|
||||
$d->save();
|
||||
}else{
|
||||
} else {
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'user_notification_payment';
|
||||
$d->value = $user_notification_payment;
|
||||
@ -371,10 +384,10 @@ switch ($action) {
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'tawkto')->find_one();
|
||||
if($d){
|
||||
if ($d) {
|
||||
$d->value = $tawkto;
|
||||
$d->save();
|
||||
}else{
|
||||
} else {
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'tawkto';
|
||||
$d->value = $tawkto;
|
||||
@ -382,10 +395,10 @@ switch ($action) {
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'radius_mode')->find_one();
|
||||
if($d){
|
||||
if ($d) {
|
||||
$d->value = $radius_mode;
|
||||
$d->save();
|
||||
}else{
|
||||
} else {
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'radius_mode';
|
||||
$d->value = $radius_mode;
|
||||
@ -436,10 +449,10 @@ switch ($action) {
|
||||
|
||||
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'country_code_phone')->find_one();
|
||||
if($d){
|
||||
if ($d) {
|
||||
$d->value = $country_code_phone;
|
||||
$d->save();
|
||||
}else{
|
||||
} else {
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'country_code_phone';
|
||||
$d->value = $country_code_phone;
|
||||
@ -509,9 +522,9 @@ switch ($action) {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
}
|
||||
run_hook('view_notifications'); #HOOK
|
||||
if(file_exists("system/uploads/notifications.json")){
|
||||
if (file_exists("system/uploads/notifications.json")) {
|
||||
$ui->assign('_json', json_decode(file_get_contents('system/uploads/notifications.json'), true));
|
||||
}else{
|
||||
} else {
|
||||
$ui->assign('_json', json_decode(file_get_contents('system/uploads/notifications.default.json'), true));
|
||||
}
|
||||
$ui->assign('_default', json_decode(file_get_contents('system/uploads/notifications.default.json'), true));
|
||||
|
@ -384,3 +384,4 @@ $_L['Send_Balance'] = 'Send Balance';
|
||||
$_L['Received_Balance'] = 'Received Balance';
|
||||
$_L['Minimum_Balance_Transfer'] = 'Minimum Balance Transfer';
|
||||
$_L['Minimum_Transfer'] = 'Minimum Transfer';
|
||||
$_L['Company_Logo'] = 'Company Logo';
|
||||
|
@ -1,6 +1,6 @@
|
||||
{include file="sections/header.tpl"}
|
||||
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}settings/app-post">
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}settings/app-post" enctype="multipart/form-data">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
||||
@ -17,10 +17,19 @@
|
||||
<div class="col-md-6">
|
||||
<input type="text" required class="form-control" id="company" name="company"
|
||||
value="{$_c['CompanyName']}">
|
||||
|
||||
</div>
|
||||
<span class="help-block col-md-4">{$_L['App_Name_Help_Text']}</span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Company Logo')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="file" class="form-control" id="logo" name="logo" accept="image/*">
|
||||
<span class="help-block">For PDF Reports | Best size 1078 x 200 | uploaded image will be autosize</span>
|
||||
</div>
|
||||
<span class="help-block col-md-4">
|
||||
<a href="./{$logo}" target="_blank"><img src="./{$logo}" height="48" alt="logo for PDF"></a>
|
||||
</span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Company Footer')}</label>
|
||||
<div class="col-md-6">
|
||||
|
@ -33,7 +33,7 @@
|
||||
============================================<br>
|
||||
{$_L['Type']} : <b>{$d['type']}</b><br>
|
||||
{$_L['Plan_Name']} : <b>{$d['plan_name']}</b><br>
|
||||
{$_L['Plan_Price']} : <b>{Lang::moneyFormat($in['price'])}</b><br>
|
||||
{$_L['Plan_Price']} : <b>{Lang::moneyFormat($d['price'])}</b><br>
|
||||
<br>
|
||||
{$_L['Username']} : <b>{$d['username']}</b><br>
|
||||
{$_L['Password']} : **********<br>
|
||||
|
@ -43,7 +43,7 @@
|
||||
value="{$d['expiration']}">
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<input type="time" class="form-control" id="time" name="time"
|
||||
<input type="text" class="form-control" id="time" name="time" placeholder="00:00:00"
|
||||
value="{$d['time']}">
|
||||
</div>
|
||||
</div>
|
||||
|
@ -12,8 +12,7 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{Lang::T('expired')}</td>
|
||||
<td>{date({$_c['date_format']}, strtotime($unpaid['expired_date']))}
|
||||
{date('H:i', strtotime($unpaid['expired_date']))} </td>
|
||||
<td>{Lang::dateTimeFormat($unpaid['expired_date'])} </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$_L['Plan_Name']}</td>
|
||||
@ -30,10 +29,22 @@
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="box-footer p-2">
|
||||
<a class="btn btn-danger btn-block btn-sm" href="{$_url}order/view/{$unpaid['id']}">
|
||||
<span class="icon"><i class="ion ion-card"></i></span>
|
||||
<span>{Lang::T('PAY NOW')}</span>
|
||||
</a>
|
||||
<div class="btn-group btn-group-justified mb15">
|
||||
<div class="btn-group">
|
||||
<a href="{$_url}order/view/{$unpaid['id']}/cancel" class="btn btn-danger btn-sm"
|
||||
onclick="return confirm('{Lang::T('Cancel it?')}')">
|
||||
<span class="glyphicon glyphicon-trash"></span>
|
||||
{Lang::T('Cancel')}
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a class="btn btn-success btn-block btn-sm" href="{$_url}order/view/{$unpaid['id']}">
|
||||
<span class="icon"><i class="ion ion-card"></i></span>
|
||||
<span>{Lang::T('PAY NOW')}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
@ -54,7 +65,7 @@
|
||||
<table class="table table-bordered table-striped table-bordered table-hover">
|
||||
<tr>
|
||||
<td class="small text-success text-uppercase text-normal">{$_L['Username']}</td>
|
||||
<td class="small mb15">{$_bill['username']}</td>
|
||||
<td class="small mb15">{$_user['username']}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="small text-success text-uppercase text-normal">{$_L['Password']}</td>
|
||||
|
@ -70,10 +70,10 @@
|
||||
</div>
|
||||
<div class="btn-group btn-group-justified mb15">
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-primary">{$_L['Login']}</button>
|
||||
<a href="{$_url}register" class="btn btn-success">{$_L['Register']}</a>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a href="{$_url}register" class="btn btn-success">{$_L['Register']}</a>
|
||||
<button type="submit" class="btn btn-primary">{$_L['Login']}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -208,7 +208,7 @@ function deleteFolder($path)
|
||||
<div class="container">
|
||||
<section class="content-header">
|
||||
<h1 class="text-center">
|
||||
Update PHP NuxBill
|
||||
Update PHPNuxBill
|
||||
</h1>
|
||||
</section>
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
{
|
||||
"version": "2023.8.28"
|
||||
"version": "2023.9.1"
|
||||
}
|
Reference in New Issue
Block a user