get_pts() == $i2->get_pts()){ return 0; } else{ return ($i1->get_pts() < $i2->get_pts()) ? 1 : -1; } } class Team { var $id = null; var $key_hash; var $auth_level; var $company; var $members = null; var $points = null; // Constructor function Team ($id=null) { if (!empty($id)) { $db = new BDD(); $res = $db->unique_query("SELECT id, key_hash, company, auth_level FROM teams WHERE id=" . intval($id)) or die($db->erreur()); if (!empty($res)) { $this->id = $res['id']; $this->key_hash = $res['key_hash']; $this->company = $res['company']; $this->auth_level = $res['auth_level']; } $db->deconnexion(); } } // Class methods function update() { $key_hash = $this->key_hash; $auth_level = intval($this->auth_level); $company = $this->company; $db = new BDD(); $db->escape($key_hash); $db->escape($company); if (empty($this->id)) { $db->query("INSERT INTO teams VALUES (NULL, '".$key_hash."', ".$auth_level.", '".$company."')"); $this->id = $db->insert_id(); $aff = ($this->id > 0); } else { $db->query("UPDATE users SET auth_level = ".$auth_level.", key_hash = '".$key_hash."', company = '".$company."' WHERE id = ".intval($this->id)); $aff = $db->affected(); } $db->deconnexion(); return ($aff == 1); } function get_id() { return $this->id; } function get_company() { return $this->company; } function get_auth_level() { return $this->auth_level; } function get_members() { if(!isset($this->members)) { $db = new BDD(); $res = $db->query("SELECT id, firstname, lastname, nickname FROM team_members WHERE id_team = " . intval($this->id)); $db->deconnexion(); if (!empty($res)) $this->members = $res; } return $this->members; } function get_pts() { if(!isset($this->points)) { $db = new BDD(); $res = $db->unique_query("SELECT e.id, s.id_user, SUM(e.points) as sum_points FROM exercices e LEFT OUTER JOIN solved s ON e.id = s.id_exercice WHERE s.id_user = " . $this->id . " GROUP BY s.id_user"); $db->deconnexion(); if (!empty($res)) { $this->points = $res['sum_points']; } } return $this->points; } function get_groupIds() { $db = new BDD(); $res = $db->query("SELECT `id` FROM `users`"); $db->deconnexion(); return $res['id']; } function authenticate($certificate) { //TODO } // Static methods public static function get_teams() { $db = new BDD(); $ids = $db->query("SELECT `id` FROM `teams`"); $db->deconnexion(); $array = array(); foreach ($ids as $id){ $array[] = new Team($id['id']); } return $array; } // TODO: Not tested, need feeding BDD public static function get_top() { $teams = Team::get_teams(); usort($teams, "cmp_team_pts"); return $teams; } }