X-Git-Url: https://jfr.im/git/irc/unrealircd/unrealircd-webpanel.git/blobdiff_plain/54b5ea90227e593617aec5e3ff34a4c5aa78cb38..33f512fa30c06fa488c42e68f9bc9f401300a5ab:/plugins/sql_auth/SQL/user.php diff --git a/plugins/sql_auth/SQL/user.php b/plugins/sql_auth/SQL/user.php index 511385f..a05abb7 100644 --- a/plugins/sql_auth/SQL/user.php +++ b/plugins/sql_auth/SQL/user.php @@ -80,34 +80,49 @@ class SQLA_User ]; $conn = sqlnew(); - $query = "INSERT INTO " . SQL_PREFIX . "user_meta (user_id, meta_key, meta_value) VALUES (:id, :key, :value)"; + + /* check if it exists first, update it if it does */ + $query = "SELECT * FROM " . SQL_PREFIX . "user_meta WHERE user_id = :id AND meta_key = :key"; $stmt = $conn->prepare($query); - $stmt->execute($meta); - if ($stmt->rowCount()) - return true; - return false; + $stmt->execute(["id" => $this->id, "key" => $key]); + if ($stmt->rowCount()) // it exists, update instead of insert + { + $query = "UPDATE " . SQL_PREFIX . "user_meta SET meta_value = :value WHERE user_id = :id AND meta_key = :key"; + $stmt = $conn->prepare($query); + $stmt->execute($meta); + if ($stmt->rowCount()) + return true; + return false; + } + else + { + $query = "INSERT INTO " . SQL_PREFIX . "user_meta (user_id, meta_key, meta_value) VALUES (:id, :key, :value)"; + $stmt = $conn->prepare($query); + $stmt->execute($meta); + if ($stmt->rowCount()) + return true; + return false; + } } /** - * Delete user meta data + * Delete user meta data by key * @param string $key - * @param string $value * @return bool */ - function delete_meta(string $key, string $value) + function delete_meta(string $key) { - if (!$key || !$value) + if (!$key ) return false; $meta = [ "id" => $this->id, "key" => $key, - "value" => $value ]; $conn = sqlnew(); - $query = "INSERT INTO " . SQL_PREFIX . "user_meta (user_id, meta_key, meta_value) VALUES (:id, :key, :value)"; + $query = "DELETE FROM " . SQL_PREFIX . "user_meta WHERE user_id = :id AND meta_key = :key"; $stmt = $conn->prepare($query); $stmt->execute($meta); if ($stmt->rowCount())