Comus Party 1.0.0
Application web de mini-jeux en ligne
Chargement...
Recherche...
Aucune correspondance
penalty.dao.php
Aller à la documentation de ce fichier.
1<?php
2
11
12namespace ComusParty\Models;
13
14
15use DateMalformedStringException;
16use DateTime;
17use PDO;
18
24{
29 private ?PDO $pdo;
30
35 public function __construct(?PDO $pdo)
36 {
37 $this->pdo = $pdo;
38 }
39
44 public function getPdo(): ?PDO
45 {
46 return $this->pdo;
47 }
48
53 public function setPdo(?PDO $pdo): void
54 {
55 $this->pdo = $pdo;
56 }
57
63 public function hydrateMany(array $datas): array
64 {
65 $penalties = [];
66 foreach ($datas as $data) {
67 $penalties[] = $this->hydrate($data);
68 }
69 return $penalties;
70 }
71
78 public function hydrate(array $data): Penalty
79 {
80 $penalty = new Penalty();
81 $penalty->setId($data['id']);
82 $penalty->setCreatedBy($data['created_by']);
83 $penalty->setCancelledBy($data['cancelled_by']);
84 $penalty->setPenalizedUuid($data['penalized_uuid']);
85 $penalty->setReason($data['reason']);
86 $penalty->setDuration($data['duration']);
87 $penalty->setCreatedAt(new DateTime($data['created_at']));
88 $penalty->setUpdatedAt(new DateTime($data['updated_at']));
89 return $penalty;
90 }
91
97 public function createPenalty(Penalty $penalty): bool
98 {
99 $stmt = $this->pdo->prepare("INSERT INTO " . DB_PREFIX . "penalty (created_by, penalized_uuid, reason, duration, type, created_at, updated_at) VALUES (:created_by, :penalized_uuid, :reason, :duration, :type, :created_at, :updated_at)");
100
101 $createdBy = $penalty->getCreatedBy();
102 $penalizedUuid = $penalty->getPenalizedUuid();
103 $reason = $penalty->getReason();
104 $duration = $penalty->getDuration();
105 $penaltyType = $this->transformPenaltyTypeToString($penalty->getType());
106 $createdAt = $penalty->getCreatedAt()->format('Y-m-d H:i:s');
107 $updatedAt = $penalty->getUpdatedAt()->format('Y-m-d H:i:s');
108
109 $stmt->bindParam(":created_by", $createdBy);
110 $stmt->bindParam(":penalized_uuid", $penalizedUuid);
111 $stmt->bindParam(":reason", $reason);
112 $stmt->bindParam(":duration", $duration);
113 $stmt->bindParam(":type", $penaltyType);
114 $stmt->bindParam(":created_at", $createdAt);
115 $stmt->bindParam(":updated_at", $updatedAt);
116
117 return $stmt->execute();
118 }
119
125 private function transformPenaltyTypeToString(?PenaltyType $penaltyType): ?string
126 {
127 return match ($penaltyType) {
128 PenaltyType::MUTED => 'muted',
129 PenaltyType::BANNED => 'banned',
130 default => null
131 };
132 }
133
140 public function findLastMutedByPlayerUuid(string $playerUuid): ?Penalty
141 {
142 $stmt = $this->pdo->prepare("SELECT * FROM " . DB_PREFIX . "penalty WHERE penalized_uuid = :penalized_uuid AND type = 'muted' ORDER BY created_at DESC LIMIT 1");
143 $stmt->bindParam(":penalized_uuid", $playerUuid);
144 $stmt->execute();
145 $data = $stmt->fetch();
146 if ($data === false) {
147 return null;
148 }
149 return $this->hydrate($data);
150 }
151
158 public function findLastPenaltyByPlayerUuid(string $playerUuid): ?Penalty
159 {
160 $stmt = $this->pdo->prepare("SELECT * FROM " . DB_PREFIX . "penalty WHERE penalized_uuid = :penalized_uuid ORDER BY created_at DESC LIMIT 1");
161 $stmt->bindParam(":penalized_uuid", $playerUuid);
162 $stmt->execute();
163 $data = $stmt->fetch();
164 if ($data === false) {
165 return null;
166 }
167 return $this->hydrate($data);
168 }
169}
findLastPenaltyByPlayerUuid(string $playerUuid)
Trouve la dernière sanction d'un joueur.
hydrate(array $data)
Hydrate un tableau de données en objet Penalty.
getPdo()
Retourne la connexion à la base de données.
transformPenaltyTypeToString(?PenaltyType $penaltyType)
Transforme un type de sanction en string.
createPenalty(Penalty $penalty)
Créer une sanction en base de données.
hydrateMany(array $datas)
Hydrate un tableau de données en objets Penalty.
setPdo(?PDO $pdo)
Modifie la connexion à la base de données.
__construct(?PDO $pdo)
Le constructeur de la classe PenaltyDAO.
findLastMutedByPlayerUuid(string $playerUuid)
Trouve la dernière sanction d'un joueur de type muted.
getCreatedAt()
Retourne la date de création de la sanction.
getCreatedBy()
Retourne l'identifiant du modérateur ayant créé la sanction.
getPenalizedUuid()
Retourne l'identifiant du joueur sanctionné
getUpdatedAt()
Retourne la date de mise à jour de la sanction.
getType()
Retourne le type de la sanction.
getDuration()
Retourne la durée de la sanction.
getReason()
Retourne la raison de la sanction.
PenaltyType
Enumération des types de sanctions.
@ MUTED
Le joueur est banni de la plateforme.
const DB_PREFIX
Préfixe des tables de la base de données.
Definition db.php:52