$v) { // if has : then its an installment if (strpos($v, ":") === false) { // Not installment $bills[$k] = $v; $addcost += $v; } else { // installment list($cost, $rem) = explode(":", $v); // :0 installment is done if (!empty($rem)) { $bills[$k] = $cost; $addcost += $cost; } } } return [$bills, $addcost]; } public static function getBillNames($id = 0) { if (!$id) { $id = User::getID(); if (!$id) { return []; } } $bills = []; $attrs = User::getAttributes('Bill', $id); foreach ($attrs as $k => $v) { $bills[] = str_replace(' Bill', '', $k); } return $bills; } public static function billsPaid($bills, $id = 0) { if (!$id) { $id = User::getID(); if (!$id) { return []; } } foreach ($bills as $k => $v) { // if has : then its an installment $v = User::getAttribute($k, $id); if (strpos($v, ":") === false) { // Not installment, no need decrement } else { // installment list($cost, $rem) = explode(":", $v); // :0 installment is done if ($rem != 0) { User::setAttribute($k, "$cost:" . ($rem - 1), $id); } } } } public static function setAttribute($name, $value, $id = 0) { if (!$id) { $id = User::getID(); if (!$id) { return ''; } } $f = ORM::for_table('tbl_customers_fields')->where('field_name', $name)->where('customer_id', $id)->find_one(); if (!$f) { $f = ORM::for_table('tbl_customers_fields')->create(); $f->customer_id = $id; $f->field_name = $name; $f->field_value = $value; $f->save(); $result = $f->id(); if ($result) { return $result; } } else { $f->field_value = $value; $f->save(); return $f['id']; } return 0; } public static function getAttribute($name, $id = 0, $default = '') { if (!$id) { $id = User::getID(); if (!$id) { return []; } } $f = ORM::for_table('tbl_customers_fields')->where('field_name', $name)->where('customer_id', $id)->find_one(); if ($f) { return $f['field_value']; } return $default; } public static function getAttributes($endWith, $id = 0) { if (!$id) { $id = User::getID(); if (!$id) { return []; } } $attrs = []; $f = ORM::for_table('tbl_customers_fields')->where_like('field_name', "%$endWith")->where('customer_id', $id)->find_many(); if ($f) { foreach ($f as $k) { $attrs[$k['field_name']] = $k['field_value']; } return $attrs; } return []; } public static function generateToken($uid, $validDays = 30) { global $db_pass; if($validDays>=30){ $time = time(); }else{ $time = strtotime("+ $validDays days"); } return [ 'time' => $time, 'token' => $uid . '.' . $time . '.' . sha1($uid . '.' . $time . '.' . $db_pass) ]; } public static function setCookie($uid) { global $db_pass; if (isset($uid)) { list($time, $token) = self::generateToken($uid); setcookie('uid', $token, time() + 86400 * 30); return $token; } else { return false; } } public static function removeCookie() { if (isset($_COOKIE['uid'])) { setcookie('uid', '', time() - 86400); } } public static function _info($id = 0) { global $config; if ($config['maintenance_mode'] == true) { if ($config['maintenance_mode_logout'] == true) { r2(U . 'logout', 'd', ''); } else { displayMaintenanceMessage(); } } if (!$id) { $id = User::getID(); } $d = ORM::for_table('tbl_customers')->find_one($id); if ($d['status'] == 'Banned') { _alert(Lang::T('This account status') . ' : ' . Lang::T($d['status']), 'danger', "logout"); } return $d; } public static function _infoByName($username) { global $config; if ($config['maintenance_mode'] == true) { if ($config['maintenance_mode_logout'] == true) { r2(U . 'logout', 'd', ''); } else { displayMaintenanceMessage(); } } $d = ORM::for_table('tbl_customers')->where("username", $username)->find_one(); if ($d['status'] == 'Banned') { _alert(Lang::T('This account status') . ' : ' . Lang::T($d['status']), 'danger', "logout"); } return $d; } public static function isUserVoucher($kode) { $regex = '/^GC\d+C.{10}$/'; return preg_match($regex, $kode); } public static function _billing($id = 0) { if (!$id) { $id = User::getID(); } $d = ORM::for_table('tbl_user_recharges') ->select('tbl_user_recharges.id', 'id') ->selects([ 'customer_id', 'username', 'plan_id', 'namebp', 'recharged_on', 'recharged_time', 'expiration', 'time', 'status', 'method', 'plan_type', ['tbl_user_recharges.routers', 'routers'], ['tbl_user_recharges.type', 'type'], 'admin_id', 'prepaid' ]) ->left_outer_join('tbl_plans', ['tbl_plans.id', '=', 'tbl_user_recharges.plan_id']) ->left_outer_join('tbl_bandwidth', ['tbl_bandwidth.id', '=', 'tbl_plans.id_bw']) ->select('tbl_bandwidth.name_bw', 'name_bw') ->where('customer_id', $id) ->find_many(); return $d; } }