burger-quizz/metier/game.php

186 lines
4.6 KiB
PHP

<?php
/**
* @brief Une partie de burger quizz
*/
class game
{
///Login du joueur associé à la partie courante
private $user_login;
///Identifiant de la partie
private $id_game;
///Durée de la partie
private $length;
///Tableau de réponse de l'utilisateur
private $reponses_user;
///Date de la partie jouée
private $date;
/**
* @brief Constructeur de game
* @arg $id_game identifiant de la partie
* @arg $user_login login du joueur ayant fait la partie
* @arg $length durée de la partie
* @arg $reponses_user tableau de réponses du joueur
* @arg $date Date durant laquelle la partie a été jouée
*/
public function __construct($id_game, $user_login = NULL, $length = NULL, $reponses_user = NULL, $date = NULL)
{
//On met en place les données dans la attributs spécifiques
if ($user_login == NULL)
{
//Chargement automatique des données
$this->autobuild($id_game);
} else
{
$this->user_login = $user_login;
$this->length = $length;
$this->reponses_user = $reponses_user;
$this->id_game = $id_game;
$this->date = $date;
}
}
private function autobuild($id)
{
//Inclusion des fichiers nécessaires
require_once 'dao/game_dao.php';
//Création d'un game DAO
$dao = new game_dao();
//Chargement des données
$datas = $dao->select($id);
//Mise en place des données
$this->id_game = $id;
$this->user_login = $datas["user_login"];
$this->length = $datas["length"];
$this->date = $datas["date"];
}
/*
* @brief Retourne la durée de la partie
* @return durée
*/
public function getLength()
{
return $this->length;
}
/**
* @brief Obtient le login de l'utilisateur ayant joué à cette partie
* @return string
*/
public function getUserLogin()
{
return $this->user_login;
}
/**
* @brief Obtient les réponses de l'utilisateur associées à la partie
* @return reponses[]
*/
public function getReponses()
{
//Si il n'y a rien comme réponses, on les charge
if ($this->reponses_user == NULL)
{
//Inclusion des fichiers nécessaire
include_once './dao/reponse_user_dao.php';
include_once './metier/reponse_user.php';
//Initialisation du DAO
$dao = new reponse_user_dao();
//Chargement des données
$data = $dao->select($this->id_game);
//Mise en place d'une variable de stockage
$tmp = array();
$i = 0;
//Encapsulation des données
foreach ($data as $row)
{
$tmp[$i] = new reponse_user($row["game_id"], $row["question_id"], $row["reponse"]);
$i++;
}
//On termine par sauvegarder les données
$this->reponses_user = $tmp;
}
return $this->reponses_user;
}
/**
* @brief Obtient l'identifiant de la partie
* @return string
*/
public function getGameId()
{
return $this->id_game;
}
/**
* @brief Définit l'identfiant de la partie
* @arg $id int
*/
public function setGameId($id)
{
$this->id_game = $id;
}
/**
* @brief Obtient quand la partie a été jouée
*/
public function getDate()
{
return $this->date;
}
/**
* @brief Enregistre une partie dans la base de données
*/
public static function saveGame(&$data)
{
//Inclusion des fichier
include_once './dao/game_dao.php';
include_once './dao/reponse_user_dao.php';
//Création d'un nouveau DAO
$dao = new game_dao();
//On enregistre la partie
$dao->insert($data);
//On récupère la dernière partie enregistrée
$new_id = $dao->getLastId();
//On met à jour l'objet passé en argument
$data->setGameId($new_id[0]);
//On enregistre les réponses
$dao = new reponse_user_dao();
$reps = $data->getReponses();
foreach ($reps as $rep)
{
$rep->setGame($new_id[0]);
$dao->insert($rep);
}
return true;
}
}
?>