Rev 31 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/** User Class* This class is used for database related (connect fetch, insert, and update) operations* @author CodexWorld.com* @url http://www.codexworld.com* @license http://www.codexworld.com/license*/class User {private $userTbl = DB_USER_TBL;public function __construct() {if (!isset($this->db)) {$this->db = MySessionHandler::getDBSessionId();if (!$this->db) {die("Failed to initialize MySQL connection.");}}}/** Returns rows from the database based on the conditions* @param array select, where, order_by, limit and return_type conditions*/public function getRows($conditions = array()) {$sql = 'SELECT ';$sql .= array_key_exists("select", $conditions) ? $conditions['select'] : '*';$sql .= ' FROM ' . $this->userTbl;if (array_key_exists("where", $conditions)) {$sql .= ' WHERE ';$i = 0;foreach ($conditions['where'] as $key => $value) {$pre = ($i > 0) ? ' AND ' : '';$sql .= $pre . $key . " = '" . $value . "'";$i++;}}if (array_key_exists("where_not", $conditions)) {$sql .= (strpos($sql, 'WHERE') === false) ? ' WHERE ' : ' AND ';$i = 0;foreach ($conditions['where_not'] as $key => $value) {$pre = ($i > 0) ? ' AND ' : '';$sql .= $pre . $key . " != '" . $value . "'";$i++;}}if (array_key_exists("order_by", $conditions)) {$sql .= ' ORDER BY ' . $conditions['order_by'];}if (array_key_exists("start", $conditions) && array_key_exists("limit", $conditions)) {$sql .= ' LIMIT ' . $conditions['start'] . ',' . $conditions['limit'];}elseif (!array_key_exists("start", $conditions) && array_key_exists("limit", $conditions)) {$sql .= ' LIMIT ' . $conditions['limit'];}$result = $this->db->query($sql);if (array_key_exists("return_type", $conditions) && $conditions['return_type'] != 'all') {switch ($conditions['return_type']) {case 'count':$data = $result->num_rows;break;case 'single':$data = ($result->num_rows > 0) ? $result->fetch_assoc() : false;break;default:$data = '';}}else {if ($result->num_rows > 0) {while ($row = $result->fetch_assoc()) {$data[] = $row;}}}return !empty($data) ? $data : false;}/** Insert data into the database* @param array the data for inserting into the table*/public function insert($data) {if (!empty($data) && is_array($data)) {$columns = '';$values = '';$i = 0;if (!array_key_exists('created', $data)) {$data['created'] = date("Y-m-d H:i:s");}if (!array_key_exists('modified', $data)) {$data['modified'] = date("Y-m-d H:i:s");}foreach ($data as $key => $val) {$pre = ($i > 0) ? ', ' : '';$columns .= $pre . $key;$values .= $pre . "'" . $this->db->real_escape_string($val) . "'";$i++;}$query = "INSERT INTO " . $this->userTbl . " (" . $columns . ") VALUES (" . $values . ")";$insert = $this->db->query($query);return $insert ? $this->db->insert_id : false;}else {return false;}}/** Update data into the database* @param array the data to update into the table* @param array where condition on updating data*/public function update($data, $conditions) {if (!empty($data) && is_array($data) && !empty($conditions)) {//prepare columns and values sql$cols_vals = '';$i = 0;if (!array_key_exists('modified', $data)) {$data['modified'] = date("Y-m-d H:i:s");}foreach ($data as $key => $val) {$pre = ($i > 0) ? ', ' : '';$cols_vals .= $pre . $key . " = '" . $this->db->real_escape_string($val) . "'";$i++;}//prepare where conditions$whereSql = '';$ci = 0;foreach ($conditions as $key => $value) {$pre = ($ci > 0) ? ' AND ' : '';$whereSql .= $pre . $key . " = '" . $value . "'";$ci++;}//prepare sql query$query = "UPDATE " . $this->userTbl . " SET " . $cols_vals . " WHERE " . $whereSql;//update data$update = $this->db->query($query);return $update ? true : false;}else {return false;}}/** Insert / Update social user data into the database* @param array the data to insert or update into the table*/function checkUser($userData = array()) {if (!empty($userData)) {// Check whether user data already exists in database with same oauth info$prevQuery = "SELECT * FROM " . $this->userTbl . " WHERE oauth_provider = '" . $userData['oauth_provider'] . "' AND oauth_uid = '" . $userData['oauth_uid'] . "'";$prevResult = $this->db->query($prevQuery);// Check whether user data already exists in database with same email$prevQuery2 = "SELECT * FROM " . $this->userTbl . " WHERE email != '' AND email = '" . $userData['email'] . "'";$prevResult2 = $this->db->query($prevQuery2);if ($prevResult->num_rows > 0) {$cols_vals = '';$i = 0;// Update user data if already existsif (!array_key_exists('modified', $userData)) {$userData['modified'] = date("Y-m-d H:i:s");}foreach ($userData as $key => $val) {$pre = ($i > 0) ? ', ' : '';$cols_vals .= $pre . $key . " = '" . $this->db->real_escape_string($val) . "'";$i++;}//prepare sql query$query = "UPDATE " . $this->userTbl . " SET " . $cols_vals . " WHERE oauth_provider = '" . $userData['oauth_provider'] . "' AND oauth_uid = '" . $userData['oauth_uid'] . "'";//update data$update = $this->db->query($query);}elseif ($prevResult2->num_rows > 0) {// Update user data if already existsif (!array_key_exists('modified', $userData)) {$userData['modified'] = date("Y-m-d H:i:s");}//prepare sql query$query = "UPDATE " . $this->userTbl . " SET oauth_provider = '" . $userData['oauth_provider'] . "', oauth_uid = '" . $userData['oauth_uid'] . "', modified = '" . $userData['modified'] . "' WHERE email = '" . $userData['email'] . "'";//update data$update = $this->db->query($query);}else {$columns = '';$values = '';$i = 0;// Insert user data$userData['activated'] = '1';$userData['status'] = '1';if (!array_key_exists('created', $userData)) {$userData['created'] = date("Y-m-d H:i:s");}if (!array_key_exists('modified', $userData)) {$userData['modified'] = date("Y-m-d H:i:s");}foreach ($userData as $key => $val) {$pre = ($i > 0) ? ', ' : '';$columns .= $pre . $key;$values .= $pre . "'" . $this->db->real_escape_string($val) . "'";$i++;}$query = "INSERT INTO " . $this->userTbl . " (" . $columns . ") VALUES (" . $values . ")";$insert = $this->db->query($query);}// Get user data from the database$result = $this->db->query($prevQuery);$userData = $result->fetch_assoc();}// Return user datareturn $userData;}}