db = $this->getConnection(); } public function checkDatabase() { global $host; global $user; global $pass; global $dbname; try { $database = new PDO("mysql:host=" . HOST . ";dbname=" . DBNAME, DBUSER, DBPASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); //$database->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); return true; } catch (Exception $e) { return false; } } public function generateToken($length = 256) { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $charactersLength = strlen($characters); $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; } return $randomString; } public function loadJSON($lang) { $pageData = json_decode(file_get_contents($this->langDir)); $data = null; foreach ($pageData as $key => $value) { if ($key == $lang) { $data = $value; } } return $data; } public function getMessage($lang, $module, $message) { //echo $module.$message; if (file_exists("../language/" . $lang . "/admin.php")) { include_once "../language/" . $lang . "/admin.php"; //echo $module." ".$message; //print_r($string[$module]); if (!isset($string[$module])) { echo $this->message(false, 'MODULE LANGUAGE FILE NOT FOUND'); } if (!isset($string[$module][$message])) { echo $this->message(false, 'MESSAGE LANGUAGE FILE NOT FOUND'); } return $string[$module][$message]; } else { //$parent->response(array('response'=>'failed','message'=>'LANGUAGE FILE NOT FOUND'),500); echo $this->message(false, 'LANGUAGE FILE NOT FOUND'); } } public function getConnection() { $this->db = new PDO("mysql:host=" . HOST . ";dbname=" . DBNAME, DBUSER, DBPASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $this->db->exec("SET CHARACTER SET utf8"); return $this->db; } public function query($str) { try { $result = $this->db->query($str); return $result; } catch (PDOException $e) { echo "MYSQL ERROR " . $e->getMessage();exit; } catch (Exception $e) { echo "Error " . $e->getMessage();exit; //$this->response(array('response'=>'failed','message'=>$e->getMessage()),500); } } public function lastinsetid() { return $this->db->lastInsertId(); } public function prepare($str) { $result = $this->db->prepare($str); return $result; } public function getUpdateData($str) { try { $selectquery = $this->query($str); $selectarr = $selectquery->fetchAll(PDO::FETCH_OBJ); return $selectarr[0]; } catch (PDOException $e) { header("HTTP/1.1 500 Internal Server Error"); $this->message(false, "MYSQL ERROR " . $e->getMessage()); } catch (Exception $e) { //echo "Error ".$e->getMessage(); exit; header("HTTP/1.1 500 Internal Server Error"); $this->message(false, "PHP ERROR " . $e->getMessage()); //$this->response(array('response'=>'failed','message'=>$e->getMessage()),500); } } public function selectQuery($table_name, $field_name, $condition, $limitations = '') { try { if ($field_name == "") { $field_name = "*"; } $select_query_str = "SELECT $field_name FROM $table_name"; if ($condition != "") { $select_query_str .= " where $condition"; } if ($limitations != "") { $select_query_str .= " limit $limitations"; } //echo $select_query_str; $query_obj = $this->executeQuery($select_query_str); $num_rows = $query_obj->rowCount($query_obj); $result_value = array(); if ($num_rows > 0) { $result_value = $query_obj->fetchAll(PDO::FETCH_OBJ); } return array('nr' => $num_rows, 'result' => $result_value); } catch (PDOException $e) { header("HTTP/1.1 500 Internal Server Error"); $this->message(false, "MYSQL ERROR " . $e->getMessage()); } catch (Exception $e) { header("HTTP/1.1 500 Internal Server Error"); $this->message(false, "PHP ERROR " . $e->getMessage()); } } public function message($cont, $mess, $item = null) { //header('Set-Cookie: same-site-cookie=foo; SameSite=Lax'); //header('Set-Cookie: cross-site-cookie=bar; SameSite=None; Secure'); header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS'); header('Access-Control-Allow-Headers: Content-Type, Content-Range, Content-Disposition, Content-Description'); header("Content-Type:application/json"); $obj = new stdClass(); $obj->mess = $mess; $obj->cont = $cont; if ($item != null) { $obj->item = $item; } else if (is_array($item)) { $obj->item = $item; } echo json_encode($obj); exit(0); return null; } public function errormessage($cont, $mess, $item = null) { header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS'); header('Access-Control-Allow-Headers: Content-Type, Content-Range, Content-Disposition, Content-Description'); header("Content-Type:application/json"); $obj = new stdClass(); $obj->mess = $mess; $obj->cont = $cont; if ($item != null) { $obj->item = $item; } echo json_encode($obj); exit; } public function generatPassword($passLen) { $passChars = $this->passchar; $passArray = str_split($passChars); $newPassArray = array_rand($passArray, $passLen); $newPass = ""; if ($passLen != 1) { for ($i = 0; $i < $passLen; $i++) { $newPass .= $passArray[$newPassArray[$i]]; } } else { $newPass = $passArray[$newPassArray]; } return $newPass; } /* public function sendNotification($conn,$string,$title,$type){ global $prefix; $selectnotification = $conn->query("SELECT * FROM ".$prefix."notification WHERE id=1"); $notificationrow = $selectnotification->fetchAll(PDO::FETCH_OBJ); $notificationid = ((int) $notificationrow[0]->notificationid)+1; $data = array( 'message' => $string,'title' => $title,'type' => $type,'notificationid' => $notificationid); $updatenotification = $conn->query("UPDATE ".$prefix."notification SET notificationid='$notificationid' WHERE id=1"); $conn->sendGoogleCloudMessage($data,$conn->groupID,"group"); } */ /* ////////////////////////////////////// GET MYSQL EXECUTEQUERY ///////////////////////////////// */ public function executeQuery($str) { try { $result = $this->db->query($str); return $result; } catch (PDOException $e) { header("HTTP/1.1 500 Internal Server Error"); $this->message(false, "MYSQL ERROR " . $e->getMessage()); } catch (Exception $e) { header("HTTP/1.1 500 Internal Server Error"); $this->message(false, "PHP ERROR " . $e->getMessage()); } } /* ////////////////////////////////////// GET MYSQL VALUES ///////////////////////////////// */ public function getQueryValue($str) { try { $result = $this->executeQuery($str); $result_value = $result->fetchAll(PDO::FETCH_OBJ); return $result_value; } catch (PDOException $e) { header("HTTP/1.1 500 Internal Server Error"); $this->message(false, "MYSQL ERROR " . $e->getMessage()); } catch (Exception $e) { header("HTTP/1.1 500 Internal Server Error"); $this->message(false, "PHP ERROR " . $e->getMessage()); } } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /* /////////////////////////////// VALIDATE FILE ////////////////////////////// */ public function validateFile($obj) { try { if (is_object($obj)) { (!(isset($obj->filekey) && isset($obj->size) && isset($obj->type) && is_array($obj->type))) ? $this->errormessage(false, 'CODE ERROR') : null; (!(isset($_FILES[$obj->filekey]) && ($_FILES[$obj->filekey]["error"] == 0))) ? $this->errormessage(false, 'FILE NOT FOUND') : null; $maxsize = $obj->size * 1024 * 1024; ($maxsize < $_FILES[$obj->filekey]['size']) ? $this->errormessage(false, 'INVALID FILE SIZE') : null; $fileParts = pathinfo($_FILES[$obj->filekey]['name']); $fileext_arr = explode('?', $fileParts['extension']); (!@in_array(strtolower($fileext_arr[0]), $obj->type)) ? $this->errormessage(false, 'You can upload only ' . @implode(', ', $obj->type) . " file type.") : null; } else { $this->errormessage(false, 'validateFile fields missing'); } } catch (Exception $e) { $this->errormessage(false, $e->getMessage()); } } /* ///////////////////////////////////////////////////////////////////////////////////// */ /* ////////////////////////////////////// UPLOAD FILE ///////////////////////////////// */ public function uploadFile($obj) { $filekey = $obj->filekey; $path = $obj->path; $fileprefix = (isset($obj->fileprefix)) ? $obj->fileprefix : 'file'; if (is_object($obj) && isset($_FILES[$obj->filekey])) { $tempFile = $_FILES[$obj->filekey]['tmp_name']; $fileParts = pathinfo($_FILES[$obj->filekey]['name']); $fileext_arr = explode('?', $fileParts['extension']); $fileExtension = strtolower($fileext_arr[0]); $file_prehead = (IS_LIVE_SERVER != '1') ? "_development" : ""; $fileName = (isset($obj->filename)) ? $obj->filename . $file_prehead . '.' . $fileExtension : $fileprefix . '_' . date('YmdHis') . uniqid() . $file_prehead . '.' . $fileExtension; $targetFile = $path . $fileName; @move_uploaded_file($tempFile, $targetFile); //shell_exec("sudo chmod -R 777 ".$targetFile); chmod($targetFile, 0777); return $fileName; } else { $this->errormessage(false, 'FILE NOT FOUND'); } } /* ///////////////////////////////////////////////////////////////////////////////////// */ /* /////////////////////////////// get ip ////////////////////////////// */ public function getIp($data = array()) { $ip = $_SERVER['REMOTE_ADDR']; if ($ip) { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } return $ip; } // There might not be any data return false; } /* ///////////////////////////////////////////////////////////////////////////////////// */ /* /////////////////////////////// get ip ////////////////////////////// */ public function insertUserLog($conn, $activity) { if (isset($_SESSION["userid"])) { $client_ip = self::getIp($parent); $conn->executeQuery("INSERT INTO " . TABLE_USER_LOG . "( `userid`,`device_type`, `module`, `ip`, `created_on`) VALUES ('" . $_SESSION["userid"] . "','admin','" . $activity . "','" . $client_ip . "','" . NOW . "')"); } } /* ///////////////////////////////////////////////////////////////////////////////////// */ /* /////////////////////////////// GET MONTH DATES ////////////////////////////// */ public function getMonthDates($month, $year) { $month_str = date('Y-m', strtotime($year . "-" . $month . "-01")); $month_start = $month_str . "-01"; $month_days = date('t', strtotime($month_start)); $month_date = array(); $day_arr = array(); for ($i = 1; $i <= $month_days; $i++) { $date_str = date('Y-m-d', strtotime($year . "-" . $month . "-" . $i)); $day_arr[] = ($i < 10) ? "0" . $i : (string) $i; $month_date[] = $date_str; } $month_last = $date_str; $data_arr = array('start' => $month_start, 'month' => $month_date, 'last' => $month_last, 'date' => $day_arr); return $data_arr; } /* ///////////////////////////////////////////////////////////////////////////////////// */ /* ////////////////////////////////////// ANDRIOD GCM FUNCTION ///////////////////////////////// */ private function sendGoogleCloudMessage($messagearr, $reg_id) { // print_r($reg_id); $title = $messagearr['title']; $message = $messagearr['message']; $messagearr['body'] = $messagearr['message']; $fields = array( 'registration_ids' => $reg_id, 'priority' => "high", 'notification' => array("title" => $title, "body" => $message, "sound" => "default"), 'data' => $messagearr, ); $headers = array( GOOGLE_FCM_URL, 'Content-Type: application/json', 'Authorization: key=' . GOOGLE_API_KEY, ); //echo "
"; // $ch = curl_init(); // curl_setopt($ch, CURLOPT_URL, GOOGLE_FCM_URL); // curl_setopt($ch, CURLOPT_POST, true); // curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); // $result = curl_exec($ch); // echo $result; // curl_close($ch); echo $result=""; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /* ////////////////////////////////////// IOS CLOUD MESSAGE FUNCTION ///////////////////////////////// */ private function sendFCMIOSCloudMessage($messagearr, $reg_id) { // print_r($reg_id); $title = $messagearr['title']; $message = $messagearr['message']; $fields = array( //'to'=> $reg_id, "content_available" => true, 'registration_ids' => $reg_id, 'priority' => "high", 'aps' => array("content-available" => 1), 'notification' => $messagearr, // 'notification' => $messagearr, 'data' => array('published' => NOW), 'notId' => rand(1000, 9999), ); $headers = array( GOOGLE_FCM_URL, 'Content-Type: application/json', 'Authorization: key=' . GOOGLE_API_KEY, ); //echo "
"; // $ch = curl_init(); // curl_setopt($ch, CURLOPT_URL, GOOGLE_FCM_URL); // curl_setopt($ch, CURLOPT_POST, true); // curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); // $result = curl_exec($ch); // echo $result; // curl_close($ch); echo $result=""; } /* ////////////////////////////////////// SEND NOTIFICATION ///////////////////////////////// */ public function sendUserNotification($message, $usertokenarr) { // print_r($message); // print_r($usertokenarr); //STRUCTURE $usertokenarr =array('android'=>$arr,'ios'=>$arr); // $android_ids = (isset($usertokenarr['android'])) ? $usertokenarr['android'] : array(); // $ios_ids = (isset($usertokenarr['ios'])) ? $usertokenarr['ios'] : array(); // if (count($android_ids) > 0) { // $ids_arr = array_chunk($android_ids, 1000); // if (count($ids_arr) > 0) { // foreach ($ids_arr as $groupids) { // $this->sendGoogleCloudMessage($message, $groupids); // } // } // } // if (count($ios_ids) > 0) { // //echo "asdasd"; // $ids_arr = array_chunk($ios_ids, 1000); // if (count($ids_arr) > 0) { // foreach ($ids_arr as $groupids) { // $this->sendFCMIOSCloudMessage($message, $groupids); // //$this->sendIoCloudMessage($message,$groupids); // } // } // } } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /* ////////////////////////////////////// USER ADD WALLET ///////////////////////////////// */ public function userAddWallet($conn, $obj, $userid) { $user_str = "SELECT * FROM " . TABLE_USER . " WHERE userid='" . $userid . "' AND is_deleted=0 LIMIT 1"; $user_arr = $conn->getQueryValue($user_str); if (count($user_arr) > 0) { $smpin = $user_arr[0]->smpin; } else { echo $this->message(false, 'REQUIRED USER NOT FOUND'); } if (!isset($obj->type)) { $this->message(false, 'REQUIRED REQUIRED obj->type'); } if (!isset($obj->type_id)) { $this->message(false, 'REQUIRED REQUIRED obj->type_id'); } if (!isset($obj->amount)) { $this->message(false, 'REQUIRED REQUIRED obj->amount'); } $obj->description = (isset($obj->description)) ? $obj->description : ""; //NEED TO CHECK AMOUNT ALREADY ADDED $amount_str = "SELECT * FROM " . TABLE_USER_WALLET_HISTORY . " WHERE smpin='" . $smpin . "' AND type='" . $obj->type . "' AND type_id='" . $obj->type_id . "' AND transaction_type='C'"; $amount_arr = $conn->getQueryValue($amount_str); if (count($amount_arr) > 0) { //AMOUNT ALREADY ADDED } else { $lvl_points = (isset($obj->lvl_points)) ? $obj->lvl_points : 0; $conn->executeQuery("INSERT INTO " . TABLE_USER_WALLET_HISTORY . "( `smpin`, `type`, `type_id`, `description`, `lvl_points`, `amount`, `transaction_type`, `created_on`, `modified_on`) VALUES ('" . $smpin . "','" . $obj->type . "','" . $obj->type_id . "','" . $obj->description . "','" . $lvl_points . "','" . $obj->amount . "' ,'C','" . NOW . "','" . NOW . "')"); //UPDATE POINT IN USER $conn->executeQuery("UPDATE " . TABLE_USER_WALLET . " SET amount=amount+" . $obj->amount . " WHERE smpin='" . $smpin . "' "); } } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /* /////////////////////////////// USER ADD POINTS //////////////////////////////////////////////// */ public function userAddPoints($obj, $userid = 0) { $user_str = "SELECT * FROM " . TABLE_USER . " WHERE userid='" . $userid . "' AND is_deleted=0 LIMIT 1"; $user_arr = $this->getQueryValue($user_str); if (count($user_arr) > 0) { $smpin = $user_arr[0]->smpin; } else { echo "userAddPoints USER NOT FOUND";exit; } if (!isset($obj->type)) {echo "userAddPoints obj->type MISSING";exit;} if (!isset($obj->type_id)) {echo "userAddPoints obj->type_id MISSING";exit;} if (!isset($obj->points)) {echo "userAddPoints obj->points MISSING";exit;} $obj->description = (isset($obj->description)) ? $obj->description : ""; //NEED TO CHECK POINTS ALREADY ADDED $points_str = "SELECT * FROM " . TABLE_USER_EPOINTS_HISTORY . " WHERE smpin='" . $smpin . "' AND type='" . $obj->type . "' AND type_id='" . $obj->type_id . "' AND transaction_type='C'"; $points_arr = $this->getQueryValue($points_str); if (count($points_arr) > 0) { //POINTS ALREADY ADDED } else { $this->executeQuery("INSERT INTO " . TABLE_USER_EPOINTS_HISTORY . "( `smpin`, `type`, `type_id`, `description`, `points`, `transaction_type`, `created_on`, `modified_on`) VALUES ('" . $smpin . "','" . $obj->type . "','" . $obj->type_id . "','" . $obj->description . "','" . $obj->points . "' ,'C','" . NOW . "','" . NOW . "')"); //UPDATE POINT IN USER $this->executeQuery("UPDATE " . TABLE_USER_EPOINTS . " SET points=points+" . $obj->points . " WHERE smpin='" . $smpin . "' "); } } /* //////////////////////////////////////////////////////////////////////////////////////////// */ }