<?php
require_once("constants.php");
require_once("utils.php");
class DBController
{
private $link;
public function __construct()
{
mb_internal_encoding("UTF-8");
mb_regex_encoding("UTF-8");
$this->link = mysqli_connect(DB_SERVER, DB_USER, DB_PASS,DB_NAME);
if (mysqli_connect_errno())
{
exit();
}
}
public function __destruct()
{
$this->disconnect();
}
public function confirmUserID($username, $userid)
{
$username = mysqli_real_escape_string($this->link,$username);
$q = "SELECT usr_userid FROM users WHERE pk_user = '$username'";
$results = mysqli_query($this->link,$q);
if(!$results || (mysqli_num_rows($results) < 1))
{
mysqli_free_result($results);
return -1;
}
$dbarray = mysqli_fetch_array($results,MYSQLI_ASSOC);
$dbarray['usr_userid'] = stripslashes($dbarray['usr_userid']);
$userid = stripslashes($userid);
mysqli_free_result($results);
if($userid == $dbarray['usr_userid'])
{
return 1;
}
else{
return -2;
}
}
public function dbgetUserInfo($username){
$username = mysqli_real_escape_string($this->link,$username);
$q = "SELECT pk_user,email,usr_userid FROM users WHERE pk_user = '$username'";
$results = mysqli_query($this->link,$q);
if(!$results || (mysqli_num_rows($results) < 1)){
mysqli_free_result($results);
return NULL;
}
$dbarray = mysqli_fetch_array($results,MYSQLI_ASSOC);
mysqli_free_result($results);
return $dbarray;
}
public function dbgetUserAccountDetailss($userkey)
{
$q = "SELECT U.*,C.country_name FROM users U,Country C WHERE U.pk_user = '$userkey' AND C.country_code = U.country_code";
$results = mysqli_query($this->link,$q);
if(!$results || (mysqli_num_rows($results) < 1))
{
mysqli_free_result($results);
return NULL;
}
$dbarray = mysqli_fetch_array($results,MYSQLI_ASSOC);
mysqli_free_result($results);
return $dbarray;
}
public function user_confirm($urlemail,$urlhash)
{
$new_hash = sha1($urlemail.supersecret_hash_padding);
if ($new_hash && ($new_hash == $urlhash))
{
$q = "SELECT email FROM users WHERE usr_confirm_hash = '$new_hash'";
$results = mysqli_query($this->link,$q);
if (!$results || (mysqli_num_rows($results) < 1))
{
$feedback = 'ERROR -- Hash not found';
mysqli_free_result($results);
return $feedback;
}
else
{
$email = $urlemail;
$hash = $urlhash;
$query = "UPDATE users SET usr_is_confirmed='1' WHERE usr_confirm_hash='$hash'";
mysqli_query($this->link,$query);
return 1;
}
}
else {
$feedback = 'ERROR -- Values do not match';
return $feedback;
}
}
public function matchUserField($value,$field,$userkey)
{
$value = mysqli_real_escape_string($this->link,$value);
$q = "SELECT pk_user FROM users WHERE ".$field." = '$value' and pk_user = '$userkey'";
$results = mysqli_query($this->link,$q);
$numr = mysqli_num_rows($results);
mysqli_free_result($results);
return ($numr > 0);
}
public function dbeditaccount($email, $flname, $country_code, $pass, $userkey)
{
$email = mysqli_real_escape_string($this->link,$email);
$pass = mysqli_real_escape_string($this->link,$pass);
$flname = mysqli_real_escape_string($this->link,$flname);
$country_code = mysqli_real_escape_string($this->link,$country_code);
mysqli_autocommit($this->link,FALSE);
mysqli_query($this->link,"SET NAMES 'utf8'");
$q="";
if($pass)
$q = "UPDATE users SET email='$email',flname='$flname',password='$pass',country_code='$country_code' where pk_user = '$userkey'";
else
$q = "UPDATE users SET email='$email',flname='$flname',country_code='$country_code' where pk_user = '$userkey'";
mysqli_query($this->link,$q);
if(mysqli_errno($this->link))
{
mysqli_rollback($this->link);
return -1;
}
else
{
mysqli_commit($this->link);
return 1;
}
return -1;
}
public function dbexistsCountry($country_name)
{
$country_name_lower = mb_strtolower(html_entity_decode($country_name,ENT_NOQUOTES, 'UTF-8'));
$q = "SELECT country_code FROM Country WHERE LOWER(country_name) = '$country_name_lower'";
$results = mysqli_query($this->link,$q);
if(!$results || (mysqli_num_rows($results) < 1))
{
mysqli_free_result($results);
return null;
}
$dbarray = mysqli_fetch_array($results,MYSQLI_ASSOC);
$dbarray['country_code'] = stripslashes($dbarray['country_code']);
mysqli_free_result($results);
return $dbarray['country_code'];
}
public function incrementLogins($userkey)
{
$q = "SELECT usr_nmb_logins FROM users WHERE pk_user = '$userkey'";
$results = mysqli_query($this->link,$q);
if(!$results || (mysqli_num_rows($results) < 1))
{
mysqli_free_result($results);
return -1;
}
else
{
$dbarray = mysqli_fetch_array($results,MYSQLI_ASSOC);
$nmb_logins = $dbarray['usr_nmb_logins'];
$nmb_logins_inc = $nmb_logins + 1 ;
mysqli_free_result($results);
mysqli_autocommit($this->link,FALSE);
$qu = "update users set usr_nmb_logins = '$nmb_logins_inc' WHERE pk_user = '$userkey'";
mysqli_query($this->link,$qu);
if(mysqli_errno($this->link))
{
mysqli_rollback($this->link);
return -2;
}
else
{
mysqli_commit($this->link);
return 1;
}
}
return -3;
}
public function getUsersPerCountry($userkey)
{
$q = "SELECT COUNT(*) AS value,users.country_code,country_name FROM users INNER JOIN Country ON Country.country_code = users.country_code WHERE usr_is_confirmed=1 and pk_user <> '$userkey' GROUP BY users.country_code";
$results = mysqli_query($this->link,$q);
if(!$results || (mysqli_num_rows($results) < 1)){
mysqli_free_result($results);
return NULL;
}
$aResults = array();
while ($row = $results->fetch_assoc())
{
$aResults[] = array( "country_name"=>$row['country_name'] ,"value"=>$row['value']);
}
mysqli_free_result($results);
return $aResults;
}
public function getUsersData($userkey)
{
mysqli_query($this->link,"SET NAMES 'utf8'");
$q = "SELECT pk_user,country_name,email,flname,usr_ip,usr_nmb_logins,usr_signup_date,usr_is_blocked FROM users INNER JOIN Country ON Country.country_code=users.country_code WHERE usr_is_confirmed=1 and pk_user <> '$userkey'";
$results = mysqli_query($this->link,$q);
if(!$results || (mysqli_num_rows($results) < 1))
{
mysqli_free_result($results);
return NULL;
}
$aResults = array();
while ($row = $results->fetch_assoc())
{
$aResults[] = array( "pk_user"=>$row['pk_user'] ,"country_name"=>$row['country_name'] ,"email"=>$row['email'],"flname"=>$row['flname'],"usr_ip"=>$row['usr_ip'],"usr_nmb_logins"=>$row['usr_nmb_logins'],"usr_signup_date"=>$row['usr_signup_date'],"usr_is_blocked"=>$row['usr_is_blocked']);
}
mysqli_free_result($results);
return $aResults;
}
public function query($query)
{
return mysqli_query($this->link,$query);
}
public function disconnect()
{
mysqli_close($this->link);
}
}
?>