Plein de trucs fonctionnent maintenant

This commit is contained in:
Némunaire 2013-11-08 15:47:55 +01:00
commit e3384eaa6b
22 changed files with 321 additions and 352 deletions

View file

@ -16,29 +16,41 @@ class Exercice
var $files = array();
var $keys = array();
function Exercice($id=null)
function Exercice($id=null, $theme=null)
{
if (!empty($id))
{
$db = new BDD();
// TODO escape id ?
$res = $db->unique_query("SELECT `id`, `id_theme`, `require`, `level`, `points`, `statement`
FROM exercices
WHERE id= '$id'");
$res = $db->unique_query("SELECT id, id_theme, `require`, level, points, statement FROM exercices WHERE id = '$id'");
if (!empty($res))
{
$this->files = $db->query("SELECT `id`, `path`, `name`, `sha1`
FROM exercice_files
WHERE id_exercice = '$id'");
// Decode sha1
if ($this->files)
foreach($this->files as &$f)
$f["sha1"] = strhex($f["sha1"]);
$this->keys = $db->query("SELECT `id`, `format`, `value`
FROM exercice_keys
WHERE id_exercice = '$id'");
$db->deconnexion();
if (!empty($theme))
{
if ($res['id_theme'] == $theme->get_id())
$this->theme = $theme;
else
throw new InvalidThemeException();
}
else
$this->theme = new Theme($res['id_theme']);
$this->id = $res['id'];
$this->theme = new Theme($res['id_theme']);
$this->require = $res['require'];
$this->level = $res['level'];
$this->points = $res['points'];
@ -49,6 +61,7 @@ class Exercice
else
{
$db->deconnexion();
throw new ExerciceNotFoundException();
}
}
}
@ -58,6 +71,11 @@ class Exercice
return $this->id;
}
function get_name()
{
return "Exercice ".$this->number;
}
// retourne le nombre d'equipes qui ont résolues l'exercice
// trié par date
function get_solved()
@ -66,7 +84,7 @@ class Exercice
// TODO rename time by date in db ?
$res = $db->query("SELECT `id_team`, `time` FROM solved
WHERE id_exercice= '$this->id'
WHERE id_exercice = '$this->id'
ORDER BY time");
$db->deconnexion();
@ -74,6 +92,23 @@ class Exercice
return $res;
}
function is_unlocked($team)
{
//TODO
return mt_rand(0,1);
}
function has_solved($team)
{
$db = new BDD();
$res = $db->unique_query("SELECT `time` FROM solved WHERE id_exercice = '$this->id' AND id_team = ".intval($team->get_id()));
$db->deconnexion();
return $res["time"];
}
function set_number()
{
if ($this->require == "")
@ -223,3 +258,11 @@ class Exercice
return $res['max'];
}
}
class ExerciceNotFoundException extends Exception
{
}
class InvalidThemeException extends Exception
{
}