forked from rebillar/site-accueil-insa
147 lines
5.1 KiB
PHP
147 lines
5.1 KiB
PHP
<?php
|
|
|
|
class Dao
|
|
{
|
|
|
|
private $conn;
|
|
|
|
public function __construct()
|
|
{
|
|
$username = 'root';
|
|
$password = "";
|
|
$dsn = 'mysql:dbname=accueil_insa;host=127.0.0.1';
|
|
try {
|
|
$this->conn = new PDO($dsn, $username, $password, [PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8']);
|
|
} catch (PDOException $e) {
|
|
echo $e;
|
|
}
|
|
}
|
|
|
|
private function read_password()
|
|
{
|
|
$real_path = __DIR__.DIRECTORY_SEPARATOR.".htpassdb";
|
|
$file = fopen($real_path, "r") or die("Unable to open DB password file!");;
|
|
$password = fgets($file);
|
|
fclose($file);
|
|
return trim($password);
|
|
}
|
|
|
|
public function get_score_team($team)
|
|
{
|
|
$sql = 'SELECT text, points FROM scores WHERE team = ?';
|
|
$cursor = $this->conn->prepare($sql);
|
|
$cursor->execute([$team]);
|
|
return $cursor->fetchAll(PDO::FETCH_ASSOC);
|
|
}
|
|
|
|
public function add_score($score_data) {
|
|
$sql = 'INSERT INTO scores (text, points, team) VALUES (?, ?, ?)';
|
|
$cursor = $this->conn->prepare($sql);
|
|
$cursor->execute([$score_data['text'], $score_data['points'], $score_data['team']]);
|
|
}
|
|
public function save_scores($scores_json, $team)
|
|
{
|
|
$sql = 'DELETE FROM scores WHERE team = ?';
|
|
$cursor = $this->conn->prepare($sql);
|
|
$cursor->execute([$team]);
|
|
|
|
foreach ($scores_json as $value) {
|
|
$sql = 'INSERT INTO scores (text, points, team) VALUES (?, ?, ?)';
|
|
$cursor = $this->conn->prepare($sql);
|
|
$cursor->execute([$value['text'], $value['points'], $team]);
|
|
}
|
|
}
|
|
|
|
public function get_map_info($selector)
|
|
{
|
|
$sql = 'SELECT title, description FROM map_insa WHERE selector = ?';
|
|
$cursor = $this->conn->prepare($sql);
|
|
$cursor->execute([$selector]);
|
|
return $cursor->fetchAll(PDO::FETCH_ASSOC);
|
|
}
|
|
|
|
public function get_map_selectors()
|
|
{
|
|
$sql = 'SELECT selector FROM map_insa';
|
|
$cursor = $this->conn->prepare($sql);
|
|
$cursor->execute();
|
|
return $cursor->fetchAll(PDO::FETCH_ASSOC);
|
|
}
|
|
|
|
public function save_map_info($selector, $info_json)
|
|
{
|
|
$sql = 'DELETE FROM map_insa WHERE selector = ?';
|
|
$cursor = $this->conn->prepare($sql);
|
|
$cursor->execute([$selector]);
|
|
$sql = 'INSERT INTO map_insa (title, description, selector) VALUES (?, ?, ?)';
|
|
$cursor = $this->conn->prepare($sql);
|
|
$cursor->execute([$info_json['title'], $info_json['description'], $selector]);
|
|
}
|
|
|
|
public function is_in_map($selector) {
|
|
$sql = 'SELECT selector FROM map_insa WHERE selector = ?';
|
|
$query = $this->conn->prepare($sql);
|
|
$query->execute([$selector]);
|
|
return $query->fetchAll(PDO::FETCH_ASSOC);
|
|
}
|
|
|
|
|
|
public function get_activities_of_day($day)
|
|
{
|
|
$sql = 'SELECT * FROM planning_insa WHERE day = ?';
|
|
$cursor = $this->conn->prepare($sql);
|
|
$cursor->execute([$day]);
|
|
return $cursor->fetchAll(PDO::FETCH_ASSOC);
|
|
}
|
|
|
|
public function save_day_activities($day, $info_json)
|
|
{
|
|
$sql = 'DELETE FROM planning_insa WHERE day = ?';
|
|
$cursor = $this->conn->prepare($sql);
|
|
$cursor->execute([$day]);
|
|
|
|
foreach ($info_json as $value) {
|
|
$sql = 'INSERT INTO planning_insa (day, small_title, full_title, description, color, start, length) VALUES (?, ?, ?, ?, ?, ?, ?)';
|
|
$cursor = $this->conn->prepare($sql);
|
|
$cursor->execute([$value['day'], $value['small_title'], $value['full_title'], $value['description'], $value['color'], $value['start'], $value['length']]);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Add a building in the database
|
|
* @param String $title = Name of the building displayed
|
|
* @param String $description = Description of the building
|
|
* @param String $selector = Identifier of the building (unique)
|
|
* @return Mixed = if error : false
|
|
* else : Array of the row added as an array indexed by column name
|
|
*/
|
|
public function create_building($title, $description, $selector) {
|
|
$sql = 'INSERT INTO map_insa (title, description, selector) VALUES(:title, :description, :selector)';
|
|
|
|
$query = $this->conn->prepare($sql);
|
|
$query->execute(array(
|
|
':title' => $title,
|
|
':description' => $description,
|
|
':selector' => $selector,
|
|
));
|
|
|
|
return $query->fetch(PDO::FETCH_ASSOC);
|
|
}
|
|
|
|
/**
|
|
* Remove a building in the database
|
|
* @param String $selector = Identifier of the building (unique)
|
|
* @return Mixed = if error : false
|
|
* else : Array with the selector used to remove from the database
|
|
*/
|
|
public function delete_building($selector) {
|
|
$sql = 'DELETE FROM map_insa WHERE selector=?';
|
|
|
|
$query = $this->conn->prepare($sql);
|
|
$query->execute([$selector]);
|
|
|
|
return $query->fetch(PDO::FETCH_ASSOC);
|
|
}
|
|
}
|
|
|
|
|