MVC_Recettes/Models/UserModel.php
2023-01-23 14:17:47 +01:00

117 lines
3.5 KiB
PHP

<?php
final class UserModel extends UserSessionModel
{
public function createUser($S_email, $S_username, $S_password_hash){
$O_model = Model::get();
$stmt = $O_model->prepare("INSERT INTO USER (EMAIL, USERNAME, PASS_HASH) VALUES(:email, :username, :password_hash)");
$stmt->bindParam("email", $S_email);
$stmt->bindParam("username", $S_username);
$stmt->bindParam("password_hash", $S_password_hash);
$stmt->execute();
}
public function isEmailInDatabase($S_email){
$O_model = Model::get();
$stmt = $O_model->prepare("SELECT count(*) FROM USER WHERE EMAIL=:email");
$stmt->bindParam("email", $S_email);
$stmt->execute();
$count = $stmt->fetch()[0];
return $count != 0;
}
public function getUserByID($I_id){
$O_model = Model::get();
$stmt = $O_model->prepare("SELECT * FROM USER WHERE ID=:id");
$stmt->bindParam("id", $I_id);
$stmt->execute();
$row = $stmt->fetch();
if ($row === false) return null;
return $row;
}
public function getUserByEmail($S_email){
$O_model = Model::get();
$stmt = $O_model->prepare("SELECT * FROM USER WHERE email=:email");
$stmt->bindParam("email", $S_email);
$stmt->execute();
$row = $stmt->fetch();
if ($row === false) return null;
return $row;
}
public function getUsernameByID($I_id)
{
$O_model = Model::get();
$stmt = $O_model->prepare("SELECT USERNAME FROM USER WHERE ID=:id");
$stmt->bindParam("id", $I_id);
$stmt->execute();
$row = $stmt->fetch();
if ($row === false) return null;
return $row["USERNAME"];
}
public function updateEmailByID($I_id, $S_newEmail){
$O_model = Model::get();
$stmt = $O_model->prepare("UPDATE USER SET EMAIL=:new_email WHERE ID=:id");
$stmt->bindParam("id", $I_id);
$stmt->bindParam("new_email", $S_newEmail);
$stmt->execute();
}
public function updateUsernameByID($I_id, $S_newUsername){
$O_model = Model::get();
$stmt = $O_model->prepare("UPDATE USER SET USERNAME=:new_username WHERE ID=:id");
$stmt->bindParam("id", $I_id);
$stmt->bindParam("new_username", $S_newUsername);
$stmt->execute();
}
public function anonymiseByID($I_id){
$O_model = Model::get();
$stmt = $O_model->prepare("UPDATE RECIPE SET AUTHOR_ID = NULL WHERE AUTHOR_ID = :id");
$stmt->bindParam("id", $I_id);
$stmt->execute();
$stmt = $O_model->prepare("UPDATE APPRECIATION SET AUTHOR_ID = NULL WHERE AUTHOR_ID = :id");
$stmt->bindParam("id", $I_id);
$stmt->execute();
}
public function deleteByID($I_id){
self::anonymiseByID($I_id);
$O_model = Model::get();
$stmt = $O_model->prepare("DELETE FROM USER WHERE ID=:id");
$stmt->bindParam("id", $I_id);
$stmt->execute();
}
public function searchUsers($S_query)
{
$O_model = Model::get();
$stmt = $O_model->prepare("
SELECT ID, EMAIL, USERNAME
FROM USER
WHERE USER.USERNAME LIKE :full_query
OR USER.EMAIL LIKE :full_query
LIMIT 10
");
$S_full_query = "%".$S_query."%";
$stmt->bindParam("full_query", $S_full_query);
$stmt->execute();
$rows = $stmt->fetchAll();
return $rows;
}
}