<?php
/*
 * In questo file sono contenute le funzioni utili
 * alla gestione degli utenti 
 */
// Includo la lista delle funzioni per dialogare con il database
require_once 'database.php';
// Questa funzione si occupa di autenticare un utente 
// nel sistema
function authenticateUser($userEmail, $userPassword)
{
	// Apro una connessione con il database
	$connection = getConnection();
	
	// Cerco nel database un utente attivo
	// con la coppia email:password specificata
	$sql = "SELECT user_id
			FROM user 
			WHERE 
				email = '%s' 
			AND 
				password = '%s'
			AND
				active = 1";
	// Assegno alla query i parametri da cercare
	$sql = sprintf($sql, $userEmail, $userPassword);
	
	// Eseguo la query sul database
	$result = mysql_query($sql, $connection);
	
	// Se si  verificato un errore oppure non ho trovato nessun risultato
	if (false == $result || mysql_num_rows($result) == 0)
		return false;
	
	// Questa riga contiene le informazioni dell'utente, se trovato nel database	
	$row = mysql_fetch_assoc($result);
	// Ritorno lo user_id dell'utente
	return $row['user_id'];	
}
// Questa funzione permette di registrare un nuovo utente nel sistema
function registerNewUser($userData)
{
	// Apro una connessione con il database
	$connection = getConnection();
	// Questi sono i dati da inserire nel database
	$userEmail 		= $userData['email'];
	$userPassword 	= $userData['password'];
	$userName		= $userData['name'];
	$token 			= $userData['token'];
	
	// Query per inserire i nuovi dati nel database
	$sql = "INSERT INTO user 
				(email, password, name, token) 
			VALUES 
				('%s', '%s', '%s', '%s') ";
	
	// Assegno alla query i parametri da cercare
	$sql = sprintf($sql, 
				$userEmail, 
				$userPassword, 
				mysql_real_escape_string($userName), 
				$token);
	
	// Provo ad inserire i dati
	if (false == mysql_query($sql, $connection))
	{
		return false;
	}
	// se sono riuscito ad inserire i dati,
	// ritorno l'ultimo user_id inserito	
	else
	{
		return mysql_insert_id($connection);
	}
}
// Questa funzione controlla l'esistenza
// nel database di un utente con uno specifico indirizzo email
function userEmailExists($userEmail)
{
	// Apro una connessione con il database
	$connection = getConnection();
	
	// Conto il numero di utenti registrati con 
	// l'indirizzo email specificato
	$sql = "SELECT user_id
			FROM user 
			WHERE 
				email = '%s' ";
	
	// Assegno alla query i parametri da cercare
	$sql = sprintf($sql, $userEmail);
	
	// Eseguo la query sul database
	$result = mysql_query($sql, $connection);
	
	// Se non ho trovato utenti oppure se si 
	// verificato un errore
	if (false == $result || mysql_num_rows($result) == 0)
	{
		return false;
	}
	// Altrimenti vuol dire che ho trovato un utente
	// con l'indirizzo email specificato
	else
	{	 
		return true;
	}
}
// Questa funzione cerca i dati di un utente 
// in base al token specificato
function userFindByToken($token)
{
	// Apro una connessione con il database
	$connection = getConnection();
	
	// Cerco un utente con un certo token
	$sql = "SELECT * 
			FROM user
			WHERE
				token = '%s'";
	
	// Assegno alla query i parametri da cercare
	$sql = sprintf($sql, $token);
	
	// Eseguo la query sul database
	$result = mysql_query($sql, $connection);
	
	// Se si  verificato un errore oppure non
	// ho trovato nessun utente
	if (false == $result || mysql_num_rows($result) == 0)
	{
		return false;
	}
	
	// Ritorno i dati dell'utente trovato
	return mysql_fetch_assoc($result);
}
// Questa funzione cerca i dati di un utente 
// in base all'indirizzo email specificato
function userFindByEmail($userEmail)
{
	// Apro una connessione con il database
	$connection = getConnection();
	
	// Cerco un utente con un certo indirizzo email
	$sql = "SELECT * 
			FROM user 
			WHERE 
				email = '%s'";
	
	// Assegno alla query i parametri da cercare
	$sql = sprintf($sql, $userEmail);
	
	// Eseguo la query sul database
	$result = mysql_query($sql, $connection);
	
	// Se si  verificato un errore oppure non
	// ho trovato nessun utente
	if (false == $result || mysql_num_rows($result) == 0)
	{
		return false;
	}
	
	// Ritorno i dati dell'utente trovato
	return mysql_fetch_assoc($result); 	
}
// Questa funzione cerca i dati di un utente 
// in base ad un userId specificato
function userFindById($userId)
{	
	// Apro una connessione con il database
	$connection = getConnection();
	
	// Cerco un utente con un certo userId
	$sql = "SELECT * 
			FROM user 
			WHERE 
				user_id = %d";
	
	// Assegno alla query i parametri da cercare
	$sql = sprintf($sql, $userId);
	
	// Eseguo la query sul database
	$result = mysql_query($sql, $connection);
	
	// Se si  verificato un errore oppure non
	// ho trovato nessun utente
	if (false == $result || mysql_num_rows($result) == 0)
	{
		return false;
	}
	
	// Ritorno i dati dell'utente trovato
	return mysql_fetch_assoc($result); 	
}
// Questa funzione serve per attivare l'account 
// di un utente con un certo userId
function userActivate($userId)
{
	// Apro una connessione con il database
	$connection = getConnection();
	
	// Attivo l'utente impostando il campo
	// active a 1
	$sql = "UPDATE user 
			SET active = 1, token = NULL
			WHERE
				user_id = %d";
	
	// Assegno alla query i parametri da cercare
	$sql = sprintf($sql, $userId);
	
	// Eseguo la query sul database
	$result = mysql_query($sql, $connection);
	
	// Se si  verificato un errore oppure nessun utente
	// Ž stato attivato
	if (false == $result || mysql_affected_rows($connection) == 0)
	{
		return false;
	}
	// Altrimenti l'utente  stato attivato
	else
	{ 	
		return true;
	}	
}
// Questa funzione permette di settare il token
// di uno specifico utente, identificato dal suo userId
function userSetToken($token, $userId)
{
	// Apro la connessione al database
	$connection = getConnection();
	
	// Questa  la query di aggornamento
	$sql = "UPDATE user 
			SET token = '%s'
			WHERE user_id = %d";
	
	// Assegno alla query i parametri da cercare
	$sql = sprintf($sql, $token, $userId);
	
	// Eseguo la query
	$result = mysql_query($sql, $connection);
	
	// Se si  verificato un errore oppure nessun token  stato settato
	// ritorno false
	if (false == $result || mysql_affected_rows($connection) == 0)
	{
		return false;
	}
	// altrimenti ritorno true
	else
	{
		return true;
	}
}