diff --git a/CHANGELOG.md b/CHANGELOG.md index da5b8e45..725e801c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ # CHANGELOG +## 2024.4.23 + +- Fix Pagination Voucher +- Fix Languange Translation +- Fix Alert Confirmation for requesting Extend +- Send Telegram Notification when Customer request to extend expiration +- prepaid users export list by @freeispradius +- fix show voucher by @agstrxyz + ## 2024.4.21 - Restore old cron diff --git a/init.php b/init.php index d3ef00c7..de0dc6a0 100644 --- a/init.php +++ b/init.php @@ -222,7 +222,7 @@ function Lang($key) function alphanumeric($str, $tambahan = "") { - return preg_replace("/[^a-zA-Z0-9" . $tambahan . "]+/", "", $str); + return Text::alphanumeric($str, $tambahan); } function showResult($success, $message = '', $result = [], $meta = []) diff --git a/system/autoload/Text.php b/system/autoload/Text.php new file mode 100644 index 00000000..bc094e15 --- /dev/null +++ b/system/autoload/Text.php @@ -0,0 +1,64 @@ +select('tbl_customers.id', 'id') ->select('tbl_customers.username', 'username') ->select('fullname') + ->select('address') ->select('phonenumber') ->select('email') ->select('balance') - ->select('namebp') - ->select('routers') - ->select('status') - ->select('method', 'Payment') - ->join('tbl_user_recharges', array('tbl_customers.id', '=', 'tbl_user_recharges.customer_id')) - ->order_by_asc('tbl_customers.id')->find_array(); + ->select('service_type') + ->order_by_asc('tbl_customers.id') + ->find_array(); + $h = false; set_time_limit(-1); header('Pragma: public'); @@ -46,18 +46,105 @@ switch ($action) { header("Content-type: text/csv"); header('Content-Disposition: attachment;filename="phpnuxbill_customers_' . date('Y-m-d_H_i') . '.csv"'); header('Content-Transfer-Encoding: binary'); + + $headers = [ + 'id', + 'username', + 'fullname', + 'address', + 'phonenumber', + 'email', + 'balance', + 'service_type', + ]; + + if (!$h) { + echo '"' . implode('","', $headers) . "\"\n"; + $h = true; + } + foreach ($cs as $c) { - $ks = []; - $vs = []; - foreach ($c as $k => $v) { - $ks[] = $k; - $vs[] = $v; - } - if (!$h) { - echo '"' . implode('";"', $ks) . "\"\n"; - $h = true; - } - echo '"' . implode('";"', $vs) . "\"\n"; + $row = [ + $c['id'], + $c['username'], + $c['fullname'], + $c['address'], + $c['phonenumber'], + $c['email'], + $c['balance'], + $c['service_type'], + ]; + echo '"' . implode('","', $row) . "\"\n"; + } + break; + //case csv-prepaid can be moved later to (plan.php) php file dealing with prepaid users + case 'csv-prepaid': + if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) { + _alert(Lang::T('You do not have permission to access this page'), 'danger', "dashboard"); + } + + $cs = ORM::for_table('tbl_customers') + ->select('tbl_customers.id', 'id') + ->select('tbl_customers.username', 'username') + ->select('fullname') + ->select('address') + ->select('phonenumber') + ->select('email') + ->select('balance') + ->select('service_type') + ->select('namebp') + ->select('routers') + ->select('status') + ->select('method', 'Payment') + ->join('tbl_user_recharges', array('tbl_customers.id', '=', 'tbl_user_recharges.customer_id')) + ->order_by_asc('tbl_customers.id') + ->find_array(); + + $h = false; + set_time_limit(-1); + header('Pragma: public'); + header('Expires: 0'); + header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); + header("Content-type: text/csv"); + header('Content-Disposition: attachment;filename="phpnuxbill_prepaid_users' . date('Y-m-d_H_i') . '.csv"'); + header('Content-Transfer-Encoding: binary'); + + $headers = [ + 'id', + 'username', + 'fullname', + 'address', + 'phonenumber', + 'email', + 'balance', + 'service_type', + 'namebp', + 'routers', + 'status', + 'Payment' + ]; + + if (!$h) { + echo '"' . implode('","', $headers) . "\"\n"; + $h = true; + } + + foreach ($cs as $c) { + $row = [ + $c['id'], + $c['username'], + $c['fullname'], + $c['address'], + $c['phonenumber'], + $c['email'], + $c['balance'], + $c['service_type'], + $c['namebp'], + $c['routers'], + $c['status'], + $c['Payment'] + ]; + echo '"' . implode('","', $row) . "\"\n"; } break; case 'add': diff --git a/system/controllers/home.php b/system/controllers/home.php index ecb6aaaa..2f08dc77 100644 --- a/system/controllers/home.php +++ b/system/controllers/home.php @@ -148,16 +148,18 @@ if (isset($_GET['recharge']) && !empty($_GET['recharge'])) { $router = $tur['routers']; } $p = ORM::for_table('tbl_plans')->findOne($tur['plan_id']); - $c = ORM::for_table('tbl_customers')->findOne($tur['customer_id']); + if(!$p){ + r2(U . 'home', '3', "Plan Not Found"); + } if ($tur['routers'] == 'radius') { - Radius::customerAddPlan($c, $p, $tur['expiration'] . ' ' . $tur['time']); + Radius::customerAddPlan($user, $p, $tur['expiration'] . ' ' . $tur['time']); } else { if ($tur['type'] == 'Hotspot') { - Mikrotik::removeHotspotUser($client, $c['username']); - Mikrotik::addHotspotUser($client, $p, $c); + Mikrotik::removeHotspotUser($client, $user['username']); + Mikrotik::addHotspotUser($client, $p, $user); } else if ($tur['type'] == 'PPPOE') { - Mikrotik::removePpoeUser($client, $c['username']); - Mikrotik::addPpoeUser($client, $p, $c); + Mikrotik::removePpoeUser($client, $user['username']); + Mikrotik::addPpoeUser($client, $p, $user); } } // make customer cannot extend again @@ -169,6 +171,10 @@ if (isset($_GET['recharge']) && !empty($_GET['recharge'])) { App::setToken(_get('stoken'), $id); file_put_contents($path, $m); _log("Customer $tur[customer_id] $tur[username] extend for $days days", "Customer", $user['id']); + Message::sendTelegram("#u$user[username] #extend #".$p['type']." \n" . $p['name_plan'] . + "\nLocation: " . $p['routers'] . + "\nCustomer: " . $user['fullname'] . + "\nNew Expired: " . Lang::dateAndTimeFormat($expiration, $tur['time'])); r2(U . 'home', 's', "Extend until $expiration"); }else{ r2(U . 'home', 'e', "Plan is not expired"); diff --git a/system/controllers/plan.php b/system/controllers/plan.php index 41fd1f95..7b1c387f 100644 --- a/system/controllers/plan.php +++ b/system/controllers/plan.php @@ -132,7 +132,7 @@ switch ($action) { $using = _post('using'); $stoken = _post('stoken'); - if(!empty(App::getTokenValue($stoken))){ + if (!empty(App::getTokenValue($stoken))) { $username = App::getTokenValue($stoken); $in = ORM::for_table('tbl_transactions')->where('username', $username)->order_by_desc('id')->find_one(); Package::createInvoice($in); @@ -325,18 +325,13 @@ switch ($action) { case 'voucher': $ui->assign('_title', Lang::T('Vouchers')); - $limit = 10; - $page = _get('p', 0); - $pageNow = $page * $limit; $search = _req('search'); if ($search != '') { if (in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) { - $d = ORM::for_table('tbl_plans')->where('enabled', '1') + $query = ORM::for_table('tbl_plans')->where('enabled', '1') ->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan')) - ->where_like('tbl_voucher.code', '%' . $search . '%') - ->offset($pageNow) - ->limit($limit) - ->findArray(); + ->where_like('tbl_voucher.code', '%' . $search . '%'); + $d = Paginator::findMany($query, ["search" => $search]); } else if ($admin['user_type'] == 'Agent') { $sales = []; $sls = ORM::for_table('tbl_users')->select('id')->where('root', $admin['id'])->findArray(); @@ -344,21 +339,17 @@ switch ($action) { $sales[] = $s['id']; } $sales[] = $admin['id']; - $d = ORM::for_table('tbl_plans') + $query = ORM::for_table('tbl_plans') ->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan')) ->where_in('generated_by', $sales) - ->where_like('tbl_voucher.code', '%' . $search . '%') - ->offset($pageNow) - ->limit($limit) - ->findArray(); + ->where_like('tbl_voucher.code', '%' . $search . '%'); + $d = Paginator::findMany($query, ["search" => $search]); } } else { if (in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) { - $d = ORM::for_table('tbl_plans')->where('enabled', '1') - ->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan')) - ->offset($pageNow) - ->limit($limit) - ->findArray(); + $query = ORM::for_table('tbl_plans')->where('enabled', '1') + ->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan')); + $d = Paginator::findMany($query); } else if ($admin['user_type'] == 'Agent') { $sales = []; $sls = ORM::for_table('tbl_users')->select('id')->where('root', $admin['id'])->findArray(); @@ -366,12 +357,10 @@ switch ($action) { $sales[] = $s['id']; } $sales[] = $admin['id']; - $d = ORM::for_table('tbl_plans') + $query = ORM::for_table('tbl_plans') ->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan')) - ->where_in('generated_by', $sales) - ->offset($pageNow) - ->limit($limit) - ->findArray(); + ->where_in('generated_by', $sales); + $d = Paginator::findMany($query); } } // extract admin @@ -581,6 +570,7 @@ switch ($action) { } else if ($voucher_format == 'rand') { $code = Lang::randomUpLowCase($code); } + die($code); $d = ORM::for_table('tbl_voucher')->create(); $d->type = $type; $d->routers = $server; @@ -743,15 +733,15 @@ switch ($action) { $id = $routes[2]; $days = $routes[3]; $stoken = $_GET['stoken']; - if(App::getTokenValue($stoken)){ + if (App::getTokenValue($stoken)) { r2(U . 'plan', 's', "Extend already done"); } $tur = ORM::for_table('tbl_user_recharges')->find_one($id); $status = $tur['status']; - if(strtotime($tur['expiration'].' '.$tur['time']) > time()){ + if (strtotime($tur['expiration'] . ' ' . $tur['time']) > time()) { // not expired - $expiration = date('Y-m-d', strtotime($tur['expiration']." +$days day")); - }else{ + $expiration = date('Y-m-d', strtotime($tur['expiration'] . " +$days day")); + } else { //expired $expiration = date('Y-m-d', strtotime(" +$days day")); } @@ -759,7 +749,7 @@ switch ($action) { $tur->status = "on"; $tur->save(); App::setToken($stoken, $id); - if($status=='off'){ + if ($status == 'off') { if ($tur['routers'] != 'radius') { $mikrotik = Mikrotik::info($tur['routers']); $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); diff --git a/system/lan/indonesia.json b/system/lan/indonesia.json index e37e21aa..beb8df18 100644 --- a/system/lan/indonesia.json +++ b/system/lan/indonesia.json @@ -4,18 +4,18 @@ "Announcement": "Pemberitahuan", "Registration_Info": "Info Pendaftaran", "Voucher_not_found__please_buy_voucher_befor_register": "Voucher tidak ditemukan, silakan beli voucher sebelum mendaftar", - "Register_Success__You_can_login_now": "Daftar Sukses! Anda dapat masuk sekarang", + "Register_Success__You_can_login_now": "Daftar Sukses! Anda dapat masuk sekarang", "Log_in_to_Member_Panel": "Masuk ke Panel Anggota", "Register_as_Member": "Daftar sebagai Anggota", "Enter_Admin_Area": "Masuk ke Admin Panel", "PHPNuxBill": "PHPNuxBill", "Username": "Nama Pengguna", "Password": "Kata Sandi", - "Passwords_does_not_match": "Kata Sandi tidak cocok", + "Passwords_does_not_match": "Kata sandi tidak cocok", "Account_already_axist": "Akun telah ada", "Manage": "Mengelola", "Submit": "Kirim", - "Save_Changes": "Simpan perubahan", + "Save_Changes": "Simpan Perubahan", "Cancel": "Batal", "Edit": "Sunting", "Delete": "Hapus", @@ -25,32 +25,32 @@ "Data_Deleted_Successfully": "Data Berhasil Dihapus", "Static_Pages": "Halaman Statis", "Failed_to_save_page__make_sure_i_can_write_to_folder_pages___i_chmod_664_pages___html_i_": "Gagal menyimpan halaman, pastikan diperbolehkan menulis file di folder pages, chmod 664 pages\/*.html", - "Saving_page_success": "Menyimpan halaman sukses", + "Saving_page_success": "Menyimpan halaman berhasil", "Sometimes_you_need_to_refresh_3_times_until_content_change": "Terkadang Anda perlu menyegarkan 3 kali hingga konten berubah", "Dashboard": "Dasbor", "Search_Customers___": "Cari Member...", "My_Account": "Akun Saya", "My_Profile": "Profil Saya", "Settings": "Pengaturan", - "Edit_Profile": "Sunting profil", + "Edit_Profile": "Sunting Profil", "Change_Password": "Ganti kata sandi", "Logout": "Keluar", "Services": "Layanan", "Bandwidth_Plans": "Paket Bandwidth", "Bandwidth_Name": "Nama Bandwidth", - "New_Bandwidth": "Baru Bandwidth", + "New_Bandwidth": "Bandwidth Baru", "Edit_Bandwidth": "Sunting Bandwidth", "Add_New_Bandwidth": "Tambahkan Bandwidth Baru", "Rate_Download": "Nilai Unduhan", "Rate_Upload": "Nilai Unggahan", - "Name_Bandwidth_Already_Exist": "Nama Bandwidth Sudah Ada", + "Name_Bandwidth_Already_Exist": "Nama Bandwidth sudah ada", "Hotspot_Plans": "Paket Hotspot", "PPPOE_Plans": "Paket PPPoE", "Plan_Name": "Nama Paket", "New_Service_Plan": "Paket Layanan Baru", "Add_Service_Plan": "Tambah Paket Layanan", "Edit_Service_Plan": "Sunting Paket Layanan", - "Name_Plan_Already_Exist": "Nama Paket Sudah Ada", + "Name_Plan_Already_Exist": "Nama Paket sudah ada", "Plan_Type": "Jenis Paket", "Plan_Price": "Harga Paket", "Limit_Type": "Tipe Batas", @@ -58,7 +58,7 @@ "Limited": "Terbatas", "Time_Limit": "Batas waktu", "Data_Limit": "Batas Data", - "Both_Limit": "Keduanya Membatasi", + "Both_Limit": "Membatasi keduanya", "Plan_Validity": "Waktu Paket", "Select_Bandwidth": "Pilih Bandwidth", "Shared_Users": "Berbagi Pelanggan", @@ -78,7 +78,7 @@ "Phone_Number": "Nomor telepon", "User_deleted_Successfully": "Pelanggan berhasil dihapus", "Full_Administrator": "Administrator Penuh", - "Keep_Blank_to_do_not_change_Password": "Biarkan Kosong apabila tidak ingin mengubah Kata Sandi", + "Keep_Blank_to_do_not_change_Password": "Biarkan kosong apabila tidak ingin mengubah kata sandi", "Keep_it_blank_if_you_do_not_want_to_show_currency_code": "Kosongkan jika Anda tidak ingin menampilkan kode mata uang", "Theme_Style": "Gaya Tema", "Theme_Color": "Warna Tema", @@ -93,23 +93,23 @@ "IP_Address": "Alamat IP", "Router_Secret": "Password Router", "Description": "Deskrispi", - "IP_Router_Already_Exist": "IP Router Sudah Ada", + "IP_Router_Already_Exist": "IP Router sudah ada", "Name_Pool": "Nama Pool", "Range_IP": "Rentang IP", "New_Pool": "Pool baru", "Add_Pool": "Tambahkan Pool", "Edit_Pool": "Sunting Pool", - "Pool_Name_Already_Exist": "Nama Pool Sudah Ada", + "Pool_Name_Already_Exist": "Nama Pool sudah ada", "Refill_Account": "Isi Ulang Akun", "Recharge_Account": "Isi Ulang Akun", "Select_Account": "Pilih Akun", "Service_Plan": "Paket Layanan", "Recharge": "Isi Ulang", "Method": "Metode", - "Account_Created_Successfully": "Akun Berhasil Dibuat", + "Account_Created_Successfully": "Akun berhasil dibuat", "Database_Status": "Status Database", - "Total_Database_Size": "Ukuran Total Database", - "Download_Database_Backup": "Unduh Cadangan Database", + "Total_Database_Size": "Ukuran total database", + "Download_Database_Backup": "Unduh cadangan database", "Table_Name": "Nama Tabel", "Rows": "Baris", "Size": "Ukuran", @@ -123,15 +123,15 @@ "Period_Reports": "Laporan Periode", "All_Transactions": "Semua Transaksi", "Total_Income": "Jumlah Pemasukan", - "All_Transactions_at_Date": "Semua Transaksi pada Tanggal", - "Export_for_Print": "Ekspor untuk Cetak", + "All_Transactions_at_Date": "Semua transaksi pada ganggal", + "Export_for_Print": "Ekspor untuk cetak", "Print": "Cetak", "Export_to_PDF": "Ekspor ke PDF", - "Click_Here_to_Print": "Klik Disini untuk Mencetak", - "You_can_use_html_tag": "Anda dapat menggunakan tag html", + "Click_Here_to_Print": "Klik Disini untuk mencetak", + "You_can_use_html_tag": "Anda dapat menggunakan tag HTML", "Date_Format": "Format tanggal", - "Income_Today": "Pendapatan Hari Ini", - "Income_This_Month": "Penghasilan Bulan Ini", + "Income_Today": "Pendapatan hari ini", + "Income_This_Month": "Penghasilan bulan ini", "Users_Active": "Pelanggan Aktif", "Total_Users": "Total Pelanggan", "Users": "Pelanggan", @@ -153,7 +153,7 @@ "View_Reports": "Lihat Laporan", "View_All": "Lihat semua", "Number_of_Vouchers": "Jumlah Voucher", - "Length_Code": "Kode Panjang", + "Length_Code": "Panjang Kode", "Code_Voucher": "Kode Voucher", "Voucher": "Voucher", "Hotspot_Voucher": "Voucher Hotspot", @@ -177,7 +177,7 @@ "Currency_Code": "Kode Mata Uang", "Order_Voucher": "Pesan Voucher", "Voucher_Activation": "Aktivasi Voucher", - "List_Activated_Voucher": "Daftar Voucher yang Diaktifkan", + "List_Activated_Voucher": "Daftar Voucher yang diaktifkan", "Enter_voucher_code_here": "Masukkan kode voucher di sini", "Private_Message": "Pesan Pribadi", "Inbox": "Kotak Masuk", @@ -195,10 +195,10 @@ "All_field_is_required": "Semua bidang wajib diisi", "Voucher_Not_Valid": "Voucher tidak berlaku", "Activation_Vouchers_Successfully": "Aktivasi Voucher Berhasil", - "Data_Not_Found": "Data Tidak Ditemukan", - "Search_by_Username": "Cari berdasarkan Nama Pengguna", - "Search_by_Name": "Cari berdasarkan Nama", - "Search_by_Code_Voucher": "Cari berdasarkan Kode Voucher", + "Data_Not_Found": "Data tidak ditemukan", + "Search_by_Username": "Cari berdasarkan nama pengguna", + "Search_by_Name": "Cari berdasarkan nama", + "Search_by_Code_Voucher": "Cari berdasarkan kode voucher", "Search": "Mencari", "Select_a_customer": "Pilih pelanggan", "Select_Routers": "Pilih Router", @@ -212,25 +212,25 @@ "Language_Name": "Nama Bahasa", "Folder_Name": "Nama Folder", "Translator": "Penerjemah", - "Language_Name_Already_Exist": "Nama Bahasa Sudah Ada", + "Language_Name_Already_Exist": "Nama Bahasa sudah ada", "Payment_Gateway": "Gerbang Pembayaran", "Community": "Komunitas", "1_user_can_be_used_for_many_devices_": "1 pengguna bisa digunakan untuk banyak perangkat?", "Cannot_be_change_after_saved": "Tidak dapat diubah setelah disimpan", - "Explain_Coverage_of_router": "Jelaskan Cakupan router", + "Explain_Coverage_of_router": "Jelaskan cakupan router", "Name_of_Area_that_router_operated": "Nama area tempat router dioperasikan", - "Payment_Notification_URL__Recurring_Notification_URL__Pay_Account_Notification_URL": "URL Notifikasi Pembayaran, URL Notifikasi Berulang, URL Notifikasi Akun Bayar", - "Finish_Redirect_URL__Unfinish_Redirect_URL__Error_Redirect_URL": "Selesaikan URL Pengalihan, Selesaikan URL Pengalihan, URL Pengalihan Kesalahan", + "Payment_Notification_URL__Recurring_Notification_URL__Pay_Account_Notification_URL": "URL notifikasi pembayaran, URL notifikasi berulang, URL notifikasi akun bayar", + "Finish_Redirect_URL__Unfinish_Redirect_URL__Error_Redirect_URL": "Selesaikan URL pengalihan, selesaikan URL pengalihan, URL pengalihan kesalahan", "Status": "Status", "Plan_Not_found": "Paket tidak ditemukan", "Failed_to_create_transaction_": "Gagal membuat transaksi.", "Seller_has_not_yet_setup_Xendit_payment_gateway": "Penjual belum menyiapkan gateway pembayaran Xendit", - "Admin_has_not_yet_setup_Xendit_payment_gateway__please_tell_admin": "Admin belum menyiapkan gerbang pembayaran Xendit, mohon beritahu admin", + "Admin_has_not_yet_setup_Xendit_payment_gateway__please_tell_admin": "Admin belum menyiapkan gerbang pembayaran Xendit, mohon beritahu Admin", "Buy_this__your_active_package_will_be_overwrite": "Beli ini? Paket aktif Anda akan ditimpa", "You_already_have_unpaid_transaction__cancel_it_or_pay_it_": "Anda sudah memiliki transaksi yang belum dibayar, batalkan atau bayar.", - "Transaction_Not_found": "Transaksi Tidak ditemukan", + "Transaction_Not_found": "Transaksi tidak ditemukan", "Cancel_it_": "Batalkan itu?", - "expired": "kedaluwarsa", + "expired": "Kedaluwarsa", "Check_for_Payment": "Periksa Pembayaran", "Transaction_still_unpaid_": "Transaksi masih belum dibayar.", "Paid_Date": "Tanggal Pembayaran", @@ -243,9 +243,9 @@ "Buy_PPOE_Plan": "Beli Paket PPPoE", "Package": "Paket", "Order_Internet_Package": "Pesan Paket Internet", - "Unknown_Command_": "Perintah Tidak Diketahui.", + "Unknown_Command_": "Perintah tidak diketahui.", "Checking_payment": "Memeriksa pembayaran", - "Create_Transaction_Success": "Transaksi Berhasil Dibuat", + "Create_Transaction_Success": "Transaksi berhasil dibuat", "You_have_unpaid_transaction": "Anda memiliki transaksi yang belum dibayar", "TripayPayment_Channel": "Saluran Pembayaran Tripay", "Payment_Channel": "Saluran Pembayaran", @@ -258,16 +258,16 @@ "Gateway": "Gerbang", "Date_Done": "Tanggal Selesai", "Unpaid_Order": "Pesanan Belum Dibayar", - "Payment_Gateway_Not_Found": "Gerbang Pembayaran Tidak Ditemukan", + "Payment_Gateway_Not_Found": "Gerbang Pembayaran tidak ditemukan", "Payment_Gateway_saved_successfully": "Gerbang Pembayaran berhasil disimpan", "ORDER": "MEMESAN", "Package_History": "Riwayat Paket", "Buy_History": "Riwayat Beli", "Activation_History": "Riwayat Aktivasi", "Buy_Package": "Beli Paket", - "Email": "Surel", + "Email": "Email", "Company_Footer": "Catatan Kaki Perusahaan", - "Will_show_below_user_pages": "Akan ditampilkan di bawah halaman pengguna", + "Will_show_below_user_pages": "Akan ditampilkan dibawah halaman pengguna", "Request_OTP": "Minta OTP", "Verification_Code": "Kode Verifikasi", "SMS_Verification_Code": "Kode Verifikasi SMS", @@ -284,10 +284,10 @@ "Current_IP": "IP saat ini", "Current_MAC": "MAC saat ini", "Login_Status": "Status Masuk", - "Login_Request_successfully": "Permintaan Masuk berhasil", - "Logout_Request_successfully": "Permintaan Keluar berhasil", - "Disconnect_Internet_": "Putuskan sambungan Internet?", - "Not_Online__Login_now_": "Tidak, Masuk sekarang?", + "Login_Request_successfully": "Permintaan masuk berhasil", + "Logout_Request_successfully": "Permintaan keluar berhasil", + "Disconnect_Internet_": "Putuskan sambungan internet?", + "Not_Online__Login_now_": "Tidak, masuk sekarang?", "You_are_Online__Logout_": "Kamu sedang aktif, ingin keluar?", "Connect_to_Internet_": "Hubungkan ke Internet?", "Your_account_not_connected_to_internet": "Akun Anda tidak terhubung ke internet", @@ -322,9 +322,9 @@ "Price": "Harga", "Validity": "Waktu", "Disable_auto_renewal_": "Nonaktifkan perpanjangan otomatis?", - "Auto_Renewal_On": "Perpanjangan Otomatis Aktif", + "Auto_Renewal_On": "Perpanjangan otomatis aktif", "Enable_auto_renewal_": "Aktifkan perpanjangan otomatis?", - "Auto_Renewal_Off": "Perpanjangan Otomatis Mati", + "Auto_Renewal_Off": "Perpanjangan otomatis mati", "Refill_Balance": "Isi Ulang Saldo", "Invoice_Footer": "Catatan Kaki Faktur", "Pay_With_Balance": "Bayar dengan Saldo", @@ -334,7 +334,7 @@ "View": "Melihat", "Back": "Kembali", "Active": "Aktif", - "Transfer_Balance": "Kirim Saldo", + "Transfer_Balance": "Kirim saldo", "Send_your_balance_": "Kirim saldo Anda?", "Send": "Kirim", "Cannot_send_to_yourself": "Tidak dapat mengirim ke diri Anda sendiri", @@ -342,9 +342,9 @@ "From": "Dari", "To": "Ke", "insufficient_balance": "Saldo tidak mencukupi", - "Send_Balance": "Kirim Saldo", - "Received_Balance": "Saldo yang Diterima", - "Minimum_Balance_Transfer": "Minimal Transfer Saldo", + "Send_Balance": "Kirim saldo", + "Received_Balance": "Saldo yang diterima", + "Minimum_Balance_Transfer": "Minimal transfer saldo", "Minimum_Transfer": "Minimal Transfer", "Company_Logo": "Logo Perusahaan", "Expired_IP_Pool": "IP Pool Kedaluwarsa", @@ -361,13 +361,13 @@ "Buy_for_friend": "Beli untuk teman", "Buy_this_for_friend_account_": "Beli ini untuk akun teman?", "Review_package_before_recharge": "Tinjau paket sebelum mengisi ulang", - "Activate": "Mengaktifkan Paket", - "Deactivate": "Menonaktifkan Paket", + "Activate": "Mengaktifkan paket", + "Deactivate": "Menonaktifkan paket", "Sync": "Sinkronisasi", "Failed_to_create_PaymeTrust_transaction_": "Gagal membuat transaksi PaymeTrust.", "Location": "Lokasi", "Radius_Plans": "Paket Radius", - "Change_title_in_user_Plan_order": "Ubah judul dalam urutan paket pelanggan", + "Change_title_in_user_Plan_order": "Ubah Judul dalam urutan paket pelanggan", "Logs": "Log", "Voucher_Format": "Format Voucher", "Resend_To_Customer": "Kirim Ulang Ke Pelanggan", @@ -378,12 +378,12 @@ "Monthly_Registered_Customers": "Pendaftaran Pelanggan perbulan", "Total_Monthly_Sales": "Total penjualan perbulan", "Active_Users": "Pelanggan Aktif", - "SuperAdmin": "Admin Super", + "SuperAdmin": "Super Admin", "Lists": "Daftar", "Vouchers": "Voucher", "Refill_Customer": "Isi Ulang Pelanggan", "Recharge_Customer": "Isi Ulang Pelanggan", - "Plans": "Rencana", + "Plans": "Paket", "PPPOE": "PPPOE", "Bandwidth": "Bandwidth", "Send_Message": "Mengirim pesan", @@ -393,18 +393,18 @@ "Radius_NAS": "Radius NAS", "Customer_Announcement": "Pengumuman Pelanggan", "Language_Editor": "Editor Bahasa", - "Plan_Category": "Kategori Rencana", - "ID": "PENGENAL", + "Plan_Category": "Kategori Paket", + "ID": "ID", "Prev": "Sebelumnya", "Internet_Plan": "Paket Internet", "Generated_By": "Dihasilkan oleh", "All_Users_Insights": "Semua Wawasan Pengguna", - "year": "tahun", - "month": "bulan", - "week": "pekan", - "day": "hari", - "hour": "jam", - "minute": "menit", + "year": "Tahun", + "month": "Bulan", + "week": "Pekan", + "day": "Hari", + "hour": "Jam", + "minute": "Menit", "second": "Kedua", "Account_Type": "Jenis akun", "Contact": "Kontak", @@ -422,55 +422,55 @@ "success": "Sukses", "Click_Here": "Klik disini", "Your_friend_do_not_have_active_package": "Teman Anda tidak memiliki paket aktif", - "If_your_friend_have_Additional_Cost__you_will_pay_for_that_too": "Jika teman Anda memiliki Biaya Tambahan, Anda juga akan membayarnya", + "If_your_friend_have_Additional_Cost__you_will_pay_for_that_too": "Jika teman Anda memiliki biaya tambahan, Anda juga akan membayarnya", "Select_Payment_Gateway": "Pilih Gerbang Pembayaran", - "Available_Payment_Gateway": "Gerbang Pembayaran yang Tersedia", + "Available_Payment_Gateway": "Gerbang Pembayaran yang tersedia", "Pay_Now": "Bayar sekarang", "Notes": "Catatan", - "will_be_replaced_with_Customer_Name": "akan diganti dengan Nama Pelanggan", + "will_be_replaced_with_Customer_Name": "akan diganti dengan nama Pelanggan", "will_be_replaced_with_Customer_username": "akan diganti dengan nama pengguna Pelanggan", - "will_be_replaced_with_Package_name": "akan diganti dengan nama Paket", + "will_be_replaced_with_Package_name": "akan diganti dengan nama paket", "will_be_replaced_with_Package_price": "akan diganti dengan harga Paket", "will_be_replaced_with_Expiration_date": "akan diganti dengan tanggal kedaluwarsa", "additional_bills_for_customers": "tagihan tambahan untuk pelanggan", - "Your_Company_Name_at_Settings": "Nama Perusahaan Anda di Pengaturan", - "Your_Company_Address_at_Settings": "Alamat Perusahaan Anda di Pengaturan", - "Your_Company_Phone_at_Settings": "Telepon Perusahaan Anda di Pengaturan", + "Your_Company_Name_at_Settings": "Nama Perusahaan Anda di pengaturan", + "Your_Company_Address_at_Settings": "Alamat Perusahaan Anda di pengaturan", + "Your_Company_Phone_at_Settings": "Telepon Perusahaan Anda di pengaturan", "Invoice_number": "Nomor faktur", "Date_invoice_created": "Tanggal faktur dibuat", "Payment_gateway_user_paid_from": "Pengguna gateway pembayaran membayar dari", "Payment_channel_user_paid_from": "Pengguna saluran pembayaran membayar dari", "is_Hotspot_or_PPPOE": "adalah Hotspot atau PPPOE", - "Internet_Package": "Paket Internet", - "Internet_Package_Prices": "Harga Paket Internet", - "Receiver_name": "Nama Penerima", + "Internet_Package": "Paket internet", + "Internet_Package_Prices": "Harga paket internet", + "Receiver_name": "Nama penerima", "Username_internet": "Nama pengguna internet", "User_password": "Kata sandi pengguna", "Transaction_datetime": "Tanggal waktu transaksi", - "Balance_Before": "Saldo Sebelumnya", - "Balance_After": "Saldo Setelahnya", - "For_Notes_by_admin": "Untuk Catatan oleh admin", + "Balance_Before": "Saldo sebelumnya", + "Balance_After": "Saldo setelahnya", + "For_Notes_by_admin": "Untuk catatan oleh Admin", "how_much_balance_have_been_send": "berapa banyak saldo yang telah dikirim", "Current_Balance": "Saldo saat ini", "Sender_name": "Nama pengirim", "Customer_Balance": "Saldo Pelanggan", - "Privacy_Policy": "Kebijakan pribadi", - "Terms_and_Conditions": "syarat dan Ketentuan", + "Privacy_Policy": "Kebijakan Privasi", + "Terms_and_Conditions": "Syarat dan Ketentuan", "Disable_Registration": "Nonaktifkan Pendaftaran", - "Customer_just_Login_with_Phone_number_and_Voucher_Code__Voucher_will_be_password": "Pelanggan cukup Login dengan Nomor Telepon dan Kode Voucher, Voucher akan menjadi kata sandi", - "After_Customer_activate_voucher_or_login__customer_will_be_redirected_to_this_url": "Setelah Pelanggan mengaktifkan voucher atau login, Pelanggan akan diarahkan ke url ini", - "Extend_Postpaid_Expiration": "Perpanjang Masa Kedaluwarsa Pascabayar", + "Customer_just_Login_with_Phone_number_and_Voucher_Code__Voucher_will_be_password": "Pelanggan cukup masuk dengan nomor telepon dan kode voucher, Voucher akan menjadi kata sandi", + "After_Customer_activate_voucher_or_login__customer_will_be_redirected_to_this_url": "Setelah Pelanggan mengaktifkan voucher atau masuk, Pelanggan akan diarahkan ke URL ini", + "Extend_Postpaid_Expiration": "Perpanjang masa kedaluwarsa pascabayar", "Allow_Extend": "Izinkan Perpanjang", "Extend_Days": "Perpanjang Hari", "Confirmation_Message": "Pesan konfirmasi", - "Email_Notification": "pemberitahuan email", + "Email_Notification": "Pemberitahuan Email", "This_Token_will_act_as_SuperAdmin_Admin": "Token ini akan bertindak sebagai SuperAdmin\/Admin", "Miscellaneous": "Aneka ragam", "OTP_Required": "Diperlukan OTP", "OTP_is_required_when_user_want_to_change_phone_number": "OTP diperlukan ketika pengguna ingin mengganti nomor telepon", "OTP_Method": "Metode OTP", "SMS": "SMS", - "WhatsApp": "Ada apa", + "WhatsApp": "WhatsApp", "SMS_and_WhatsApp": "SMS dan WhatsApp", "The_method_which_OTP_will_be_sent_to_user": "Metode OTP yang akan dikirimkan ke pengguna" -} \ No newline at end of file +} diff --git a/ui/ui/plan.tpl b/ui/ui/plan.tpl index b28a39f6..bb27d8aa 100644 --- a/ui/ui/plan.tpl +++ b/ui/ui/plan.tpl @@ -11,7 +11,7 @@ class="glyphicon glyphicon-refresh" aria-hidden="true"> sync
- CSV
@@ -75,7 +75,7 @@ {/if} {if $ds['status']=='off' && $_c['extend_expired']} {Lang::T('extend')} + class="btn btn-info btn-xs">{Lang::T('Extend')} {/if} @@ -100,4 +100,4 @@ function extend(idP){ } -{include file="sections/footer.tpl"} \ No newline at end of file +{include file="sections/footer.tpl"} diff --git a/ui/ui/user-dashboard.tpl b/ui/ui/user-dashboard.tpl index 085341bf..e106275a 100644 --- a/ui/ui/user-dashboard.tpl +++ b/ui/ui/user-dashboard.tpl @@ -187,7 +187,7 @@ {if $_bill['status'] != 'on' && $_bill['prepaid'] != 'yes' && $_c['extend_expired']} {Lang::T('Extend')} + onclick="return confirm('{Text::toHex($_c['extend_confirmation'])}')">{Lang::T('Extend')} {/if}
- -
+ +
-
  +
+ +
+
+ Print +
+
+
 
@@ -82,8 +85,7 @@
{if $ds['status'] neq '1'} -   {Lang::T('View')}   {/if} {if in_array($_admin['user_type'],['SuperAdmin','Admin'])} @@ -105,4 +107,4 @@ -{include file="sections/footer.tpl"} +{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/update.php b/update.php index b5eb0e06..fa60c5d3 100644 --- a/update.php +++ b/update.php @@ -141,12 +141,12 @@ function r2($to, $ntype = 'e', $msg = '') { if ($msg == '') { header("location: $to"); - exit; + die(); } $_SESSION['ntype'] = $ntype; $_SESSION['notify'] = $msg; header("location: $to"); - exit; + die(); } function copyFolder($from, $to, $exclude = []) diff --git a/version.json b/version.json index 8d38957f..83503b76 100644 --- a/version.json +++ b/version.json @@ -1,3 +1,3 @@ { - "version": "2024.4.21" + "version": "2024.4.23" } \ No newline at end of file