Patch Update: Enhancement

Fixed Activation and Order History disappear when customer username is  Changed
This commit is contained in:
Focuslinkstech 2024-12-04 14:37:01 +01:00
parent 92491e22ec
commit c8d5861f2e
6 changed files with 98 additions and 56 deletions

View File

@ -72,6 +72,7 @@ DROP TABLE IF EXISTS `tbl_payment_gateway`;
CREATE TABLE `tbl_payment_gateway` ( CREATE TABLE `tbl_payment_gateway` (
`id` int NOT NULL, `id` int NOT NULL,
`username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`user_id` int(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
`gateway` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'xendit | midtrans', `gateway` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'xendit | midtrans',
`gateway_trx_id` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '', `gateway_trx_id` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
`plan_id` int NOT NULL, `plan_id` int NOT NULL,
@ -150,6 +151,7 @@ CREATE TABLE `tbl_transactions` (
`id` int NOT NULL, `id` int NOT NULL,
`invoice` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `invoice` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`user_id` int(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
`plan_name` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `plan_name` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`price` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `price` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`recharged_on` date NOT NULL, `recharged_on` date NOT NULL,

View File

@ -283,6 +283,7 @@ class Package
$t = ORM::for_table('tbl_transactions')->create(); $t = ORM::for_table('tbl_transactions')->create();
$t->invoice = $inv = "INV-" . Package::_raid(); $t->invoice = $inv = "INV-" . Package::_raid();
$t->username = $c['username']; $t->username = $c['username'];
$t->user_id = $c['id'];
$t->plan_name = $p['name_plan']; $t->plan_name = $p['name_plan'];
if ($gateway == 'Voucher' && User::isUserVoucher($channel)) { if ($gateway == 'Voucher' && User::isUserVoucher($channel)) {
//its already paid //its already paid
@ -398,6 +399,7 @@ class Package
$t = ORM::for_table('tbl_transactions')->create(); $t = ORM::for_table('tbl_transactions')->create();
$t->invoice = $inv = "INV-" . Package::_raid(); $t->invoice = $inv = "INV-" . Package::_raid();
$t->username = $c['username']; $t->username = $c['username'];
$t->user_id = $c['id'];
$t->plan_name = $p['name_plan']; $t->plan_name = $p['name_plan'];
if ($gateway == 'Voucher' && User::isUserVoucher($channel)) { if ($gateway == 'Voucher' && User::isUserVoucher($channel)) {
$t->price = 0; $t->price = 0;
@ -480,6 +482,7 @@ class Package
$t = ORM::for_table('tbl_transactions')->create(); $t = ORM::for_table('tbl_transactions')->create();
$t->invoice = $inv = "INV-" . Package::_raid(); $t->invoice = $inv = "INV-" . Package::_raid();
$t->username = $customer['username']; $t->username = $customer['username'];
$t->user_id = $customer['id'];
$t->plan_name = $plan['name_plan']; $t->plan_name = $plan['name_plan'];
$t->price = $plan['price']; $t->price = $plan['price'];
$t->recharged_on = date("Y-m-d"); $t->recharged_on = date("Y-m-d");
@ -545,6 +548,7 @@ class Package
$t = ORM::for_table('tbl_transactions')->create(); $t = ORM::for_table('tbl_transactions')->create();
$t->invoice = $inv = "INV-" . Package::_raid(); $t->invoice = $inv = "INV-" . Package::_raid();
$t->username = $customer['username']; $t->username = $customer['username'];
$t->user_id = $customer['id'];
$t->plan_name = 'Custom Balance'; $t->plan_name = 'Custom Balance';
$t->price = $plan['price']; $t->price = $plan['price'];
$t->recharged_on = date("Y-m-d"); $t->recharged_on = date("Y-m-d");

View File

@ -176,19 +176,19 @@ switch ($action) {
$channel = $admin['fullname']; $channel = $admin['fullname'];
$cust = User::_info($id_customer); $cust = User::_info($id_customer);
$plan = ORM::for_table('tbl_plans')->find_one($b['plan_id']); $plan = ORM::for_table('tbl_plans')->find_one($b['plan_id']);
$tax_enable = isset($config['enable_tax']) ? $config['enable_tax'] : 'no'; $tax_enable = isset($config['enable_tax']) ? $config['enable_tax'] : 'no';
$tax_rate_setting = isset($config['tax_rate']) ? $config['tax_rate'] : null; $tax_rate_setting = isset($config['tax_rate']) ? $config['tax_rate'] : null;
$custom_tax_rate = isset($config['custom_tax_rate']) ? (float)$config['custom_tax_rate'] : null; $custom_tax_rate = isset($config['custom_tax_rate']) ? (float)$config['custom_tax_rate'] : null;
if ($tax_rate_setting === 'custom') { if ($tax_rate_setting === 'custom') {
$tax_rate = $custom_tax_rate; $tax_rate = $custom_tax_rate;
} else { } else {
$tax_rate = $tax_rate_setting; $tax_rate = $tax_rate_setting;
} }
if ($tax_enable === 'yes') { if ($tax_enable === 'yes') {
$tax = Package::tax($plan['price'], $tax_rate); $tax = Package::tax($plan['price'], $tax_rate);
} else { } else {
$tax = 0; $tax = 0;
} }
list($bills, $add_cost) = User::getBills($id_customer); list($bills, $add_cost) = User::getBills($id_customer);
if ($using == 'balance' && $config['enable_balance'] == 'yes') { if ($using == 'balance' && $config['enable_balance'] == 'yes') {
if (!$cust) { if (!$cust) {
@ -212,7 +212,7 @@ switch ($action) {
$usings[] = Lang::T('Cash'); $usings[] = Lang::T('Cash');
} }
$abills = User::getAttributes("Bill"); $abills = User::getAttributes("Bill");
if ($tax_enable === 'yes') { if ($tax_enable === 'yes') {
$ui->assign('tax', $tax); $ui->assign('tax', $tax);
} }
$ui->assign('usings', $usings); $ui->assign('usings', $usings);
@ -333,15 +333,30 @@ switch ($action) {
if (empty($v)) { if (empty($v)) {
$v = 'activation'; $v = 'activation';
} }
if ($v == 'order') { switch ($v) {
$v = 'order'; case 'order':
$query = ORM::for_table('tbl_payment_gateway')->where('username', $customer['username'])->order_by_desc('id'); $v = 'order';
$order = Paginator::findMany($query); $query = ORM::for_table('tbl_payment_gateway')->where('user_id', $customer['id'])->order_by_desc('id');
$ui->assign('order', $order); $order = Paginator::findMany($query);
} else if ($v == 'activation') {
$query = ORM::for_table('tbl_transactions')->where('username', $customer['username'])->order_by_desc('id'); if (empty($order) || $order < 5) {
$activation = Paginator::findMany($query); $query = ORM::for_table('tbl_payment_gateway')->where('username', $customer['username'])->order_by_desc('id');
$ui->assign('activation', $activation); $order = Paginator::findMany($query);
}
$ui->assign('order', $order);
break;
case 'activation':
$query = ORM::for_table('tbl_transactions')->where('user_id', $customer['id'])->order_by_desc('id');
$activation = Paginator::findMany($query);
if (empty($activation) || $activation < 5) {
$query = ORM::for_table('tbl_transactions')->where('username', $customer['username'])->order_by_desc('id');
$activation = Paginator::findMany($query);
}
$ui->assign('activation', $activation);
break;
} }
$ui->assign('packages', User::_billing($customer['id'])); $ui->assign('packages', User::_billing($customer['id']));
$ui->assign('v', $v); $ui->assign('v', $v);
@ -366,19 +381,19 @@ switch ($action) {
->where('customer_id', $id) ->where('customer_id', $id)
->find_many(); ->find_many();
if ($d) { if ($d) {
if(isset($routes['3']) && $routes['3'] == 'deletePhoto'){ if (isset($routes['3']) && $routes['3'] == 'deletePhoto') {
if($d['photo'] != '' && strpos($d['photo'], 'default') === false){ if ($d['photo'] != '' && strpos($d['photo'], 'default') === false) {
if(file_exists($UPLOAD_PATH.$d['photo']) && strpos($d['photo'], 'default') === false){ if (file_exists($UPLOAD_PATH . $d['photo']) && strpos($d['photo'], 'default') === false) {
unlink($UPLOAD_PATH.$d['photo']); unlink($UPLOAD_PATH . $d['photo']);
if(file_exists($UPLOAD_PATH.$d['photo'].'.thumb.jpg')){ if (file_exists($UPLOAD_PATH . $d['photo'] . '.thumb.jpg')) {
unlink($UPLOAD_PATH.$d['photo'].'.thumb.jpg'); unlink($UPLOAD_PATH . $d['photo'] . '.thumb.jpg');
} }
} }
$d->photo = '/user.default.jpg'; $d->photo = '/user.default.jpg';
$d->save(); $d->save();
$ui->assign('notify_t', 's'); $ui->assign('notify_t', 's');
$ui->assign('notify', 'You have successfully deleted the photo'); $ui->assign('notify', 'You have successfully deleted the photo');
}else{ } else {
$ui->assign('notify_t', 'e'); $ui->assign('notify_t', 'e');
$ui->assign('notify', 'No photo found to delete'); $ui->assign('notify', 'No photo found to delete');
} }
@ -652,44 +667,44 @@ switch ($action) {
if (function_exists('imagecreatetruecolor')) { if (function_exists('imagecreatetruecolor')) {
$hash = md5_file($_FILES['photo']['tmp_name']); $hash = md5_file($_FILES['photo']['tmp_name']);
$subfolder = substr($hash, 0, 2); $subfolder = substr($hash, 0, 2);
$folder = $UPLOAD_PATH . DIRECTORY_SEPARATOR . 'photos'. DIRECTORY_SEPARATOR; $folder = $UPLOAD_PATH . DIRECTORY_SEPARATOR . 'photos' . DIRECTORY_SEPARATOR;
if(!file_exists($folder)){ if (!file_exists($folder)) {
mkdir($folder); mkdir($folder);
} }
$folder = $UPLOAD_PATH . DIRECTORY_SEPARATOR . 'photos'. DIRECTORY_SEPARATOR. $subfolder. DIRECTORY_SEPARATOR; $folder = $UPLOAD_PATH . DIRECTORY_SEPARATOR . 'photos' . DIRECTORY_SEPARATOR . $subfolder . DIRECTORY_SEPARATOR;
if(!file_exists($folder)){ if (!file_exists($folder)) {
mkdir($folder); mkdir($folder);
} }
$imgPath = $folder . $hash . '.jpg'; $imgPath = $folder . $hash . '.jpg';
if (!file_exists($imgPath)){ if (!file_exists($imgPath)) {
File::resizeCropImage($_FILES['photo']['tmp_name'], $imgPath, 1600, 1600, 100); File::resizeCropImage($_FILES['photo']['tmp_name'], $imgPath, 1600, 1600, 100);
} }
if (!file_exists($imgPath.'.thumb.jpg')){ if (!file_exists($imgPath . '.thumb.jpg')) {
if(_post('faceDetect') == 'yes'){ if (_post('faceDetect') == 'yes') {
try{ try {
$detector = new svay\FaceDetector(); $detector = new svay\FaceDetector();
$detector->setTimeout(5000); $detector->setTimeout(5000);
$detector->faceDetect($imgPath); $detector->faceDetect($imgPath);
$detector->cropFaceToJpeg($imgPath.'.thumb.jpg', false); $detector->cropFaceToJpeg($imgPath . '.thumb.jpg', false);
}catch (Exception $e) { } catch (Exception $e) {
File::makeThumb($imgPath, $imgPath.'.thumb.jpg', 200); File::makeThumb($imgPath, $imgPath . '.thumb.jpg', 200);
} catch (Throwable $e) { } catch (Throwable $e) {
File::makeThumb($imgPath, $imgPath.'.thumb.jpg', 200); File::makeThumb($imgPath, $imgPath . '.thumb.jpg', 200);
} }
}else{ } else {
File::makeThumb($imgPath, $imgPath.'.thumb.jpg', 200); File::makeThumb($imgPath, $imgPath . '.thumb.jpg', 200);
} }
} }
if(file_exists($imgPath)){ if (file_exists($imgPath)) {
if($c['photo'] != '' && strpos($c['photo'], 'default') === false){ if ($c['photo'] != '' && strpos($c['photo'], 'default') === false) {
if(file_exists($UPLOAD_PATH.$c['photo'])){ if (file_exists($UPLOAD_PATH . $c['photo'])) {
unlink($UPLOAD_PATH.$c['photo']); unlink($UPLOAD_PATH . $c['photo']);
if(file_exists($UPLOAD_PATH.$c['photo'].'.thumb.jpg')){ if (file_exists($UPLOAD_PATH . $c['photo'] . '.thumb.jpg')) {
unlink($UPLOAD_PATH.$c['photo'].'.thumb.jpg'); unlink($UPLOAD_PATH . $c['photo'] . '.thumb.jpg');
} }
} }
} }
$c->photo = '/photos/'. $subfolder. '/'. $hash. '.jpg'; $c->photo = '/photos/' . $subfolder . '/' . $hash . '.jpg';
} }
if (file_exists($_FILES['photo']['tmp_name'])) unlink($_FILES['photo']['tmp_name']); if (file_exists($_FILES['photo']['tmp_name'])) unlink($_FILES['photo']['tmp_name']);
} else { } else {
@ -829,9 +844,9 @@ switch ($action) {
$query = ORM::for_table('tbl_customers'); $query = ORM::for_table('tbl_customers');
$query->where("status", $filter); $query->where("status", $filter);
} }
if($order == 'lastname') { if ($order == 'lastname') {
$query->order_by_expr("SUBSTR(fullname, INSTR(fullname, ' ')) $orderby"); $query->order_by_expr("SUBSTR(fullname, INSTR(fullname, ' ')) $orderby");
}else{ } else {
if ($orderby == 'asc') { if ($orderby == 'asc') {
$query->order_by_asc($order); $query->order_by_asc($order);
} else { } else {

View File

@ -19,8 +19,14 @@ switch ($action) {
break; break;
case 'history': case 'history':
$ui->assign('_system_menu', 'history'); $ui->assign('_system_menu', 'history');
$query = ORM::for_table('tbl_payment_gateway')->where('username', $user['username'])->order_by_desc('id'); $query = ORM::for_table('tbl_payment_gateway')->where('user_id', $user['id'])->order_by_desc('id');
$d = Paginator::findMany($query); $d = Paginator::findMany($query);
if (empty($order) || $order < 5) {
$query = ORM::for_table('tbl_payment_gateway')->where('username', $user['username'])->order_by_desc('id');
$d = Paginator::findMany($query);
}
$ui->assign('d', $d); $ui->assign('d', $d);
$ui->assign('_title', Lang::T('Order History')); $ui->assign('_title', Lang::T('Order History'));
run_hook('customer_view_order_history'); #HOOK run_hook('customer_view_order_history'); #HOOK
@ -329,6 +335,7 @@ switch ($action) {
//sender //sender
$d = ORM::for_table('tbl_payment_gateway')->create(); $d = ORM::for_table('tbl_payment_gateway')->create();
$d->username = $user['username']; $d->username = $user['username'];
$d->user_id = $user['id'];
$d->gateway = $target['username']; $d->gateway = $target['username'];
$d->plan_id = $plan['id']; $d->plan_id = $plan['id'];
$d->plan_name = $plan['name_plan']; $d->plan_name = $plan['name_plan'];
@ -348,6 +355,7 @@ switch ($action) {
//receiver //receiver
$d = ORM::for_table('tbl_payment_gateway')->create(); $d = ORM::for_table('tbl_payment_gateway')->create();
$d->username = $target['username']; $d->username = $target['username'];
$d->user_id = $target['id'];
$d->gateway = $user['username']; $d->gateway = $user['username'];
$d->plan_id = $plan['id']; $d->plan_id = $plan['id'];
$d->plan_name = $plan['name_plan']; $d->plan_name = $plan['name_plan'];
@ -438,7 +446,7 @@ switch ($action) {
} }
case 'buy': case 'buy':
$gateway = _post('gateway'); $gateway = _post('gateway');
if($gateway == 'balance') { if ($gateway == 'balance') {
unset($_SESSION['gateway']); unset($_SESSION['gateway']);
r2(U . 'order/pay/' . $routes[2] . '/' . $routes[3]); r2(U . 'order/pay/' . $routes[2] . '/' . $routes[3]);
} }
@ -484,6 +492,7 @@ switch ($action) {
} }
$d = ORM::for_table('tbl_payment_gateway')->create(); $d = ORM::for_table('tbl_payment_gateway')->create();
$d->username = $user['username']; $d->username = $user['username'];
$d->user_id = $user['id'];
$d->gateway = $gateway; $d->gateway = $gateway;
$d->plan_id = 0; $d->plan_id = 0;
$d->plan_name = 'Custom'; $d->plan_name = 'Custom';
@ -547,6 +556,7 @@ switch ($action) {
if (empty($id)) { if (empty($id)) {
$d = ORM::for_table('tbl_payment_gateway')->create(); $d = ORM::for_table('tbl_payment_gateway')->create();
$d->username = $user['username']; $d->username = $user['username'];
$d->user_id = $user['id'];
$d->gateway = $gateway; $d->gateway = $gateway;
$d->plan_id = $plan['id']; $d->plan_id = $plan['id'];
$d->plan_name = $plan['name_plan']; $d->plan_name = $plan['name_plan'];
@ -569,6 +579,7 @@ switch ($action) {
$id = $d->id(); $id = $d->id();
} else { } else {
$d->username = $user['username']; $d->username = $user['username'];
$d->user_id = $user['id'];
$d->gateway = $gateway; $d->gateway = $gateway;
$d->plan_id = $plan['id']; $d->plan_id = $plan['id'];
$d->plan_name = $plan['name_plan']; $d->plan_name = $plan['name_plan'];

View File

@ -41,10 +41,16 @@ switch ($action) {
case 'list-activated': case 'list-activated':
$ui->assign('_system_menu', 'list-activated'); $ui->assign('_system_menu', 'list-activated');
$query = ORM::for_table('tbl_transactions')->where('username', $user['username'])->order_by_desc('id'); $query = ORM::for_table('tbl_transactions')->where('user_id', $user['id'])->order_by_desc('id');
$d = Paginator::findMany($query); $d = Paginator::findMany($query);
if (empty($d) || $d < 5) {
$query = ORM::for_table('tbl_transactions')->where('username', $user['username'])->order_by_desc('id');
$d = Paginator::findMany($query);
}
$ui->assign('d', $d); $ui->assign('d', $d);
$ui->assign('_title', Lang::T('Activation History'));
run_hook('customer_view_activation_list'); #HOOK run_hook('customer_view_activation_list'); #HOOK
$ui->display('customer/activation-list.tpl'); $ui->display('customer/activation-list.tpl');

View File

@ -174,5 +174,9 @@
], ],
"2024.10.31" : [ "2024.10.31" : [
"ALTER TABLE `tbl_customers` ADD `photo` VARCHAR(128) NOT NULL DEFAULT '/user.default.jpg' AFTER `password`;" "ALTER TABLE `tbl_customers` ADD `photo` VARCHAR(128) NOT NULL DEFAULT '/user.default.jpg' AFTER `password`;"
],
"2024.12.5" : [
"ALTER TABLE `tbl_transactions` ADD `user_id` INT(11) NULL AFTER `username`;",
"ALTER TABLE `tbl_payment_gateway` ADD `user_id` INT(11) NULL AFTER `username`;"
] ]
} }