Friday release
This commit is contained in:
parent
10eb72688f
commit
c349769425
16 changed files with 319 additions and 89 deletions
|
|
@ -18,6 +18,8 @@ function remove_themes($id)
|
|||
$db->query("DELETE FROM exercices WHERE id_theme = ".$id);
|
||||
$db->query("DELETE FROM themes WHERE id = ".$id);
|
||||
$db->deconnexion();
|
||||
|
||||
Cache::del("ordered_th".$id);
|
||||
}
|
||||
|
||||
if (!empty($_GET["delete"]))
|
||||
|
|
|
|||
|
|
@ -75,6 +75,23 @@ class Exercice
|
|||
}
|
||||
}
|
||||
|
||||
static function __set_state(array $array)
|
||||
{
|
||||
$tmp = new Exercice();
|
||||
|
||||
$tmp->id = $array["id"];
|
||||
$tmp->number = $array["number"];
|
||||
$tmp->theme = $array["theme"];
|
||||
$tmp->require = $array["require"];
|
||||
$tmp->level = $array["level"];
|
||||
$tmp->points = $array["points"];
|
||||
$tmp->statement = $array["statement"];
|
||||
$tmp->files = $array["files"];
|
||||
$tmp->keys = $array["keys"];
|
||||
|
||||
return $tmp;
|
||||
}
|
||||
|
||||
function get_id()
|
||||
{
|
||||
return $this->id;
|
||||
|
|
@ -89,10 +106,12 @@ class Exercice
|
|||
// trié par date
|
||||
function get_solved()
|
||||
{
|
||||
$db = new BDD();
|
||||
$id = $this->id;
|
||||
|
||||
$db = new BDD();
|
||||
$db->escape($id);
|
||||
$res = $db->query("SELECT `id_team`, `time` FROM solved
|
||||
WHERE id_exercice = '$this->id'
|
||||
WHERE id_exercice = '$id'
|
||||
ORDER BY time");
|
||||
|
||||
$db->deconnexion();
|
||||
|
|
@ -105,11 +124,13 @@ class Exercice
|
|||
if ($this->require == "")
|
||||
return 1;
|
||||
|
||||
$db = new BDD();
|
||||
$req = $this->require;
|
||||
|
||||
$db = new BDD();
|
||||
$db->escape($req);
|
||||
$res = $db->unique_query("SELECT `id` FROM solved
|
||||
WHERE id_team = '".intval($team->id)."'
|
||||
AND id_exercice = '$this->require'");
|
||||
AND id_exercice = '$req'");
|
||||
$db->deconnexion();
|
||||
if (empty($res))
|
||||
return 0;
|
||||
|
|
@ -118,9 +139,11 @@ class Exercice
|
|||
|
||||
function has_solved($team)
|
||||
{
|
||||
$db = new BDD();
|
||||
$id = $this->id;
|
||||
|
||||
$res = $db->unique_query("SELECT `time` FROM solved WHERE id_exercice = '$this->id'
|
||||
$db = new BDD();
|
||||
$db->escape($id);
|
||||
$res = $db->unique_query("SELECT `time` FROM solved WHERE id_exercice = '$id'
|
||||
AND id_team = ".intval($team->get_id()));
|
||||
|
||||
$db->deconnexion();
|
||||
|
|
@ -143,6 +166,7 @@ class Exercice
|
|||
do
|
||||
{
|
||||
array_push($checked, $exo);
|
||||
$db->escape($exo);
|
||||
$res = $db->unique_query("SELECT `require` FROM exercices WHERE id = '".$exo."'");
|
||||
$exo = $res['require'];
|
||||
$ret++;
|
||||
|
|
@ -278,6 +302,28 @@ class Exercice
|
|||
|
||||
return $res['max'];
|
||||
}
|
||||
|
||||
public function first_to_solve_exercice()
|
||||
{
|
||||
$db = new BDD();
|
||||
|
||||
$id = $this->id;
|
||||
$db->escape($id);
|
||||
|
||||
$res = $db->unique_query("SELECT t3.team_name as result
|
||||
FROM solved AS t1
|
||||
INNER JOIN (
|
||||
SELECT MIN(s.time) AS minTime
|
||||
FROM solved AS s
|
||||
WHERE s.id_exercice = '".$id."'
|
||||
) AS t2
|
||||
INNER JOIN teams AS t3 ON t1.id_team = t3.id
|
||||
WHERE t1.time = t2.minTime");
|
||||
$db->deconnexion();
|
||||
|
||||
return $res['result'];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class ExerciceNotFoundException extends Exception
|
||||
|
|
|
|||
|
|
@ -60,6 +60,22 @@ class Team
|
|||
}
|
||||
}
|
||||
|
||||
static function __set_state(array $array)
|
||||
{
|
||||
$tmp = new Team();
|
||||
|
||||
$tmp->id = $array["id"];
|
||||
$tmp->team_name = $array["team_name"];
|
||||
$tmp->key_hash = $array["key_hash"];
|
||||
$tmp->auth_level = $array["auth_level"];
|
||||
$tmp->slogan = $array["slogan"];
|
||||
$tmp->members = $array["members"];
|
||||
$tmp->points = $array["points"];
|
||||
$tmp->revoked = $array["revoked"];
|
||||
|
||||
return $tmp;
|
||||
}
|
||||
|
||||
// Class methods
|
||||
function update()
|
||||
{
|
||||
|
|
@ -274,14 +290,20 @@ class Team
|
|||
|
||||
public static function get_top($nb=0)
|
||||
{
|
||||
$teams = Team::get_teams();
|
||||
$top = Cache::read("top");
|
||||
if (empty($top))
|
||||
{
|
||||
$top = Team::get_teams();
|
||||
|
||||
usort($teams, "cmp_team_pts");
|
||||
usort($top, "cmp_team_pts");
|
||||
|
||||
Cache::set("top", $top);
|
||||
}
|
||||
|
||||
if ($nb != 0)
|
||||
$teams = array_slice($teams, 0, $nb);
|
||||
$top = array_slice($top, 0, $nb);
|
||||
|
||||
return $teams;
|
||||
return $top;
|
||||
}
|
||||
|
||||
public static function get_nb_teams()
|
||||
|
|
@ -292,21 +314,4 @@ class Team
|
|||
|
||||
return $res['count_teams'];
|
||||
}
|
||||
|
||||
public static function first_to_solve_exercice($id_exercice)
|
||||
{
|
||||
$db = new BDD();
|
||||
$res = $db->unique_query("SELECT t3.team_name as result
|
||||
FROM solved AS t1
|
||||
INNER JOIN (
|
||||
SELECT MIN(s.time) AS minTime
|
||||
FROM solved AS s
|
||||
WHERE s.id_exercice = ".$id_exercice."
|
||||
) AS t2
|
||||
INNER JOIN teams AS t3 ON t1.id_team = t3.id
|
||||
WHERE t1.time = t2.minTime");
|
||||
$db->deconnexion();
|
||||
|
||||
return $res['result'];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,6 +29,16 @@ class Theme
|
|||
}
|
||||
}
|
||||
|
||||
static function __set_state(array $array)
|
||||
{
|
||||
$tmp = new Theme();
|
||||
|
||||
$tmp->id = $array["id"];
|
||||
$tmp->name = $array["name"];
|
||||
|
||||
return $tmp;
|
||||
}
|
||||
|
||||
function update()
|
||||
{
|
||||
$name = $this->name;
|
||||
|
|
@ -52,6 +62,8 @@ class Theme
|
|||
}
|
||||
$db->deconnexion();
|
||||
|
||||
Cache::del("ordered_th".$this->id);
|
||||
|
||||
return ($aff == 1);
|
||||
}
|
||||
|
||||
|
|
@ -93,6 +105,10 @@ class Theme
|
|||
|
||||
function get_exercices_ordered()
|
||||
{
|
||||
$res = Cache::read("ordered_th".$this->id);
|
||||
if (!empty($res))
|
||||
return $res;
|
||||
|
||||
$db = new BDD();
|
||||
$res = $db->query("SELECT E.id, E.require FROM exercices E
|
||||
INNER JOIN themes T ON T.id = E.id_theme
|
||||
|
|
@ -130,13 +146,14 @@ class Theme
|
|||
foreach($res as &$r)
|
||||
$r = new Exercice($r["id"]);
|
||||
|
||||
Cache::set("ordered_th".$this->id, $res);
|
||||
return $res;
|
||||
}
|
||||
|
||||
public static function get_themes()
|
||||
{
|
||||
$db = new BDD();
|
||||
$ids = $db->query("SELECT `id` FROM `themes`");
|
||||
$ids = $db->query("SELECT `id` FROM `themes` ORDER BY `name`");
|
||||
$db->deconnexion();
|
||||
|
||||
$array = array();
|
||||
|
|
|
|||
Reference in a new issue