Îðëà
Îáëàñòè
Êîìïàíèé
Ïîëüçîâàòåëè
Ãàëåðåÿ
Ôèêñèðîâàííûå íîâîñòè
Îðëà
Îòçûâû î ôèðìàõ
Òàðèôû
Ïîëüçîâàòåëè
Îáëàñòè
Áàíêîìàòû
Òîðãîâûå òî÷êè
Äîñêà îáúÿâëåíèé
Êóðñû âàëþò
Ñêèäêè
îðãàíèçàöèè Îðëà
îðãàíèçàöèè îáëàñòè
òîâàðû
ñàéòû
ñàéòû Îðåë
Äàííûå
Ðàçäåëû
Ïîèñê
Ïîèñê çàïðîñû
Ñòàòèñòèêà
Ïîêàçû êàòàëîãà îðãàíèçàöèé
Ñòàòèñòèêà êëèåíòû
Ïîëüçîâàòåëè
Ñàéòû
Óïðàâëåíèå ñàéòîì
Àíêåòà
Àïòåêè
Àôèøà
Àôèøà íîâàÿ
Áàííåðû
Áèçíåñ >
Âèêòîðèíà
Ãîëîñîâàíèå
Ãîñòü íà ñàéòå
Èñòîðèè
Êàëåíäàðü ñîáûòèé
Êàòàëîãè >
Êîíêóðñ êðàñîòû
Êîíêóðñ àóäèî
Êîíñóëüòàöèè
Ìåíþ
Íîâîå íà ñàéòå
Íîâîñòè >
Îðãàíèçàöèè >
Ïðîãðàììà ÒÂ
Ïóáëèêàöèè
Ðàçäåëû ñàéòà
Ðàññûëêà
Ðåñòîðàíû
Ñåêðåò ôèðìû >
Ñåðâèñû >
Ññûëêè
Òåñòû
Ôàéëîâûé ìåíåäæåð
Ôîðóì
Ôîòîãàëåðåÿ
Îáðàòíàÿ ñâÿçü
Íåäâèæèìîñòü
Íîâûé ãîä
Òåêñòû
Ïîëüçîâàòåëè
Þðèäè÷åñêèé ðåéòèíã
Îòçûâû íà òîâàðû
Áàí ïîëüçîâàòåëåé
Æàëîáû
Íîâûå òåñòû
Êîðîíàâèðóñ
Ôàéëîâûé ìåíåäæåð
Èìÿ ôàéëà
User.php
Ñîäåðæèìîå
<?php namespace app\users; use app\core\external\vk\Auth; use app\core\models\ActiveRecord; use app\core\models\Expression; use app\core\models\Mail; class User extends ActiveRecord { /** * @var \app\users\entity\User|null */ private $_userEntity; public function __construct() { } public static function tableName() { return 'user'; } public static function primaryKey() { return 'id'; } public function login($userId) { $user = static::findOne($userId); if ($user == null) { return false; } $user->data_last = new Expression('NOW()'); $user->ip_last = \App::$request->getIp(); $user->ip2_last = \App::$request->getIpFromProxy(); $user->save(); \App::$session->set('user_id', (int)$userId); // у�танавливаем, куку, по которой мы определим, авторизован ли пользователь. \App::$cookies->set('user_auth_key', $this->getCookieHashByUserId($user->id), 365, "/", "." . str_replace('www.', '', $_SERVER['HTTP_HOST'])); \App::$cookies->set('sidp', md5($user->name.md5($user->password)."jflksadjjdseswaa"), 365, "/", "." . str_replace('www.', '', $_SERVER['HTTP_HOST'])); return true; } public function logOut() { setcookie('user_auth_key', '', time()-1000, '/', "." . str_replace('www.', '', $_SERVER['HTTP_HOST'])); setcookie('sidp', '', time()-1000, '/', "." . str_replace('www.', '', $_SERVER['HTTP_HOST'])); // old way, дл� тех, кто вошел � главного домена setcookie('user_auth_key', '', time()-1000); setcookie('sidp', '', time()-1000); if (isset($_SESSION['user_id'])) { unset($_SESSION['user_id']); } return true; } /** * Функци� провер�ет, аутентифицирован ли пользователь или нет. * Пример и�пользовани�: * ```php * App::$user->isGuest(); * ``` * @return bool true е�ли пользователь не аутентифицирован */ public function isGuest() { if (\App::$session->get('user_id', 0) === 0) { return true; } return false; } /** * Функци� провер�ет, аутентифицирован ли пользователь или нет. * @return bool true, е�ли пользователь аутентифицирован и false в противном �лучае */ public function isLogged() { return $this->isGuest() === false; } /** * Функци� возвращает ID авторизованного пользовател�. * Или ID го�т� пользовател�. * @return null */ public function getId() { if ($this->isGuest()) { return \App::$config['notAuthUserId']; } return \App::$session->get('user_id'); } public function getRealUserId() { if ($this->isGuest()) { return 0; } return \App::$session->get('user_id'); } /** * Функци� возвращает ID пользовател� по его логину * @param $userLogin * @return int|null */ public function getIdByLogin($userLogin) { return \App::$command ->createCommand(' SELECT id, name FROM `user` WHERE name = :login ') ->bindValue(':login', $userLogin) ->queryOne('id', null); } public function getIdByEmail($userEmail) { return \App::$command ->createCommand(' SELECT id, mail FROM user WHERE mail = :mail ') ->bindValue(':mail', $userEmail) ->queryOne('id', null); } /** * Функци� провер�ет, �уще�твует ли пользователь � таким Login или нет. * @param $userLogin * @return bool */ public function isExistUserByLogin($userLogin) { return \App::$command ->createCommand(' SELECT COUNT(id) as total FROM `user` WHERE name = :login ') ->bindValue(':login', $userLogin) ->queryOne('total', 0) > 0; } /** * @param $userEmail * @return bool */ public function isExistUserByEmail($userEmail) { return \App::$command ->createCommand(' SELECT COUNT(id) as total FROM `user` WHERE mail = :email ') ->bindValue(':email', $userEmail) ->queryOne('total', true); } public function getSid() { if (isset($_COOKIE['sid'])) { $sid = $_COOKIE['sid']; return str_replace(' ', '', $sid); } else { $sid = md5( time() . \App::$request->getIp() . \App::$request->getIp() . \App::$request->getUserAgent() ); try { if (setcookie("sid", $sid, 0x7FFFFFFF, '/')) { return $sid; } return null; } catch (\Exception $e) { return null; } } } /** * Функци� возвращает �пи�ок пользователей, по их идентификаторам * @param array $userIds * * Какие пол� выбрать. Е�ли передан пу�той ма��ив, то выбирают�� в�е колонки * @param array $columns = [] * @return array * [ * 'user_id' => [ * ... user data ... * ] * ] */ public function getUsersByIds(array $userIds, array $columns = []) { $select = '*'; if (count($columns) > 0) { $select = implode(',', $columns); } $command = \App::$command->createCommand(' SELECT ' . $select . ' FROM `user` WHERE id IN (' . implode(',', $userIds) . ') '); $users = $command->queryAll(); $tranformUsers = []; foreach ($users as $user) { $tranformUsers[$user['id']] = $user; } return $tranformUsers; } public function getUserName($userId = null) { if ($userId == null) { if ($this->isGuest() == true) { return null; } $userId = \App::$user->getId(); } $user = \App::$command ->createCommand(' SELECT id, name, name_full FROM `user` WHERE id = :id ') ->bindValue(':id', $userId) ->queryOne(); if (isset($user['id'])) { if ($user['name_full'] != '') { return htmlspecialchars($user['name_full']); } else { return $user['name']; } } return null; } public function isDisabledNotifications() { if ($this->isGuest()) { return false; } return \App::$command ->createCommand(' SELECT id, disable_notifications FROM `user` WHERE id = :id ') ->bindValue(':id', $this->getId()) ->queryOne('disable_notifications', 0); } public function getUserLogin($userId = null) { if ($userId == null) { if ($this->isGuest() == true) { return null; } $userId = $this->getId(); } return \App::$command ->createCommand(' SELECT id, name FROM `user` WHERE id = :id ') ->bindValue(':id', $userId) ->queryOne('name', null); } /** * Функци� провер�ет, добавлен ли пользователь в друзь� или нет * В том чи�ле фунци� возвращает true, е�ли вы отправили запро� на дружбу * @param $friendId * @return boolean */ public function isFriend($friendId) { //\App::debug($friendId); //\App::debug($this->getId()); $status = \App::$command ->createCommand(' select status from friends where (id_user=:friend_id and id_friend=:user_id) or (id_user=:user_id and id_friend=:friend_id) ') ->bindValue(':friend_id', $friendId) ->bindValue(':user_id', $this->getId()) ->queryOne('status', null); if ($status === null) { return false; } if ($status == 3) { return true; } return false; } public function getUserIdByLogin($userLogin) { return \App::$command ->createCommand(' SELECT id, name FROM `user` WHERE name = :login ') ->bindValue(':login', $userLogin) ->queryOne('id', null); } public function getFriends($userId = null) { if ($userId == null) { $userId = $this->getId(); } return \App::$command ->createCommand(' SELECT t1.status, t2.id, t2.name, t2.avatar FROM friends t1, user t2 WHERE t1.id_friend=t2.id and id_user=:user_id and status=3 ORDER BY date_time DESC ') ->bindValue(':user_id', $userId) ->queryAll(); } /** * Функци� возвращает �пи�ок людей, которые хот�т дружить � вами * @param $userId * @return array */ public function getFriendsRequest($userId = null) { if ($this->isGuest() == true) { return []; } if ($userId == null) { $userId = $this->getId(); } return \App::$command ->createCommand(' SELECT t1.status, t2.id, t2.name, t2.avatar FROM friends t1, user t2 where t1.id_friend=t2.id and id_user=:user_id and status=1 and sender!=\'1\' order by date_time desc ') ->bindValue(':user_id', $userId) ->queryAll(); } /** * Функци� возвращает общее количе�тво * @param null|int $userId * @return int */ public function getTotalFriendsRequest($ifEmptyValue = 0, $userId = null) { if ($userId == null) { $userId = $this->getId(); } $total = \App::$command ->createCommand(' SELECT COUNT(id_user) as total FROM friends WHERE id_user = :user_id and status=1 and sender != 1 ') ->bindValue(':user_id', $userId) ->queryOne('total', $ifEmptyValue); if ($total == 0) { return $ifEmptyValue; } return $total; } /** * Функци� возвращает �пи�ок людей, которым вы отправили за�вки на дружбу * @param null $userId */ public function getOutgoingFriends($userId = null) { if ($userId == null) { $userId = $this->getId(); } return \App::$command ->createCommand(' select t1.status, t2.id, t2.name, t2.avatar from friends t1, user t2 where t1.id_friend=t2.id and id_user=:user_id and status=1 and sender=\'1\' order by date_time desc ') ->bindValue(':user_id', $userId) ->queryAll(); } /** * Функци� подтверждает за�вку в друзь�. * @param $friendId * @return bool */ public function acceptFriend($friendId) { if ($this->isGuest() == true) { return false; } if ($this->isExist($friendId) == false) { return false; } $result = \App::$command ->createCommand(" update friends set status='3' where id_friend=:user_id and id_user=:friend_id") ->bindValue(':user_id', $this->getId()) ->bindValue(':friend_id', $friendId) ->query(); $result2 = \App::$command ->createCommand(" update friends set status='3' where id_user=:user_id and id_friend=:friend_id ") ->bindValue(':user_id', $this->getId()) ->bindValue(':friend_id', $friendId) ->query(); if ($result == false || $result2 == false) { return false; } return true; } /** * Функци� провер�ет до�туп к профилю (уровень до�тупа). * @param $userId * @return int */ public function getUserProfileAccessLevel($userId) { return \App::$command ->createCommand(' select profile from user_setting where id_user=:user_id ') ->bindValue(':user_id', $userId) ->queryOne('profile', 1); } public function getUserFriendsAccessLevel($userId) { return \App::$command ->createCommand(' select friends from user_setting where id_user=:user_id ') ->bindValue(':user_id', $userId) ->queryOne('friends', 1); } /** * Функци� добавл�ет пользовател� в друзь�. * @param $userId * @return bool */ public function addToFriend($userId) { if ($this->isGuest() == true) { return false; } if ($this->isExist($userId) == false) { return false; } $user = \App::$command ->createCommand(" select id, name from user where id=:friend_id ") ->bindValue(':friend_id', $userId) ->queryOne(); $exist = \App::$command ->createCommand(" select count(*) as total from friends where id_friend=:user_id and id_user=:friend_id ") ->bindValue(':user_id', $this->getId()) ->bindValue(':friend_id', $user['id']) ->queryOne(); if ( $user['id'] > 0 ) { if ( $exist['total'] == 0 ) { \App::$command ->createCommand(' insert into friends values (:user_id, :friend_id, 1, NOW(), 2); ') ->bindValue(':user_id', $this->getId()) ->bindValue(':friend_id', $userId) ->query(); //---------------- \App::$command ->createCommand(' insert into friends values (:friend_id, :user_id, 1, NOW(), 0) ') ->bindValue(':friend_id', $userId) ->bindValue(':user_id', $this->getId()) ->query(); } else { \App::$command ->createCommand(" update friends set status='3' where id_friend=:user_id and id_user=:friend_id") ->bindValue(':user_id', $this->getId()) ->bindValue(':friend_id', $userId); \App::$command ->createCommand(" update friends set status='3' where id_user=:user_id and id_friend=:friend_id ") ->bindValue(':user_id', $this->getId()) ->bindValue(':friend_id', $userId); } } return true; } /** * Функци� удал�ет пользовател� из друзей. * @param $friendId * @return boolean; */ public function deleteFromFriend($friendId) { if ($this->isGuest() == true) { return false; } if ($this->isExist($friendId) == false) { return false; } return \App::$command ->createCommand(" delete from friends where (id_user= :user_id and id_friend=:friend_id) or (id_friend=:user_id and id_user=:friend_id) ") ->bindValue(':user_id', $this->getId()) ->bindValue(':friend_id', $friendId) ->query(); } public function getForumRank($userId = null) { if ($userId == null) { $userId = $this->getId(); } return \App::$command ->createCommand(' SELECT forum_ranks.name FROM user LEFT JOIN forum_ranks ON forum_ranks.id = user.id_ranks WHERE user.id = :user_id ') ->bindValue(':user_id', $userId) ->queryOne('name', null); } /** * Функци� возвращает в�ю информацию о пользователе $userId * @param int|null $userId - е�ли передан ID пользовател�, то данные будут возвращены по �тому пользователю. * е�ли �тоит null, то берем текущего авторизованного пользовател� * * @return null|array - array, данные пользовател�, е�ли он был найден или null, е�ли пользователь не был найден */ public function getUser($userId = null) { if ($userId == null) { if ($this->isGuest() == true) { return null; } $userId = \App::$user->getId(); } return \App::$command ->createCommand(' SELECT * FROM `user` WHERE id = :user_id ') ->bindValue(':user_id', $userId) ->queryOne(); } public function getEntity() { if ($this->_userEntity instanceof \app\users\entity\User) { return $this->_userEntity; } $userRawData = $this->getUser($this->getRealUserId()); if (empty($userRawData)) { return null; } $this->_userEntity = \app\users\entity\User::instance($userRawData); return $this->_userEntity; } public function getSexClass($sex, $array = ['it', 'men', 'women']) { if (isset($array[$sex])) { return $array[$sex]; } return 'it'; } public function getSexString($sex, $array = ['о�тавило', 'о�тавил', 'о�тавила']) { if (isset($array[$sex])) { return $array[$sex]; } return 'о�тавило'; } /** * Функци� провер�ет, �уще�твует ли такой пользователь или нет. * @param $userId * @return bool */ public function isExist($userId) { return \App::$command ->createCommand(' SELECT COUNT(id) as total FROM `user` WHERE id = :user_id ') ->bindValue(':user_id', $userId) ->queryOne('total', $userId); } public function newUser($login, $password, $email, $avatar = '') { $user = new User(); $user->name = htmlspecialchars($login); $user->pass = ($password == '') ? '' : md5($password); $user->mail = $email; $user->date_registr = 'NOW()'; $user->id_ranks = 7; $user->ip_last = \App::$request->getIp(); $user->ip2_last = \App::$request->getIpFromProxy(); $user->dinamic_ip = 0; $user->avatar = $avatar; if ($user->save()) { return $user->id; } return false; } public function getLastIp($userId) { return \App::$command ->createCommand(' SELECT id, ip_last FROM `user` WHERE id = :user_id ') ->bindValue(':user_id', $userId) ->queryOne('ip_last', null); } public function getLastIp2($userId) { return \App::$command ->createCommand(' SELECT id, ip2_last FROM `user` WHERE id = :user_id ') ->bindValue(':user_id', $userId) ->queryOne('ip2_last', null); } public function getUsersWithIp($ip, $ip2) { return \App::$command ->createCommand(' SELECT id, name, name_full, avatar FROM `user` WHERE ip_last = :ip_last OR ip2_last = :ip2_last GROUP BY id ') ->bindValue(':ip_last', $ip) ->bindValue(':ip2_last', $ip2) ->queryAll(); } public function getModeratorValue($userId) { return \App::$command ->createCommand(' select rightf from forum_moder where id_user=:user_id ') ->bindValue(':user_id', $userId) ->queryOne('rightf', 0); } /** * Функци� провер�ет, зареги�трировал�� ли пользователь через �оциальные �ети или нет. * Функци� необходима * @param $userId * @return bool */ public function isUserRegisteredFromSocial($userId = null) { if ($userId == null) { $userId = $this->getId(); } if ($userId == null) { return false; } return \App::$command ->createCommand(' SELECT COUNT(id) as total FROM `user_tokens` WHERE user_id = :user_id ') ->bindValue(':user_id', $userId) ->queryOne('total', 0) > 0; } /** * Фунцки� провер�ет, активирован ли приватный Email пользовател�. * �е и�пользуйте �ту функцию, е�ли пользователь был авторизован через �оциальные �ети. * * <strong>Е�ли у пользовател� нет Email адре�а, то функци� вернет true!</strong> * <strong>Е�ли пользовател� не �уще�твует, то функци� вернет false!</strong> * <strong>Дл� пользователей, авторизованных через �оциальные �ети функци� в�егда возвращает true!</strong> * * @param $userId - ID пользовател� * @return boolean */ public function isEmailActivated($userId) { if (static::isUserRegisteredFromSocial($userId)) { return true; } $user = \App::$command ->createCommand(' SELECT id, mail, active FROM user WHERE id = :user_id ') ->bindValue(':user_id', $userId) ->queryOne(); if (!isset($user['id'])) { return false; } if ($user['mail'] == '' || $user['mail'] == null) { return true; } if ($user['active'] == 0) { return false; } return true; } /** * Функци� возвращает модель текущего * авторизованного пользовател�. * @return null|static */ public function getIdentity() { return static::findOne($this->getId()); } public function getAvatar($userId = null) { if ($userId == null) { $userId = $this->getId(); } $command = \App::$command ->createCommand(' SELECT id, avatar FROM `user` WHERE id = :user_id '); $command->bindValue(':user_id', $userId); $avatar = $command->queryOne('avatar'); if ($avatar == null || $avatar == '') { return \App::$config['user']['noAvatar']; } return '/' . $avatar; } /** * Функци� отправл�ет на �лектронный адре� $email пи�ьмо, * � кодом активации учетной запи�и * @param $userEmail - email пользовател� * @param $userLogin - логин пользовател�. * * @return boolean - true, е�ли у�пешно пи�ьмо отправлено и false в противном �лучае. */ public function sendConfirmEmailMessage($userLogin, $userEmail) { $validationCode = md5(iconv('utf-8', 'cp1251', $userLogin) . $userEmail . \App::$config['userRegistrationHashSalt']); $template = \App::$view->render('mail_templates/registration', [ 'code' => $validationCode, 'email' => $userEmail, 'host' => \App::$request->getHost() ], true); $mail = new Mail(); return $mail->send( \App::$config['userRegistrationFromEmail'], \App::$config['userRegistrationFromEmailName'], $userEmail, \App::$config['userRegistrationTheme'], $template ); } /** * Функци� выполн�ет пои�к пользовател� по коду, который был отправлен на его �лектронную почту. * @param $code * @return int|null, null - е�ли пользователь не найден. */ public function findUserIdByConfirmEmailCode($code) { return \App::$command ->createCommand(' SELECT id FROM `user` WHERE MD5(CONCAT(`name`, `mail`, "'.\App::$config['userRegistrationHashSalt'].'")) = :hash ') ->bindValue(':hash', $code) ->queryOne('id', null); } public function getCookieHashByUserId($userId) { return md5($userId . \App::$request->getIp() . \App::$config['userAuthCookieSalt']); } public function getUserIdByCookieHash($hash) { return \App::$command ->createCommand(' SELECT id FROM user WHERE MD5(CONCAT(`id`, "'.\App::$request->getIp().'", "'.\App::$config['userAuthCookieSalt'].'")) = :hash; ') ->bindValue(':hash', $hash) ->queryOne('id', null); } }
/app/users/
Èìÿ
Äàòà
Ðàçìåð
..
2026-10-01
entity
2019-01-17
external
2019-01-31
forms
2017-02-13
helpers
2019-01-17
notifications
2019-01-24
AdminList.php
2017-08-11
2 êá.
BadAuthUser.php
2016-12-23
1 êá.
Privacy.php
2017-02-08
3 êá.
RplMessages.php
2017-02-17
880 áàéò
SendOutData.php
2017-02-13
2 êá.
User.php
2025-07-10
27 êá.
User.php~
2021-05-27
27 êá.
UserBanIp.php
2019-01-23
2 êá.
UserIpBanRepository.php
2019-02-25
921 áàéò
UserOnline.php
2017-07-12
3 êá.
UserRegistration.php
2026-05-25
3 êá.
UserRegistration.php~
2022-09-15
3 êá.
UserRepository.php
2021-04-28
2 êá.
UserReputation.php
2019-01-16
1 êá.
UserTokens.php
2019-01-31
1 êá.
VkUser.php
2019-01-31
3 êá.
/app/users
Çàãðóçèòü ôàéëû
Ôàéë 1
Ôàéë 2
Ôàéë 3