burger-quizz/metier/user.php

239 lines
5.9 KiB
PHP

<?php
/**
* @brief Ligne de la table user représentant un utilisateur
*/
class user {
///Login du joueur
private $login;
///Hash du mot de passe du joueur
private $pwd;
///Nom du joueur
private $nom;
///Prenom du joueur
private $prenom;
///Date d'inscription sur le site du joueur
private $date_inscription;
///Parties jouées par le joueur
private $games;
///Email du joueur
private $email;
/**
* @brief Constructeur de joueur
* @arg $login login du joueur
* @arg $password mot de passe du joueur
* @arg $nom nom du joueur
* @arg $prenom prenom du joueur
* @arg $date_inscription date d'inscription du joueur
* @arg Remarque si le mot de passe est NULL, les données sont chargé automatique grâce au login du joueur
*/
public function __construct($login, $password = null, $nom = null, $prenom = null, $mail = null) {
if ($password == NULL) {
//On demande de charger les données grâce à l'ID
//On include le DAO
include_once './dao/user_dao.php';
//On instancie un nouvel objet DAO
$dao = new user_dao();
//On récupère les données
$data = $dao->select($login);
//On parse les résultats
$this->login = $data["login"];
$this->pwd = $data["pwd"];
$this->nom = $data["nom"];
$this->prenom = $data["prenom"];
$this->email = $data["email"];
$this->date_inscription = $data["dateinscription"];
} else {
//Sinon, on à toutes les infos
//Chargement des données
$this->login = $login;
$this->pwd = $password;
$this->nom = $nom;
$this->prenom = $prenom;
$this->email = $mail;
$this->date_inscription = time();
}
//On ne charge pas les parties pour éviter la surcharge mémoire
$this->games = NULL;
}
/**
* @brief Retourne le login du joueur
* @return string
*/
public function getLogin() {
return $this->login;
}
/**
* @brief Retourne le hash du mot de passe du joueur
*/
public function getPassword() {
return $this->pwd;
}
/**
* @brief Définie le mot de passe du joueur
* @note la converion en hash MD5 est automatiquement réalisée
*/
public function setPassword($password) {
$this->pwd = md5($password);
}
/**
* @brief Obtient le nom du joueur
* @return string
*/
public function getNom() {
return $this->nom;
}
/**
* @brief Définie le nom du joueur
* @return $nom nom du joueur
*/
public function setNom($nom) {
$this->nom = $nom;
}
/**
* @brief Obtient le prénom du joueur
* @return string
*/
public function getPrenom() {
return $this->prenom;
}
/**
* @brief Définie le prénom du joueur
* @arg $prenom prénom du joueur
*/
public function setPrenom($prenom) {
$this->prenom = $prenom;
}
/**
* @brief Obtient les parties jouées par le joueur
* @return tableau de game ou FALSE si rien
*/
public function getGames() {
//Si il n'y a pas de données enregistrées, on fait une requête
if ($this->games == NULL) {
//On fait les inclusions nécessaire
include_once "./dao/game_dao.php";
include_once "./metier/game.php";
//On instancie un nouvel objet
$dao = new game_dao();
//On récupère les logiciel
$result = $dao->selectByLogin($this->login);
//Mise en place d'une variable pour sauvegarder les résultats
$tmp = array();
$i = 0;
//On parse les résultats
foreach ($result as $row) {
$tmp[$i] = new game($row["id"], $row["user_login"], $row["length"], NULL);
}
//On sauvegarde les résultats dans l'attribut spécifique
$this->games = $tmp;
}
//On renvoie les résultats
return $this->games;
}
/**
* @brief Obtient l'email de l'utilisateur
* @return string
*/
public function getMail() {
return $this->email;
}
/**
* @brief Définie l'email de l'utilisateur
* @arg $mail email de l'utilisateur
* @note la vérification se fera en javascript
*/
public function setMail($mail) {
$this->email = $mail;
}
/**
* @brief Obtient si l'objet est NULL
* @return bool
*/
public function isNull() {
if ($this->login != NULL) {
return FALSE;
} else {
return TRUE;
}
}
/*
* @brief Sauvegarde un utilisateur dans la base de données
*/
public static function saveUser($user) {
//On include le DAO pour savegarder l'utilisateur
include_once './dao/user_dao.php';
//On instancie un nouvel objet
$dao = new user_dao();
//On demande la sauvegarde
if (!$dao->update($user)) {
$dao->insert($user);
}
}
public static function saveUserNoPassword($user) {
//On include le DAO pour savegarder l'utilisateur
include_once './dao/user_dao.php';
//On instancie un nouvel objet
$dao = new user_dao();
//On demande la sauvegarde
$dao->updateNoPassword($user);
}
public static function exist($login) {
//On include le DAO pour savegarder l'utilisateur
include_once './dao/user_dao.php';
//On instancie un nouvel objet
$dao = new user_dao();
$tmp = $dao->select($login);
if ($tmp == NULL) {
return FALSE;
} else {
return TRUE;
}
}
}
?>