SQLize Online / PHPize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
<?php // Подключаем класс для работы с БД require_once("Db.php"); /** * Class User * @property int $id * @property int $telegram_id * @property string $first_name * @property string $last_name * @property string $username * @property string $lang * @property User|bool $identity */ class User extends Db { private $id; private $telegram_id; private $first_name; private $last_name; private $username; private $lang; private $identity; /** * User constructor. * @param $userData array */ public function __construct($userData) { // проверяем наличие пользователя в базе $this->identity = $this->getUserByTelegramId($userData['telegram_id']); if ($this->identity) { // если есть то отправляем на обновление данных $this->updateUserData($userData); } else { // если не нашли то отправляем на регистрацию $this->identity = $this->insertUserData($userData); } } /** Добавляем пользователя * @param $userData array * @return bool */ public function insertUserData($userData) { // готовим запрос $insert = $this->connect() ->prepare("INSERT INTO users SET " . $this->pdoSet(array_keys($userData), $values, $userData)); return $insert->execute($values) ? $this->getUserByTelegramId($userData['telegram_id']) : false; } /** Обновляем данные пользователя * @param $userData array * @return bool */ public function updateUserData($userData) { return $this->setParam($userData); } /** Проверяем наличие данных пользователя * @param $telegram_id int * @return bool|self */ public function getUserByTelegramId($telegram_id) { $order = $this->connect() ->prepare("SELECT * FROM users WHERE telegram_id = :telegram_id LIMIT 1"); $order->execute([ 'telegram_id' => (int)$telegram_id ]); // если пользователь найден то возвращаем объект return $order->rowCount() > 0 ? $order->fetch(PDO::FETCH_OBJ) : false; } /** Получаем id * @return int */ public function getId() { return $this->identity->id; } /** Получаем настройку lang * @return string */ public function getLang() { return $this->identity->lang; } /** Меняем настройку lang * @param $lang * @return bool */ public function setLang($lang) { $this->identity->lang = $lang; return $this->setParam([ 'lang' => $lang, 'telegram_id' => $this->identity->telegram_id, ]); } /** Получаем first_name * @return string */ public function getFirstName() { return $this->identity->first_name; } /** Получаем last_name * @return string */ public function getLastName() { return $this->identity->last_name; } /** Получаем username * @return string */ public function getUserName() { return $this->identity->username; } /** Получаем полное имя пользователя * @return string */ public function getFullName() { return trim($this->getFirstName() . " " . $this->getLastName()); } /** Обновляем данные пользователя * @param array $userData * @param bool $type * @return bool */ private function setParam($userData = [], $type = true) { if (count($userData) > 0) { $update = $this->connect() ->prepare("UPDATE users SET " . $this->pdoSet(array_keys($userData), $values, $userData, $type) . " WHERE telegram_id = :telegram_id"); return $update->execute($values); } else { return false; } } } ?>
Stuck with a problem? Got Error? Ask ChatGPT!
Copy Clear