Comus Party 1.0.0
Application web de mini-jeux en ligne
Chargement...
Recherche...
Aucune correspondance
suggestion.dao.php
Aller à la documentation de ce fichier.
1<?php
9
10namespace ComusParty\Models;
11
12use DateMalformedStringException;
13use DateTime;
14use PDO;
15
21{
26 private ?PDO $pdo;
27
32 public function __construct(?PDO $pdo)
33 {
34 $this->pdo = $pdo;
35 }
36
41 public function getPdo(): ?PDO
42 {
43 return $this->pdo;
44 }
45
50 public function setPdo(?PDO $pdo): void
51 {
52 $this->pdo = $pdo;
53 }
54
60 public function create(Suggestion $suggestion): bool
61 {
62 $stmt = $this->pdo->prepare('INSERT INTO ' . DB_PREFIX . 'suggestion (object, content, author_uuid) VALUES (:object, :content, :author_uuid)');
63 $object = match ($suggestion->getObject()) {
64 SuggestObject::BUG => 'bug',
65 SuggestObject::GAME => 'jeu',
66 SuggestObject::UI => 'ui',
67 SuggestObject::OTHER => 'other',
68 };
69 $content = $suggestion->getContent();
70 $authorUuid = $suggestion->getAuthorUuid();
71 $stmt->bindParam(':object', $object);
72 $stmt->bindParam(':content', $content);
73 $stmt->bindParam(':author_uuid', $authorUuid);
74 return $stmt->execute();
75 }
76
81 public function findAllWaiting(): ?array
82 {
83 $stmt = $this->pdo->prepare(
84 'SELECT s.*, p.username
85 FROM ' . DB_PREFIX . 'suggestion s
86 JOIN ' . DB_PREFIX . 'player p ON s.author_uuid = p.uuid
87 WHERE s.treated_by IS NULL'
88 );
89 $stmt->execute();
90 $stmt->setFetchMode(PDO::FETCH_ASSOC);
91 $suggestsTab = $stmt->fetchAll();
92 if (!$suggestsTab) {
93 return null;
94 }
95 return $this->hydrateMany($suggestsTab);
96 }
97
104 private function hydrateMany(array $suggestsTab): array
105 {
106 $suggests = [];
107 if ($suggestsTab) {
108 foreach ($suggestsTab as $suggestTab) {
109 $suggests[] = $this->hydrate($suggestTab);
110 }
111 }
112 return $suggests;
113 }
114
121 public function hydrate(array $data): Suggestion
122 {
123 $suggestion = new Suggestion();
124 $suggestion->setId($data['id']);
125 $suggestion->setObject(
126 match ($data['object']) {
127 'bug' => SuggestObject::BUG,
128 'jeu' => SuggestObject::GAME,
129 'ui' => SuggestObject::UI,
130 'other' => SuggestObject::OTHER,
131 }
132 );
133 $suggestion->setContent($data['content']);
134 $suggestion->setAuthorUuid($data['author_uuid']);
135 $suggestion->setCreatedAt(new DateTime($data['created_at']));
136 $suggestion->setAuthorUsername($data['username']);
137 return $suggestion;
138 }
139
148 public function deny(?int $id): bool
149 {
150 $stmt = $this->pdo->prepare('UPDATE ' . DB_PREFIX . 'suggestion SET treated_by = :treated_by WHERE id = :id');
151 $stmt->bindParam(':treated_by', $_SESSION['uuid']);
152 $stmt->bindParam(':id', $id);
153
154 return $stmt->execute();
155 }
156
166 public function accept(?int $id): bool
167 {
168 $stmt = $this->pdo->prepare('UPDATE ' . DB_PREFIX . 'suggestion SET treated_by = :treated_by, accepted = 1 WHERE id = :id');
169 $stmt->bindParam(':treated_by', $_SESSION['uuid']);
170 $stmt->bindParam(':id', $id);
171
172 return $stmt->execute();
173 }
174
181 public function findById(?int $id)
182 {
183 $stmt = $this->pdo->prepare(
184 'SELECT s.*, p.username
185 FROM ' . DB_PREFIX . 'suggestion s
186 JOIN ' . DB_PREFIX . 'player p ON s.author_uuid = p.uuid
187 WHERE s.id = :id'
188 );
189 $stmt->bindParam(':id', $id);
190 $stmt->execute();
191 $stmt->setFetchMode(PDO::FETCH_ASSOC);
192 $suggestTab = $stmt->fetch();
193 if (!$suggestTab) {
194 return null;
195 }
196 return $this->hydrate($suggestTab);
197 }
198}
hydrate(array $data)
Hydrate un tableau de données en une suggestion.
hydrateMany(array $suggestsTab)
Hydrate un tableau de données en plusieurs suggestions.
create(Suggestion $suggestion)
Insert une suggestion en base de données et retourne le résultat de l'exécution.
getPdo()
Retourne la connexion à la base de données.
accept(?int $id)
Accepte une suggestio en modifiant ses attributs en base de données et retourne le résultat de l'exéc...
findById(?int $id)
Récupère une suggestion en base de données par son identifiant.
setPdo(?PDO $pdo)
Modifie la connexion à la base de données.
findAllWaiting()
Récupère toutes les suggestions en base de données qui ne sont pas traitées.
__construct(?PDO $pdo)
Le constructeur de la classe SuggestionDAO.
deny(?int $id)
Refuse une suggestio en modifiant un attribut en base de données et retourne le résultat de l'exécuti...
getContent()
Permet de récupérer le contenu de la suggestion.
getObject()
Permet de récupérer l'objet de la suggestion.
getAuthorUuid()
Permet de récupérer l'UUID de l'auteur de la suggestion.
@ OTHER
Langage / propos incorrect.
const DB_PREFIX
Préfixe des tables de la base de données.
Definition db.php:52