unique_query("SELECT `id`, `id_theme`, `require`, `level`, `points`, `statement` FROM exercices WHERE id=" . intval($id)); if (!empty($res)) { $this->id = intval($res['id']); $this->theme = new Theme($res['id_theme']); $this->require = $res['require']; $this->level = $res['level']; $this->points = $res['points']; $this->statement = $res['statement']; $this->files = $db->query("SELECT `id`, `path`, `name` FROM exercice_files WHERE id_exercice = $id"); $this->keys = $db->query("SELECT `id`, `format`, `value` FROM exercice_keys WHERE id_exercice = $id"); } $db->deconnexion(); } } function update($create) { $id = $this->id; $theme = intval($this->theme->get_id()); $require = $this->require; $level = intval($this->level); $points = intval($this->points); $statement = $this->statement; $files = $this->files; $keys = $this->keys; $db = new BDD(); $db->escape($id); $db->escape($theme); $db->escape($require); $db->escape($statement); if ($create) { $db->query("INSERT INTO exercices VALUES ('".$id."', '".$theme."', '".$require."', '".$level."', '".$points."','".$statement."');"); } else { $db->query("UPDATE exercices SET `theme` = '".$theme."', `require` = '".$require."', `level` = '".$level."', `point` = '".$point."', `statement` = '".$statement."' WHERE id = ".$id); $aff = $db->affected(); } foreach ($this->keys as $k => $key) { $format = $key['format']; $value = $key['value']; if (isset($key['id'])) $kid = $key['id']; else $kid = NULL; $db->escape($format); $db->escape($value); $db->escape($kid); if (empty($kid)) { $db->query("INSERT INTO exercice_keys VALUES (NULL, '".$this->id."', '".$format."', UNHEX('".strhex($value)."'))"); $this->keys[$k]['id'] = $db->insert_id(); } else { $db->query("UPDATE exercice_keys SET `format` = '".$format."', `value` = UNHEX('".strhex($value).")') WHERE id = ".$kid); } } foreach ($this->files as $k => $file) { $path = $file['path']; $name = $file['name']; if (isset($file['id'])) $fid = intval($file['id']); $db->escape($path); $db->escape($name); if (!isset($file['id'])) { $db->query("INSERT INTO exercice_files VALUES (NULL, '".$id."', '".$path."', '".$name."');"); $this->files[$k]['id'] = $db->insert_id(); } else { $db->query("UPDATE exercice_files SET `path` = '".$path."', `name` = '".$name."' WHERE id = ".$fid); } } $db->deconnexion(); //FIXME return 1; } function create() { update(true); } function add_key($format, $value) { $key = ["format" => $format, "value" => $value]; if (isset($key)) $this->keys[] = $key; } function add_file($path, $name) { $file = ["path" => $path, "name" => $name]; if (isset($file)) $this->files[] = $file; } }