158 lines
4.2 KiB
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;
|
|
}
|
|
|
|
}
|
|
|
|
?>
|