burger-quizz/metier/ranker.php

158 lines
4.2 KiB
PHP

<?php
/**
* @brief Classe représentant des informations de classement
*/
class ranker
{
///Objet user de l'utilisateur courant
public $user;
///Nombre de point pour le classement
public $point;
///Durée de la partie
public $length;
///Nombre de parties effectuées
public $nb_game;
/**
* @brief Constructeur
* @arg $type type de classement (l'objet courant de chargera pas les mêmes données). ex : GLOBAL ou CAT
* @arg $args arguments supplémentaire pour la construction de l'objet courant
*
* @note si on a le type GLOBAL, args représente un singleton avec le login seulement si on a CAT, args représente un tableau avec le login et le nom de la catégorie demandées
*/
public function __construct($type, $args)
{
//On regarde quel autobuilder on doit appeler
if ($type == "global")
{
//On a demandé un objet pour un classement global
$this->buildGlobal($args);
} elseif ($type == "cat")
{
//On a demandé un objet pour une catégorie
$this->buildCat($args);
}
}
/**
* @brief Fonction d'auto construction pour un classement global
* @arg $args tableau contenant seulement le login
*/
public function buildGlobal($args)
{
//Inclusion des fichiers nécessaire
include_once 'dao/point_manager.php';
include_once 'metier/user.php';
include_once "dao/dao.php";
include_once "dao/bdd.php";
//Mise en place des données
$login = $args["login"];
//Chargement des données utilisateur
$this->user = new user($login);
//Chargement de toutes les parties du joueur
$games = point_manager::getGamesByLogin($login);
//On établit le nombre total de point pour le joueur ainsi que le temps
//total
$this->point = 0;
$this->length = 0;
//Pour toutes les parties, on additionne les points
foreach ($games as $game)
{
$this->point+= point_manager::getGamePoint($game[0]);
$length = point_manager::getLengthByGame($game);
$this->length += $length[0];
}
//On calcul le nombre total de partie jouées
$this->nb_game = count($games);
}
/*
* @brief Fonction d'autoconstruction pour un classement par catégorie
* @arg $args tableau contenant le login et la catégorie
*/
public function buildCat($args)
{
//Inclusion des fichiers nécessaires
require_once 'metier/user.php';
require_once 'dao/point_manager.php';
require_once 'dao/bdd.php';
//Mise en place des variables standard pour la fonctions
$login = $args["login"];
$cat = $args["cat"];
//On crée un nouvel utilisateur
$this->user = new user($login);
//Chargement de toutes les parties selon la catégorie du joueur
$games = point_manager::getGameByLoginByCat($login, $cat);
//Initialisation des variables locales de l'objet
$this->length = 0;
$this->nb_game = 0;
$this->point = 0;
//On boucle pour chaque parties
foreach ($games as $game)
{
$this->point+=point_manager::getGamePoint($game["id"]);
// $this->length+= point_manager::getLengthByGame($game["id"]);
}
//Mise en place du nombre de parties
$this->nb_game = count($games);
}
/**
* @brief Obtient l'utilisateur courant
* @return objet user
*/
public function getUser()
{
return $this->user;
}
/**
* @brief Obtient le nombre de point
* @return int
*/
public function getPoint()
{
return $this->point;
}
/**
* @brief Obtient la durée d'une partie
* @return int (temps en milliseconde)
*/
public function getLength()
{
return $this->length;
}
/**
* @brief Obtient le nombre de parties jouées
* @return int
*/
public function getNbGame()
{
return $this->nb_game;
}
}
?>