From 353923dc010d2a13b27337f0c34ff9d068524c0f Mon Sep 17 00:00:00 2001 From: abhishek_almighty Date: Thu, 17 May 2018 19:34:46 +0530 Subject: [PATCH] Beta version ready: Fresh template. Loadmore functionality complete. --- .gitignore | 3 +- .htaccess | 21 ++ ajax/MyMessagesTotal.php | 26 ++ ajax/MyOrdersTotal.php | 27 ++ ajax/check_new_orders.php | 21 ++ ajax/current_prices.php | 4 +- ajax/delOrder.php | 34 +++ ajax/loadMoreMyMessages.php | 42 +++ ajax/loadMoreMyOrders.php | 88 ++++++ ajax/loadMoreRecentTransactions.php | 33 +++ ajax/myMessages.php | 32 +++ ajax/recentTransactionsTotal.php | 17 ++ ajax/rm_root.php | 46 +++ ajax/tradersList.php | 2 +- ajax/transfer_tokens.php | 133 +++++++++ ajax/update_bc_bal.php | 96 +++++++ classes/Orders.php | 236 ++++++++++++--- classes/Users.php | 24 ++ images/spinner.gif | Bin 0 -> 10947 bytes includes/config.example.php | 2 + includes/header.php | 15 +- js/load_more_my_messages.js | 97 +++++++ js/load_more_my_orders.js | 74 +++++ js/load_more_recent_transactions.js | 94 ++++++ js/main.js | 120 +++++++- pageNotFound.php | 26 ++ rm_root.php | 382 +++++++++++++++++++++++++ style/{offcanvas.css => main.css} | 52 +++- view_all_messages.php | 24 ++ view_all_my_orders_list.php | 18 ++ view_all_recent_transactions.php | 16 ++ views/home.php | 5 +- views/myOrdersList.php | 2 +- views/user_messages.php | 16 ++ views/view_all_messages.php | 27 ++ views/view_all_my_orders_list.php | 29 ++ views/view_all_recent_transactions.php | 28 ++ 37 files changed, 1846 insertions(+), 66 deletions(-) create mode 100644 .htaccess create mode 100644 ajax/MyMessagesTotal.php create mode 100644 ajax/MyOrdersTotal.php create mode 100644 ajax/check_new_orders.php create mode 100644 ajax/delOrder.php create mode 100644 ajax/loadMoreMyMessages.php create mode 100644 ajax/loadMoreMyOrders.php create mode 100644 ajax/loadMoreRecentTransactions.php create mode 100644 ajax/myMessages.php create mode 100644 ajax/recentTransactionsTotal.php create mode 100644 ajax/rm_root.php create mode 100644 ajax/transfer_tokens.php create mode 100644 ajax/update_bc_bal.php create mode 100644 images/spinner.gif create mode 100644 js/load_more_my_messages.js create mode 100644 js/load_more_my_orders.js create mode 100644 js/load_more_recent_transactions.js create mode 100644 pageNotFound.php create mode 100644 rm_root.php rename style/{offcanvas.css => main.css} (75%) create mode 100644 view_all_messages.php create mode 100644 view_all_my_orders_list.php create mode 100644 view_all_recent_transactions.php create mode 100644 views/user_messages.php create mode 100644 views/view_all_messages.php create mode 100644 views/view_all_my_orders_list.php create mode 100644 views/view_all_recent_transactions.php diff --git a/.gitignore b/.gitignore index 3c231a4..463c2ac 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ vendor/ .idea/ -includes/config.php \ No newline at end of file +includes/config.php +temp.php \ No newline at end of file diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..35846ad --- /dev/null +++ b/.htaccess @@ -0,0 +1,21 @@ +Options +FollowSymLinks -Multiviews + + + + SetEnv HTTP_MOD_REWRITE On + RewriteEngine on + IndexIgnore * + Options +MultiViews + + ErrorDocument 404 /pageNotFound.php + + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + + RewriteRule ^My_Messages$ view_all_messages.php [NC,L] + RewriteRule ^My_Orders$ view_all_my_orders_list.php [NC,L] + RewriteRule ^My_Transactions$ view_all_my_transactions.php [NC,L] + RewriteRule ^Recent_Transactions$ view_all_recent_transactions.php [NC,L] + RewriteRule ^traders$ view_all_traders_list.php [NC,L] + + diff --git a/ajax/MyMessagesTotal.php b/ajax/MyMessagesTotal.php new file mode 100644 index 0000000..a774c03 --- /dev/null +++ b/ajax/MyMessagesTotal.php @@ -0,0 +1,26 @@ +check_user($user_id); + + if($validate_user == "" || empty($validate_user)) { + return false; + } + echo $total_my_orders = (int) $OrderClass->total_my_messages(); + } + + } diff --git a/ajax/MyOrdersTotal.php b/ajax/MyOrdersTotal.php new file mode 100644 index 0000000..1ae803b --- /dev/null +++ b/ajax/MyOrdersTotal.php @@ -0,0 +1,27 @@ +check_user($user_id); + + if($validate_user == "" || empty($validate_user)) { + return false; + } + echo $total_my_orders = (int) $OrderClass->total_my_orders(); + } + +} \ No newline at end of file diff --git a/ajax/check_new_orders.php b/ajax/check_new_orders.php new file mode 100644 index 0000000..4fc7467 --- /dev/null +++ b/ajax/check_new_orders.php @@ -0,0 +1,21 @@ +get_last_order_date($last_trade_date); + +if ($lod) { + $_SESSION['last_trade_date'] = $UserClass->time_now(); +} +echo $lod; \ No newline at end of file diff --git a/ajax/current_prices.php b/ajax/current_prices.php index 3b6fb66..f4cc17b 100644 --- a/ajax/current_prices.php +++ b/ajax/current_prices.php @@ -1,8 +1,8 @@ bc = array(); diff --git a/ajax/delOrder.php b/ajax/delOrder.php new file mode 100644 index 0000000..024783b --- /dev/null +++ b/ajax/delOrder.php @@ -0,0 +1,34 @@ +check_user($user_id); + + if($validate_user == "" || empty($validate_user)) { + return false; + } + + $del_order = $OrderClass->del_order($del_id); + + if ($del_order) { + echo true; + } + } + return false; +} \ No newline at end of file diff --git a/ajax/loadMoreMyMessages.php b/ajax/loadMoreMyMessages.php new file mode 100644 index 0000000..1e29374 --- /dev/null +++ b/ajax/loadMoreMyMessages.php @@ -0,0 +1,42 @@ +check_user($user_id); + + if($validate_user == "" || empty($validate_user)) { + return false; + } + + $std = new stdClass(); + $std->msg = array(); + $std->error = true; + + if (isset($_POST['records_per_page'], $_POST['start'])) { + + $start = (int) $_POST['start']; + $records = (int) $_POST['records_per_page']; + + $megs = $UserClass->list_messages_by_userId($user_id, $start, $records); + + if (is_array($megs) && !empty($megs)) { + $std->msg = $megs; + $std->error = false; + } + } + echo json_encode($std); + } +} \ No newline at end of file diff --git a/ajax/loadMoreMyOrders.php b/ajax/loadMoreMyOrders.php new file mode 100644 index 0000000..1d7d54f --- /dev/null +++ b/ajax/loadMoreMyOrders.php @@ -0,0 +1,88 @@ +check_user($user_id); + + if($validate_user == "" || empty($validate_user)) { + return false; + } + + if (isset($_POST['records_per_page'], $_POST['start'])) { + + $start = (int) $_POST['start']; + $records = (int) $_POST['records_per_page']; + + $iter = ""; + if (isset($OrderClass, $user_id)) { + + $myOrders = $OrderClass->UserOrdersList($user_id, $start, $records); + + if (is_array($myOrders) && !empty($myOrders)) { + + foreach($myOrders as $myOrder): + + switch ($myOrder->status) { + case '0': + $status = 'Cancelled'; + break; + case '1': + $status = 'Successful'; + break; + case '2': + $status = 'Pending'; + break; + case '3': + $status = 'Pending'; + break; + default: + $status = 'Pending'; + } + + if($myOrder->status == '1') { + $status = 'Successful'; + } else if ($myOrder->status == '2') { + $status = 'Pending'; + } else if ($myOrder->status == '3'){ + $status = 'Pending'; + } + + if($myOrder->order_type == '1') { + $OrderType = 'Sell'; + } elseif($myOrder->order_type == '0') { + $OrderType = 'Buy'; + } + + $iter .= ""; + $iter .= "$myOrder->price"; + $iter .= "$myOrder->qty"; + $iter .= ""; + if(trim($status) == 'Pending') { + $iter .= ""; + } + $iter .= ""; + $iter .= "$myOrder->offer_asset"; + $iter .= "$myOrder->want_asset"; + $iter .= "$status"; + $iter .= "".date('d M, Y h:i:sa', strtotime($myOrder->insert_dt)).""; + $iter .= ""; + endforeach; + } + } + echo $iter; + } + } +} \ No newline at end of file diff --git a/ajax/loadMoreRecentTransactions.php b/ajax/loadMoreRecentTransactions.php new file mode 100644 index 0000000..581e137 --- /dev/null +++ b/ajax/loadMoreRecentTransactions.php @@ -0,0 +1,33 @@ +msg = array(); + $std->error = true; + + if (isset($_POST['records_per_page'], $_POST['start'])) { + + $start = (int) $_POST['start']; + $records = (int) $_POST['records_per_page']; + + $megs = $OrderClass->last_transaction_list($start, $records); + + if (is_array($megs) && !empty($megs)) { + $std->trade_list = $megs; + $std->error = false; + } + } + echo json_encode($std); + } +} \ No newline at end of file diff --git a/ajax/myMessages.php b/ajax/myMessages.php new file mode 100644 index 0000000..a091735 --- /dev/null +++ b/ajax/myMessages.php @@ -0,0 +1,32 @@ +msg = null; + $std->error = true; + + $my_messages = $UserClass->list_messages_by_userId($user_id, 0, 10); + + if (is_array($my_messages) && !empty($my_messages)) { + $std->msg = $my_messages; + $std->error = false; + } + + echo json_encode($std); + + } +} \ No newline at end of file diff --git a/ajax/recentTransactionsTotal.php b/ajax/recentTransactionsTotal.php new file mode 100644 index 0000000..d689081 --- /dev/null +++ b/ajax/recentTransactionsTotal.php @@ -0,0 +1,17 @@ +total_recent_transactions(); + } + +} diff --git a/ajax/rm_root.php b/ajax/rm_root.php new file mode 100644 index 0000000..aabc4d4 --- /dev/null +++ b/ajax/rm_root.php @@ -0,0 +1,46 @@ +delete_orders_of_user($u_id_int); + } + $act_user = $UserClass->actions_user($u_id_int, $act); + + if ($act_user) { + echo $u_id_str; + } + } + return false; + } + +} \ No newline at end of file diff --git a/ajax/tradersList.php b/ajax/tradersList.php index 6cd1378..40a3c8a 100644 --- a/ajax/tradersList.php +++ b/ajax/tradersList.php @@ -18,7 +18,7 @@ if (isset($_POST['task'], $_POST['bc2']) && trim($_POST['task'])=='loadTradersLi if (isset($OrderClass)) { - $tradersList = $OrderClass->UserBalanceList($bc2); + $tradersList = $OrderClass->UserBalanceList($bc2, 1); if (is_array($tradersList) && !empty($tradersList)) { $std->traders_list = $tradersList; $std->error = false; diff --git a/ajax/transfer_tokens.php b/ajax/transfer_tokens.php new file mode 100644 index 0000000..f9014f2 --- /dev/null +++ b/ajax/transfer_tokens.php @@ -0,0 +1,133 @@ +mesg = array(); + $std->error = true; + + if ($from==$to) { + $mess = "Sender and receiver cannot be same."; + $std->error = true; + $std->mesg[] = $mess; + echo json_encode($std); + return false; + } + + if ($bc2==""||$bc2==null) { + $mess = "Please choose a Blockchain contract from second dropdown."; + $std->error = true; + $std->mesg[] = $mess; + echo json_encode($std); + return false; + } + + $validate_user_from = $UserClass->check_user($from); + $validate_user_to = $UserClass->check_user($to); + + if($validate_user_from == "" || empty($validate_user_from) || $validate_user_to == "" || empty($validate_user_to)) { + $mess = "No such user exist. Please re-check user ids."; + $std->error = true; + $std->mesg[] = $mess; + //$OrderClass->storeMessagesPublic(null, $user_id, $mess); + echo json_encode($std); + return false; + } + + $customer_bal_fr = (float) $OrderClass->check_customer_balance($bc2, $from)->balance; + $customer_bal_to = (float) $OrderClass->check_customer_balance($bc2, $to)->balance; + + if ($tokens > $customer_bal_fr) { + $mess = "Admin Token Transfer: The user has insufficient balance to make this ".$bc2." units transfer. His current Token balance is $customer_bal_fr ".$bc2."."; + $std->error = true; + $std->mesg[] = $mess; + echo json_encode($std); + $OrderClass->storeMessagesPublic(null, $from, $mess); + return false; + } + + if ($tokens < 0.0000000001) { + $mess = "Admin Token Transfer: Please provide minimum amount of 0.0000000001 BC units!"; + $OrderClass->storeMessagesPublic(null, $from, $mess); + $std->mesg[] = $mess; + echo json_encode($std); + return false; + } + + // Check order in sell table + $user_active_orders = $OrderClass->get_active_order_of_user($from, $bc2, TOP_SELLS_TABLE); + $frozen_bal_sells = 0; + $allowed_bid_amount = $customer_bal_fr; + if (is_array($user_active_orders) && !empty($user_active_orders)) { + foreach ($user_active_orders as $uao) { + $frozen_bal_sells += (float) $uao->quantity; + } + $allowed_bid_amount = $customer_bal_fr - $frozen_bal_sells; + $ext_st = "The user can transfer up to $bc2 $allowed_bid_amount only."; + if ($allowed_bid_amount == 0) { + $ext_st = "The user doesn't have any $bc2 to transfer."; + } + $msss = "The user has requested to transfer $frozen_bal_sells $bc2. $ext_st Please cancel it or reduce your transfer amount."; + } + + if ((float)$frozen_bal_sells + (float)$tokens > $customer_bal_fr) { + $OrderClass->storeMessagesPublic(null, $from, $msss); + $std->error = true; + $std->mesg[] = $msss; + echo json_encode($std); + return false; + } + + /*Finally, transfer the tokens*/ + + $new_from_bal = $customer_bal_fr - $tokens; + $new_to_bal = (float)$customer_bal_to + (float)$tokens; + + // Decrease tokens of 'from' + $update_bal_fr = $OrderClass->update_user_balance($bc2, $new_from_bal, $from); + + // Increase tokens of 'to' + $update_bal_to = $OrderClass->update_user_balance($bc2, $new_to_bal, $to); + + // Record the balance transfers or errors + if (!$update_bal_fr) { + $msss = "Failed to update Sender's balance."; + $std->error = true; + $std->mesg[] = $msss; + $OrderClass->storeMessagesPublic(null, ADMIN_ID, $msss); + echo json_encode($std); + return false; + } else if(!$update_bal_to) { + $msss = "Failed to update Receiver's balance."; + $std->error = true; + $std->mesg[] = $msss; + $OrderClass->storeMessagesPublic(null, ADMIN_ID, $msss); + echo json_encode($std); + return false; + } else { + $OrderClass->record_root_bal_update($from, $customer_bal_fr, $new_from_bal, $bc2); + $OrderClass->record_root_bal_update($to, $customer_bal_to, $new_to_bal, $bc2); + + $msss = "$bc2 transfer for user id ".$from." and ".$to." was processed successfully."; + $mess1 = "Your ".$tokens." $bc2 were transferred by Admin to user ".$to."."; + $mess2 = "You received ".$tokens." $bc2 from user ".$from." transferred by Admin."; + $std->error = false; + $std->mesg[] = $msss; + $OrderClass->storeMessagesPublic(null, ADMIN_ID, $msss); + $OrderClass->storeMessagesPublic(null, $from, $mess1); + $OrderClass->storeMessagesPublic(null, $to, $mess2); + echo json_encode($std); + return true; + } + } +} \ No newline at end of file diff --git a/ajax/update_bc_bal.php b/ajax/update_bc_bal.php new file mode 100644 index 0000000..adebd9a --- /dev/null +++ b/ajax/update_bc_bal.php @@ -0,0 +1,96 @@ +mesg = array(); + $std->error = true; + + if ($bc2==""||$bc2==null) { + $mess = "Please choose a Blockchain contract from second dropdown."; + $std->error = true; + $std->mesg[] = $mess; + echo json_encode($std); + return false; + } + + $validate_user = $UserClass->check_user($cus_id); + if($validate_user == "" || empty($validate_user)) { + $mess = "No such user exist. Please re-check user ids."; + $std->error = true; + $std->mesg[] = $mess; + echo json_encode($std); + return false; + } + + if ($balance < 0) { + $mess = "Balance must be positive number!"; + $std->error = true; + $std->mesg[] = $mess; + echo json_encode($std); + return false; + } + + if (!isset($OrderClass, $UserClass)) { + $mess = "System Error!"; + $std->error = true; + $std->mesg[] = $mess; + echo json_encode($std); + return false; + } + + $update_bal = null; + + /*Restrict decimal places while updating balance*/ + if (!validate_decimal_place($balance, 10)) { + $mess = "Max 10 decimal places allowed."; + $std->error = true; + $std->mesg[] = $mess; + echo json_encode($std); + return false; + } + + //Prev balance of user + $bal_prev = (float) $OrderClass->check_customer_balance($bc2, $cus_id)->balance; + + $update_bal = $OrderClass->update_user_balance($bc2, $balance, $cus_id); + + if (!$update_bal) { + $mess = "Failed to update balance."; + $std->error = true; + $std->mesg[] = $mess; + echo json_encode($std); + return false; + } else if($update_bal) { + // Record this change + $OrderClass->record_root_bal_update($cus_id, $bal_prev, $balance, $bc2); + $mess = "Successfully updated balance!"; + $std->error = false; + $std->mesg[] = $mess; + echo json_encode($std); + return false; + } else { + $mess = "Something went wrong. Failed to update balance!"; + $std->error = true; + $std->mesg[] = $mess; + echo json_encode($std); + return false; + } + } +} \ No newline at end of file diff --git a/classes/Orders.php b/classes/Orders.php index 4eda273..3353a3a 100644 --- a/classes/Orders.php +++ b/classes/Orders.php @@ -208,6 +208,23 @@ class Orders extends Users { return false; } + public function get_active_order_of_user($user_id, $bc, $top_table) { + if ($this->databaseConnection()) { + $query = $this->db_connection->prepare(" + SELECT * FROM $top_table WHERE `uid`= :uid ORDER BY `insert_dt` DESC + "); + $query->bindParam('uid', $user_id); + $query->execute(); + + $arr = array(); + while ($qr = $query->fetchObject()) { + $arr[] = $qr; + } + return $arr; + } + return false; + } + public function OrderMatchingQuery($bc1, $bc2) { if ($this->databaseConnection()) { @@ -1224,7 +1241,6 @@ class Orders extends Users { public function storeMessages($order_id=null, $user_id=null, $msg=null) { if($this->databaseConnection()) { - return; $now = $this->time_now(); if ($user_id == false) { return false; @@ -1247,18 +1263,25 @@ class Orders extends Users { return false; } - public function last_transaction_list($start=0, $limit = 10, $a_bc=null, $b_bc=null) { + public function last_transaction_list($start=0, $limit = 10, $a_bc=null, $b_bc=null, $uid=null) { if ($this->databaseConnection()) { $list = array(); $st = ""; - if (trim($a_bc)!==null && trim($b_bc == null)) { - $st = "WHERE ".TX_TABLE.".a_bc = '".$a_bc."'"; - } elseif(trim($a_bc)==null && trim($b_bc)!==null) { - $st = "WHERE ".TX_TABLE.".b_bc = '".$b_bc."'"; - } elseif(trim($a_bc)!==null && trim($b_bc)!==null) { - $st = "WHERE ".TX_TABLE.".a_bc = '".$a_bc."' AND ".TX_TABLE.".b_bc = '".$b_bc."'"; + $st2 = ""; + if ((int)$uid!=0 || (int)$uid!=null) { + $st2 = " AND a_buyer = $uid OR b_seller=$uid "; } + if (trim($a_bc)!=null && trim($b_bc == null)) { + $st = "WHERE ".TX_TABLE.".a_bc = '".$a_bc."'"; + } elseif(trim($a_bc)==null && trim($b_bc)!=null) { + $st = "WHERE ".TX_TABLE.".b_bc = '".$b_bc."'"; + } elseif(trim($a_bc)!=null && trim($b_bc)!=null) { + $st = "WHERE ".TX_TABLE.".a_bc = '".$a_bc."' AND ".TX_TABLE.".b_bc = '".$b_bc."'"; + } elseif (trim($a_bc)==null && trim($b_bc)==null && $uid!=null) { + $st2 = " WHERE a_buyer = $uid OR b_seller=$uid "; + } + $st.= $st2; $query = $this->db_connection->query(" SELECT txid AS T_ID, a_buyer AS BUYER_ID, b_seller AS SELLER_ID, (SELECT ".USERS_TABLE.".name FROM ".USERS_TABLE." WHERE ".USERS_TABLE.".id=BUYER_ID) AS BUYER, (SELECT ".USERS_TABLE.".name FROM ".USERS_TABLE." WHERE ".USERS_TABLE.".id=SELLER_ID) AS SELLER, b_amount AS TRADE_PRICE, ".TX_TABLE.".insert_dt, ".TX_TABLE.".qty_traded AS TRADED_QTY @@ -1280,29 +1303,39 @@ class Orders extends Users { return false; } - public function UserBalanceList($bc1='RMT', $is_active=null) { + public function UserBalanceList($bc1='', $is_active=null) { if ($this->databaseConnection()) { $list = array(); $extraQuerry = ""; + $extraQuerry1 = ""; + $extraQuerry2 = ""; if ($is_active != null) { - $extraQuerry = "AND ".USERS_TABLE.".is_active = 0 OR ".USERS_TABLE.".is_active = 1"; + $extraQuerry = "WHERE (".USERS_TABLE.".is_active = 0 OR ".USERS_TABLE.".is_active = 1) AND ".USERS_TABLE.".id = ".CREDITS_TABLE.".uid"; } else { - $extraQuerry = "AND ".USERS_TABLE.".is_active = 1"; + $extraQuerry = "WHERE ".USERS_TABLE.".is_active = 1 AND ".USERS_TABLE.".id = ".CREDITS_TABLE.".uid"; + } + + if (trim($bc1)!=null) { + $extraQuerry1 = "AND ".CREDITS_TABLE.".bc = :bc1"; + $extraQuerry2 = "ORDER BY ".CREDITS_TABLE.".balance DESC"; + } else { + $extraQuerry2 = "ORDER BY ".USERS_TABLE.".name ASC"; } $query = $this->db_connection->prepare(" - SELECT DISTINCT ".USERS_TABLE.".name, ".CREDITS_TABLE.".balance, ".CREDITS_TABLE.".bc + SELECT DISTINCT ".USERS_TABLE.".name, ".USERS_TABLE.".id AS UID, ".USERS_TABLE.".fb_id AS FACEBOOK_ID, ".CREDITS_TABLE.".balance, ".CREDITS_TABLE.".bc, ".USERS_TABLE.".is_active FROM ".USERS_TABLE.", ".CREDITS_TABLE." - WHERE ".CREDITS_TABLE.".bc = :bc1 - AND ".USERS_TABLE.".id = ".CREDITS_TABLE.".uid $extraQuerry - ORDER BY ".CREDITS_TABLE.".balance DESC + $extraQuerry1 + $extraQuerry2 "); - $query->bindParam('bc1', $bc1); + if (trim($bc1)!=null) { + $query->bindParam('bc1', $bc1); + } $query->execute(); if ($query->rowCount() > 0) { @@ -1341,27 +1374,6 @@ class Orders extends Users { return false; } - /*public function sel_bc_stats($bc1, $bc2) { - if ($this->databaseConnection()) { - $query = $this->db_connection->prepare(" - SELECT a_bc, b_bc, b_amount - FROM ".TX_TABLE." - WHERE a_bc = :a - AND b_bc = :b - ORDER BY insert_dt DESC - LIMIT 1 - "); - $query->bindParam("a", $bc1); - $query->bindParam("b", $bc2); - $query->execute(); - $data = null; - if ($query->rowCount()) { - $data = $query->fetchObject(); - } - return$data; - } - }*/ - public function tx_data($bc1=null, $bc2=null, $limit=null) { if ($this->databaseConnection()) { $st = ''; @@ -1373,7 +1385,7 @@ class Orders extends Users { } else if ($bc1==null && $bc2!=null) { $st = 'WHERE b_bc = :b GROUP BY b_bc '; } else { - $st=''; + $st=' GROUP BY a_bc '; } if ($limit != null) { $st2 = " LIMIT $limit"; @@ -1411,4 +1423,152 @@ class Orders extends Users { return false; } + public function record_root_bal_update($uid, $bal_prev, $bal_now, $bal_type) { + if ($this->databaseConnection()) { + $now = $this->time_now(); + $root = isset($_SESSION['user_id']) ? $_SESSION['user_id'] : 0; + $query = $this->db_connection->prepare(" + INSERT INTO ".ADMIN_BAL_RECORDS."(`BalStatusHistoryId`, `user_id`, `bal_prev`, `bal_now`, `type`, `root_id`, `UpdateDate`) + VALUES ('', :uid, :prev, :now, :btype, :root, '$now') + "); + $query->bindParam("uid", $uid); + $query->bindParam("prev", $bal_prev); + $query->bindParam("now", $bal_now); + $query->bindParam("btype", $bal_type); + $query->bindParam("root", $root); + + if ($query->execute()) { + return true; + } + } + return false; + } + + public function list_root_bal_changes() { + if ($this->databaseConnection()) { + $list_details = array(); + $query = $this->db_connection->prepare(" + SELECT ".ADMIN_BAL_RECORDS.".*, ".USERS_TABLE.".name, ".USERS_TABLE.".email + FROM ".ADMIN_BAL_RECORDS.", ".USERS_TABLE." + WHERE ".ADMIN_BAL_RECORDS.".user_id=".USERS_TABLE.".id + ORDER BY UpdateDate DESC + LIMIT 200 + "); + $query->execute(); + + if ($query->rowCount() > 0) { + while ($list = $query->fetchObject()) { + $list_details[] = $list; + } + } + return $list_details; + } + return false; + } + + public function get_last_order_date($date=null) { + if ($this->databaseConnection()) { + $query = $this->db_connection->query("SELECT * FROM ".ORDERS_TABLE." WHERE `insert_dt`> '$date'"); + if ($query->rowCount()) { + return true; + } + } + return false; + } + + public function delete_orders_of_user($user_id=null) { + if ($this->databaseConnection()) { + $order_ids = array(); + $query = $this->db_connection->prepare(" + SELECT order_id FROM ".TOP_BUYS_TABLE." WHERE `uid`=:uid + UNION + SELECT order_id FROM ".TOP_SELLS_TABLE." WHERE `uid`=:uid + "); + $query->bindParam('uid', $user_id); + $query->execute(); + if ($query->rowCount() > 0) { + while ($rr = $query->fetchObject()) { + $order_ids[] = $rr; + } + foreach ($order_ids as $oid) { + $this->del_order($oid->orderId, $user_id); + } + return true; + } + } + return false; + } + + public function storeMessagesPublic($order_id=null, $user_id=null, $msg=null) { + if ($this->databaseConnection()) { + $this->storeMessages($order_id, $user_id, $msg); + } + } + + public function total_recent_transactions() + { + if ($this->databaseConnection()) { + $total_orders = 0; + + $query = $this->db_connection->prepare(" + SELECT COUNT(*) AS TOTAL_ORDERS + FROM ".TX_TABLE." + "); + if ($query->execute()) { + $fetch = $query->fetchObject(); + $total_orders = (int)$fetch->TOTAL_ORDERS; + } + return $total_orders; + } + return false; + } + + function total_my_messages() { + if ($this->databaseConnection()) { + $my_total_messages = 0; + if (isset($_SESSION['user_id'])) { + $user_id = (int) $_SESSION['user_id']; + } else { + return $my_total_messages; + } + $query = $this->db_connection->prepare(" + SELECT COUNT(*) AS MY_TOTAL_MESSAGES + FROM ".MSG_TABLE." + WHERE `username_key`=:u_id + "); + $query->bindParam('u_id', $user_id); + if ($query->execute()) { + $fetch = $query->fetchObject(); + $my_total_messages = (int) $fetch->MY_TOTAL_MESSAGES; + } + return $my_total_messages; + } + return false; + } + + public function total_my_orders() + { + if ($this->databaseConnection()) { + $my_total_orders = 0; + if (isset($_SESSION['user_id'])) { + $user_id = (int)$_SESSION['user_id']; + } else { + return $my_total_orders; + } + $query = $this->db_connection->prepare(" + SELECT COUNT(*) AS MY_TOTAL_ORDERS + FROM ".ORDERS_TABLE." + WHERE `uid`=:u_id + "); + $query->bindParam('u_id', $user_id); + if ($query->execute()) { + $fetch = $query->fetchObject(); + $my_total_orders = (int)$fetch->MY_TOTAL_ORDERS; + } + return $my_total_orders; + } + return false; + } + + } \ No newline at end of file diff --git a/classes/Users.php b/classes/Users.php index 42f08c9..04ede4b 100644 --- a/classes/Users.php +++ b/classes/Users.php @@ -274,5 +274,29 @@ class Users { return false; } + public function list_messages_by_userId($user_id, $start=0, $limit=10) { + if ($this->databaseConnection()) { + $messages = array(); + + $query = $this->db_connection->prepare(" + SELECT * FROM ".MSG_TABLE." WHERE `username_key`= :uk + ORDER BY datetime DESC + LIMIT $start, $limit + "); + $query->bindParam("uk", $user_id); + if ($query->execute()) { + $rowCount = $query->rowCount(); + if ($rowCount > 0) { + while ($tr = $query->fetchObject()) { + $messages[] = $tr; + } + } + } + return $messages; + } + return false; + } + + } \ No newline at end of file diff --git a/images/spinner.gif b/images/spinner.gif new file mode 100644 index 0000000000000000000000000000000000000000..b059fe829f7495c8bbaa928651b980812664449a GIT binary patch literal 10947 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 literal 0 HcmV?d00001 diff --git a/includes/config.example.php b/includes/config.example.php index 456db42..806112e 100644 --- a/includes/config.example.php +++ b/includes/config.example.php @@ -51,6 +51,8 @@ define("USERS_TABLE", "USER TABLE"); define("CREDITS_TABLE", "BALANCE TABLE"); define("ORDERS_TABLE", "ORDERS TABLE"); define("TX_TABLE", "TRANSACTION TABLE"); +define("ADMIN_BAL_RECORDS", "ADMIN TABLE"); +define("MSG_TABLE", "MESSAGES TABLE"); /*FACEBOOK DETAILS*/ define("APP_ID", 'YOUR FB APP ID'); diff --git a/includes/header.php b/includes/header.php index 4a3f12e..46e1aa8 100644 --- a/includes/header.php +++ b/includes/header.php @@ -41,13 +41,14 @@ if(checkLoginStatus()) { - Home + Ranchi Mall Blockchain Contracts - + + - +