ModuleUser

Package modules.user
Inheritance class ModuleUser » Module » LsObject
Since 1.0
Source Code /classes/modules/user/User.class.php
Модуль для работы с пользователями

Protected Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
aUserFieldTypes array Список типов пользовательских полей ModuleUser
bIsInit bool Указывает на то, была ли проведенна инициализация модуля Module
oEngine Engine Объект ядра Module
oMapper ModuleUser_MapperUser Объект маппера ModuleUser
oSession ModuleUser_EntitySession|null Объект сессии текущего пользователя ModuleUser
oUserCurrent ModuleUser_EntityUser|null Объект текущего пользователя ModuleUser

Public Methods

Hide inherited methods

MethodDescriptionDefined By
Add() Добавляет юзера ModuleUser
AddFriend() Добавляет друга ModuleUser
AddInvite() Добавляет новый инвайт ModuleUser
AddReminder() Добавляем воспоминание(восстановление) пароля ModuleUser
AddUserChangemail() Добавляет запись о смене емайла ModuleUser
AddUserFieldTypes() Добавляет новый тип с пользовательские поля ModuleUser
Authorization() Авторизовывает юзера ModuleUser
CheckLogin() Проверяет логин на корректность ModuleUser
DeleteAvatar() Удаляет аватар пользователя ModuleUser
DeleteFoto() Удаляет фото пользователя ModuleUser
DeleteFriend() Удаляет друга ModuleUser
DeleteUserFieldValues() Удаляет у пользователя значения полей ModuleUser
DeleteUserNoteById() Удаляет заметку по ID ModuleUser
EraseFriend() Удаляет информацию о дружбе из базы данных ModuleUser
GenerateInvite() Генерирует новый инвайт ModuleUser
GetCountInviteAvailable() Получаем число доступных приглашений для юзера ModuleUser
GetCountInviteUsed() Получает полное число использованных приглашений юзера ModuleUser
GetCountInviteUsedByDate() Получает число использованых приглашений юзером за определенную дату ModuleUser
GetCountUserNotesByUserId() Возвращает количество заметок у пользователя ModuleUser
GetCountUsersFriend() Получает количество друзей ModuleUser
GetFriend() Получаем привязку друга к юзеру(есть ли у юзера данный друг) ModuleUser
GetFriendsByArray() Получить список отношений друзей ModuleUser
GetFriendsByArraySolid() Получить список отношений друзей используя единый кеш ModuleUser
GetGroupPrefixUser() Возвращает список префиксов логинов пользователей (для алфавитного указателя) ModuleUser
GetInviteByCode() Получает инвайт по его коду ModuleUser
GetReminderByCode() Получаем запись восстановления пароля по коду ModuleUser
GetSessionByUserId() Получает сессию юзера ModuleUser
GetSessionsByArrayId() Список сессий юзеров по ID ModuleUser
GetSessionsByArrayIdSolid() Получить список сессий по списку айдишников, но используя единый кеш ModuleUser
GetStatUsers() Получить статистику по юзерам ModuleUser
GetUserByActivateKey() Получить юзера по ключу активации ModuleUser
GetUserById() Получить юзера по айдишнику ModuleUser
GetUserByLogin() Получить юзера по логину ModuleUser
GetUserByMail() Получить юзера по мылу ModuleUser
GetUserBySessionKey() Получить юзера по ключу сессии ModuleUser
GetUserChangemailByCodeFrom() Возвращает объект смены емайла по коду подтверждения ModuleUser
GetUserChangemailByCodeTo() Возвращает объект смены емайла по коду подтверждения ModuleUser
GetUserCurrent() Получить текущего юзера ModuleUser
GetUserFieldTypes() Возвращает список типов полей ModuleUser
GetUserInviteFrom() Получает юзера который пригласил ModuleUser
GetUserItemsByArrayId() Алиас для корректной работы ORM ModuleUser
GetUserNote() Возвращет заметку по автору и пользователю ModuleUser
GetUserNoteById() Возвращает заметку по ID ModuleUser
GetUserNotesByArray() Возвращает список заметок пользователя по ID целевых юзеров ModuleUser
GetUserNotesByUserId() Возвращает список заметок пользователя ModuleUser
GetUsersAdditionalData() Получает дополнительные данные(объекты) для юзеров по их ID ModuleUser
GetUsersByArrayId() Список юзеров по ID ModuleUser
GetUsersByArrayIdSolid() Получение пользователей по списку ID используя общий кеш ModuleUser
GetUsersByDateLast() Получить список юзеров по дате последнего визита ModuleUser
GetUsersByDateRegister() Получить список юзеров по дате регистрации ModuleUser
GetUsersByFilter() Возвращает список пользователей по фильтру ModuleUser
GetUsersByLoginLike() Получить список юзеров по первым буквам логина ModuleUser
GetUsersFriend() Получает список друзей ModuleUser
GetUsersInvite() Получает список приглашенных юзеров ModuleUser
Init() Инициализация ModuleUser
IsAuthorization() Авторизован ли юзер ModuleUser
Logout() Разлогинивание ModuleUser
MakeUserChangemail() Формирование процесса смены емайла в профиле пользователя ModuleUser
SaveNote() Сохраняет заметку в БД, если ее нет то создает новую ModuleUser
SetInit() Помечает модуль как инициализированный Module
Shutdown() При завершенни модуля загружаем в шалон объект текущего юзера ModuleUser
Update() Обновляет юзера ModuleUser
UpdateFriend() Обновляет информацию о друге ModuleUser
UpdateInvite() Обновляет инвайт ModuleUser
UpdateReminder() Сохраняем воспомнинание(восстановление) пароля ModuleUser
UpdateUserChangemail() Обновляет запись о смене емайла ModuleUser
UploadAvatar() Загрузка аватара пользователя ModuleUser
UploadFoto() загрузка фотографии пользователя ModuleUser
__call() Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля Module
__construct() При создании модуля передаем объект ядра Module
addUserField() Добавить поле ModuleUser
deleteUserField() Удалить поле ModuleUser
getUserFieldValueByName() Получить по имени поля его значение дял определённого пользователя ModuleUser
getUserFields() Получить дополнительные поля профиля пользователя ModuleUser
getUserFieldsValues() Получить значения дополнительных полей профиля пользователя ModuleUser
isInit() Возвращает значение флага инициализации модуля Module
setUserFieldsValues() Установить значения дополнительных полей профиля пользователя ModuleUser
updateUserField() Изменить поле ModuleUser
userFieldExistsById() Проверяет существует ли поле с таким ID ModuleUser
userFieldExistsByName() Проверяет существует ли поле с таким именем ModuleUser

Protected Methods

Hide inherited methods

MethodDescriptionDefined By
AutoLogin() Автоматическое заллогинивание по ключу из куков ModuleUser
CreateSession() Создание пользовательской сессии ModuleUser
UpdateSession() Обновление данных сессии ModuleUser
__clone() Блокируем копирование/клонирование объекта Module

Property Details

aUserFieldTypes property
protected array $aUserFieldTypes;

Список типов пользовательских полей

oMapper property
protected ModuleUser_MapperUser $oMapper;

Объект маппера

oSession property
protected ModuleUser_EntitySession|null $oSession;

Объект сессии текущего пользователя

oUserCurrent property
protected ModuleUser_EntityUser|null $oUserCurrent;

Объект текущего пользователя

Method Details

Add() method
public ModuleUser_EntityUser|bool Add(ModuleUser_EntityUser $oUser)
$oUser ModuleUser_EntityUser Объект пользователя
{return} ModuleUser_EntityUser|bool
Source Code: /classes/modules/user/User.class.php#406 (show)
public function Add(ModuleUser_EntityUser $oUser) {
    if (
$sId=$this->oMapper->Add($oUser)) {
        
$oUser->setId($sId);
        
//чистим зависимые кеши
        
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array('user_new'));
        
/**
         * Создаем персональный блог
         */
        
$this->Blog_CreatePersonalBlog($oUser);
        return 
$oUser;
    }
    return 
false;
}

Добавляет юзера

AddFriend() method
public bool AddFriend(ModuleUser_EntityFriend $oFriend)
$oFriend ModuleUser_EntityFriend Объект дружбы(связи пользователей)
{return} bool
Source Code: /classes/modules/user/User.class.php#822 (show)
public function AddFriend(ModuleUser_EntityFriend $oFriend) {
    
//чистим зависимые кеши
    
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("friend_change_user_{$oFriend->getUserFrom()}","friend_change_user_{$oFriend->getUserTo()}"));
    
$this->Cache_Delete("user_friend_{$oFriend->getUserFrom()}_{$oFriend->getUserTo()}");
    
$this->Cache_Delete("user_friend_{$oFriend->getUserTo()}_{$oFriend->getUserFrom()}");

    return 
$this->oMapper->AddFriend($oFriend);
}

Добавляет друга

AddInvite() method
public ModuleUser_EntityInvite|bool AddInvite(ModuleUser_EntityInvite $oInvite)
$oInvite ModuleUser_EntityInvite Объект инвайта
{return} ModuleUser_EntityInvite|bool
Source Code: /classes/modules/user/User.class.php#919 (show)
public function AddInvite(ModuleUser_EntityInvite $oInvite) {
    if (
$sId=$this->oMapper->AddInvite($oInvite)) {
        
$oInvite->setId($sId);
        return 
$oInvite;
    }
    return 
false;
}

Добавляет новый инвайт

AddReminder() method
public bool AddReminder(ModuleUser_EntityReminder $oReminder)
$oReminder ModuleUser_EntityReminder Объект восстановления пароля
{return} bool
Source Code: /classes/modules/user/User.class.php#1017 (show)
public function AddReminder(ModuleUser_EntityReminder $oReminder) {
    return 
$this->oMapper->AddReminder($oReminder);
}

Добавляем воспоминание(восстановление) пароля

AddUserChangemail() method
public bool|ModuleUser_EntityChangemail AddUserChangemail(ModuleUser_EntityChangemail $oChangemail)
$oChangemail ModuleUser_EntityChangemail Объект смены емайла
{return} bool|ModuleUser_EntityChangemail
Source Code: /classes/modules/user/User.class.php#1488 (show)
public function AddUserChangemail($oChangemail) {
    if (
$sId=$this->oMapper->AddUserChangemail($oChangemail)) {
        
$oChangemail->setId($sId);
        return 
$oChangemail;
    }
    return 
false;
}

Добавляет запись о смене емайла

AddUserFieldTypes() method
public bool AddUserFieldTypes(string $sType)
$sType string Тип
{return} bool
Source Code: /classes/modules/user/User.class.php#104 (show)
public function AddUserFieldTypes($sType) {
    if (!
in_array($sType,$this->aUserFieldTypes)) {
        
$this->aUserFieldTypes[]=$sType;
        return 
true;
    }
    return 
false;
}

Добавляет новый тип с пользовательские поля

Authorization() method
public bool Authorization(ModuleUser_EntityUser $oUser, bool $bRemember=true, string $sKey=NULL)
$oUser ModuleUser_EntityUser Объект пользователя
$bRemember bool Запоминать пользователя или нет
$sKey string Ключ авторизации для куков
{return} bool
Source Code: /classes/modules/user/User.class.php#500 (show)
public function Authorization(ModuleUser_EntityUser $oUser,$bRemember=true,$sKey=null) {
    if (!
$oUser->getId() or !$oUser->getActivate()) {
        return 
false;
    }
    
/**
     * Генерим новый ключ авторизаии для куков
     */
    
if(is_null($sKey)){
        
$sKey=md5(func_generator().time().$oUser->getLogin());
    }
    
/**
     * Создаём новую сессию
     */
    
if (!$this->CreateSession($oUser,$sKey)) {
        return 
false;
    }
    
/**
     * Запоминаем в сесси юзера
     */
    
$this->Session_Set('user_id',$oUser->getId());
    
$this->oUserCurrent=$oUser;
    
/**
     * Ставим куку
     */
    
if ($bRemember) {
        
setcookie('key',$sKey,time()+Config::Get('sys.cookie.time'),Config::Get('sys.cookie.path'),Config::Get('sys.cookie.host'));
    }
    return 
true;
}

Авторизовывает юзера

AutoLogin() method
protected void AutoLogin()
Source Code: /classes/modules/user/User.class.php#533 (show)
protected function AutoLogin() {
    if (
$this->oUserCurrent) {
        return;
    }
    if (isset(
$_COOKIE['key']) and is_string($_COOKIE['key']) and $sKey=$_COOKIE['key']) {
        if (
$oUser=$this->GetUserBySessionKey($sKey)) {
            
$this->Authorization($oUser);
        } else {
            
$this->Logout();
        }
    }
}

Автоматическое заллогинивание по ключу из куков

CheckLogin() method
public bool CheckLogin(string $sLogin)
$sLogin string Логин пользователя
{return} bool
Source Code: /classes/modules/user/User.class.php#1247 (show)
public function CheckLogin($sLogin) {
    if (
preg_match("/^[\da-z\_\-]{".Config::Get('module.user.login.min_size').','.Config::Get('module.user.login.max_size')."}$/i",$sLogin)){
        return 
true;
    }
    return 
false;
}

Проверяет логин на корректность

CreateSession() method
protected bool CreateSession(ModuleUser_EntityUser $oUser, string $sKey)
$oUser ModuleUser_EntityUser Объект пользователя
$sKey string Сессионный ключ
{return} bool
Source Code: /classes/modules/user/User.class.php#610 (show)
protected function CreateSession(ModuleUser_EntityUser $oUser,$sKey) {
    
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array('user_session_update'));
    
$this->Cache_Delete("user_session_{$oUser->getId()}");
    
$oSession=Engine::GetEntity('User_Session');
    
$oSession->setUserId($oUser->getId());
    
$oSession->setKey($sKey);
    
$oSession->setIpLast(func_getIp());
    
$oSession->setIpCreate(func_getIp());
    
$oSession->setDateLast(date("Y-m-d H:i:s"));
    
$oSession->setDateCreate(date("Y-m-d H:i:s"));
    if (
$this->oMapper->CreateSession($oSession)) {
        
$this->oSession=$oSession;
        return 
true;
    }
    return 
false;
}

Создание пользовательской сессии

DeleteAvatar() method
public void DeleteAvatar(ModuleUser_EntityUser $oUser)
$oUser ModuleUser_EntityUser Объект пользователя
Source Code: /classes/modules/user/User.class.php#1142 (show)
public function DeleteAvatar($oUser) {
    
/**
     * Если аватар есть, удаляем его и его рейсайзы
     */
    
if($oUser->getProfileAvatar()) {
        
$aSize=array_merge(Config::Get('module.user.avatar_size'),array(100));
        foreach (
$aSize as $iSize) {
            
$this->Image_RemoveFile($this->Image_GetServerPath($oUser->getProfileAvatarPath($iSize)));
        }
    }
}

Удаляет аватар пользователя

DeleteFoto() method
public void DeleteFoto(ModuleUser_EntityUser $oUser)
$oUser ModuleUser_EntityUser
Source Code: /classes/modules/user/User.class.php#1238 (show)
public function DeleteFoto($oUser) {
    
$this->Image_RemoveFile($this->Image_GetServerPath($oUser->getProfileFoto()));
}

Удаляет фото пользователя

DeleteFriend() method
public bool DeleteFriend(ModuleUser_EntityFriend $oFriend)
$oFriend ModuleUser_EntityFriend Объект дружбы(связи пользователей)
{return} bool
Source Code: /classes/modules/user/User.class.php#836 (show)
public function DeleteFriend(ModuleUser_EntityFriend $oFriend) {
    
//чистим зависимые кеши
    
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("friend_change_user_{$oFriend->getUserFrom()}","friend_change_user_{$oFriend->getUserTo()}"));
    
$this->Cache_Delete("user_friend_{$oFriend->getUserFrom()}_{$oFriend->getUserTo()}");
    
$this->Cache_Delete("user_friend_{$oFriend->getUserTo()}_{$oFriend->getUserFrom()}");

    
// устанавливаем статус дружбы "удалено"
    
$oFriend->setStatusByUserId(ModuleUser::USER_FRIEND_DELETE,$oFriend->getUserId());
    return 
$this->oMapper->UpdateFriend($oFriend);
}

Удаляет друга

DeleteUserFieldValues() method
public bool DeleteUserFieldValues(int $iUserId, array|null $aType=NULL)
$iUserId int ID пользователя
$aType array|null Список типов для удаления
{return} bool
Source Code: /classes/modules/user/User.class.php#1347 (show)
public function DeleteUserFieldValues($iUserId,$aType=null) {
    return 
$this->oMapper->DeleteUserFieldValues($iUserId,$aType);
}

Удаляет у пользователя значения полей

DeleteUserNoteById() method
public bool DeleteUserNoteById(int $iId)
$iId int ID заметки
{return} bool
Source Code: /classes/modules/user/User.class.php#1439 (show)
public function DeleteUserNoteById($iId) {
    if (
$oNote=$this->GetUserNoteById($iId)) {
        
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("user_note_change_by_user_{$oNote->getUserId()}"));
    }
    return 
$this->oMapper->DeleteUserNoteById($iId);
}

Удаляет заметку по ID

EraseFriend() method
public bool EraseFriend(ModuleUser_EntityFriend $oFriend)
$oFriend ModuleUser_EntityFriend Объект дружбы(связи пользователей)
{return} bool
Source Code: /classes/modules/user/User.class.php#852 (show)
public function EraseFriend(ModuleUser_EntityFriend $oFriend) {
    
//чистим зависимые кеши
    
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("friend_change_user_{$oFriend->getUserFrom()}","friend_change_user_{$oFriend->getUserTo()}"));
    
$this->Cache_Delete("user_friend_{$oFriend->getUserFrom()}_{$oFriend->getUserTo()}");
    
$this->Cache_Delete("user_friend_{$oFriend->getUserTo()}_{$oFriend->getUserFrom()}");
    return 
$this->oMapper->EraseFriend($oFriend);
}

Удаляет информацию о дружбе из базы данных

GenerateInvite() method
public ModuleUser_EntityInvite|bool GenerateInvite(ModuleUser_EntityUser $oUser)
$oUser ModuleUser_EntityUser Объект пользователя
{return} ModuleUser_EntityInvite|bool
Source Code: /classes/modules/user/User.class.php#943 (show)
public function GenerateInvite($oUser) {
    
$oInvite=Engine::GetEntity('User_Invite');
    
$oInvite->setCode(func_generator(32));
    
$oInvite->setDateAdd(date("Y-m-d H:i:s"));
    
$oInvite->setUserFromId($oUser->getId());
    return 
$this->AddInvite($oInvite);
}

Генерирует новый инвайт

GetCountInviteAvailable() method
public int GetCountInviteAvailable(ModuleUser_EntityUser $oUserFrom)
$oUserFrom ModuleUser_EntityUser Объект пользователя
{return} int
Source Code: /classes/modules/user/User.class.php#975 (show)
public function GetCountInviteAvailable(ModuleUser_EntityUser $oUserFrom) {
    
$sDay=7;
    
$iCountUsed=$this->GetCountInviteUsedByDate($oUserFrom->getId(),date("Y-m-d 00:00:00",mktime(0,0,0,date("m"),date("d")-$sDay,date("Y"))));
    
$iCountAllAvailable=round($oUserFrom->getRating()+$oUserFrom->getSkill());
    
$iCountAllAvailable $iCountAllAvailable<$iCountAllAvailable;
    
$iCountAvailable=$iCountAllAvailable-$iCountUsed;
    
$iCountAvailable $iCountAvailable<$iCountAvailable;
    return 
$iCountAvailable;
}

Получаем число доступных приглашений для юзера

GetCountInviteUsed() method
public int GetCountInviteUsed(int $sUserIdFrom)
$sUserIdFrom int ID пользователя
{return} int
Source Code: /classes/modules/user/User.class.php#966 (show)
public function GetCountInviteUsed($sUserIdFrom) {
    return 
$this->oMapper->GetCountInviteUsed($sUserIdFrom);
}

Получает полное число использованных приглашений юзера

GetCountInviteUsedByDate() method
public int GetCountInviteUsedByDate(int $sUserIdFrom, string $sDate)
$sUserIdFrom int ID пользователя
$sDate string Дата
{return} int
Source Code: /classes/modules/user/User.class.php#957 (show)
public function GetCountInviteUsedByDate($sUserIdFrom,$sDate) {
    return 
$this->oMapper->GetCountInviteUsedByDate($sUserIdFrom,$sDate);
}

Получает число использованых приглашений юзером за определенную дату

GetCountUserNotesByUserId() method
public int GetCountUserNotesByUserId(int $iUserId)
$iUserId int ID пользователя
{return} int
Source Code: /classes/modules/user/User.class.php#1383 (show)
public function GetCountUserNotesByUserId($iUserId) {
    return 
$this->oMapper->GetCountUserNotesByUserId($iUserId);
}

Возвращает количество заметок у пользователя

GetCountUsersFriend() method
public int GetCountUsersFriend(int $sUserId)
$sUserId int ID пользователя
{return} int
Source Code: /classes/modules/user/User.class.php#895 (show)
public function GetCountUsersFriend($sUserId) {
    
$sKey="count_user_friend_{$sUserId}";
    if (
false === ($data $this->Cache_Get($sKey))) {
        
$data $this->oMapper->GetCountUsersFriend($sUserId);
        
$this->Cache_Set($data$sKey, array("friend_change_user_{$sUserId}"), 60*60*24*2);
    }
    return 
$data;
}

Получает количество друзей

GetFriend() method
public ModuleUser_EntityFriend|null GetFriend(int $sFriendId, int $sUserId)
$sFriendId int ID пользователя друга
$sUserId int ID пользователя
{return} ModuleUser_EntityFriend|null
Source Code: /classes/modules/user/User.class.php#809 (show)
public function GetFriend($sFriendId,$sUserId) {
    
$data=$this->GetFriendsByArray($sFriendId,$sUserId);
    if (isset(
$data[$sFriendId])) {
        return 
$data[$sFriendId];
    }
    return 
null;
}

Получаем привязку друга к юзеру(есть ли у юзера данный друг)

GetFriendsByArray() method
public array GetFriendsByArray(array $aUserId, int $sUserId)
$aUserId array Список ID пользователей проверяемых на дружбу
$sUserId int ID пользователя у которого проверяем друзей
{return} array
Source Code: /classes/modules/user/User.class.php#713 (show)
public function GetFriendsByArray($aUserId,$sUserId) {
    if (!
$aUserId) {
        return array();
    }
    if (
Config::Get('sys.cache.solid')) {
        return 
$this->GetFriendsByArraySolid($aUserId,$sUserId);
    }
    if (!
is_array($aUserId)) {
        
$aUserId=array($aUserId);
    }
    
$aUserId=array_unique($aUserId);
    
$aFriends=array();
    
$aUserIdNotNeedQuery=array();
    
/**
     * Делаем мульти-запрос к кешу
     */
    
$aCacheKeys=func_build_cache_keys($aUserId,'user_friend_','_'.$sUserId);
    if (
false !== ($data $this->Cache_Get($aCacheKeys))) {
        
/**
         * проверяем что досталось из кеша
         */
        
foreach ($aCacheKeys as $sValue => $sKey ) {
            if (
array_key_exists($sKey,$data)) {
                if (
$data[$sKey]) {
                    
$aFriends[$data[$sKey]->getFriendId()]=$data[$sKey];
                } else {
                    
$aUserIdNotNeedQuery[]=$sValue;
                }
            }
        }
    }
    
/**
     * Смотрим каких френдов не было в кеше и делаем запрос в БД
     */
    
$aUserIdNeedQuery=array_diff($aUserId,array_keys($aFriends));
    
$aUserIdNeedQuery=array_diff($aUserIdNeedQuery,$aUserIdNotNeedQuery);
    
$aUserIdNeedStore=$aUserIdNeedQuery;
    if (
$data $this->oMapper->GetFriendsByArrayId($aUserIdNeedQuery,$sUserId)) {
        foreach (
$data as $oFriend) {
            
/**
             * Добавляем к результату и сохраняем в кеш
             */
            
$aFriends[$oFriend->getFriendId($sUserId)]=$oFriend;
            
/**
             * Тут кеш нужно будет продумать как-то по другому.
             * Пока не трогаю, ибо этот код все равно не выполняется.
             * by Kachaev
             */
            
$this->Cache_Set($oFriend"user_friend_{$oFriend->getFriendId()}_{$oFriend->getUserId()}", array(), 60*60*24*4);
            
$aUserIdNeedStore=array_diff($aUserIdNeedStore,array($oFriend->getFriendId()));
        }
    }
    
/**
     * Сохраняем в кеш запросы не вернувшие результата
     */
    
foreach ($aUserIdNeedStore as $sId) {
        
$this->Cache_Set(null"user_friend_{$sId}_{$sUserId}", array(), 60*60*24*4);
    }
    
/**
     * Сортируем результат согласно входящему массиву
     */
    
$aFriends=func_array_sort_by_keys($aFriends,$aUserId);
    return 
$aFriends;
}

Получить список отношений друзей

GetFriendsByArraySolid() method
public array GetFriendsByArraySolid(array $aUserId, int $sUserId)
$aUserId array Список ID пользователей проверяемых на дружбу
$sUserId int ID пользователя у которого проверяем друзей
{return} array
Source Code: /classes/modules/user/User.class.php#784 (show)
public function GetFriendsByArraySolid($aUserId,$sUserId) {
    if (!
is_array($aUserId)) {
        
$aUserId=array($aUserId);
    }
    
$aUserId=array_unique($aUserId);
    
$aFriends=array();
    
$s=join(',',$aUserId);
    if (
false === ($data $this->Cache_Get("user_friend_{$sUserId}_id_{$s}"))) {
        
$data $this->oMapper->GetFriendsByArrayId($aUserId,$sUserId);
        foreach (
$data as $oFriend) {
            
$aFriends[$oFriend->getFriendId($sUserId)]=$oFriend;
        }

        
$this->Cache_Set($aFriends"user_friend_{$sUserId}_id_{$s}", array("friend_change_user_{$sUserId}"), 60*60*24*1);
        return 
$aFriends;
    }
    return 
$data;
}

Получить список отношений друзей используя единый кеш

GetGroupPrefixUser() method
public array GetGroupPrefixUser(int $iPrefixLength=1)
$iPrefixLength int Длина префикса
{return} array
Source Code: /classes/modules/user/User.class.php#1475 (show)
public function GetGroupPrefixUser($iPrefixLength=1) {
    if (
false === ($data $this->Cache_Get("group_prefix_user_{$iPrefixLength}"))) {
        
$data $this->oMapper->GetGroupPrefixUser($iPrefixLength);
        
$this->Cache_Set($data"group_prefix_user_{$iPrefixLength}", array("user_new"), 60*60*24*1);
    }
    return 
$data;
}

Возвращает список префиксов логинов пользователей (для алфавитного указателя)

GetInviteByCode() method
public ModuleUser_EntityInvite|null GetInviteByCode(string $sCode, int $iUsed=0)
$sCode string Код инвайта
$iUsed int Флаг испольщования инвайта
{return} ModuleUser_EntityInvite|null
Source Code: /classes/modules/user/User.class.php#910 (show)
public function GetInviteByCode($sCode,$iUsed=0) {
    return 
$this->oMapper->GetInviteByCode($sCode,$iUsed);
}

Получает инвайт по его коду

GetReminderByCode() method
public ModuleUser_EntityReminder|null GetReminderByCode(string $sCode)
$sCode string Код восстановления пароля
{return} ModuleUser_EntityReminder|null
Source Code: /classes/modules/user/User.class.php#1035 (show)
public function GetReminderByCode($sCode) {
    return 
$this->oMapper->GetReminderByCode($sCode);
}

Получаем запись восстановления пароля по коду

GetSessionByUserId() method
public ModuleUser_EntitySession|null GetSessionByUserId(int $sUserId)
$sUserId int ID пользователя
{return} ModuleUser_EntitySession|null
Source Code: /classes/modules/user/User.class.php#382 (show)
public function GetSessionByUserId($sUserId) {
    
$aSessions=$this->GetSessionsByArrayId($sUserId);
    if (isset(
$aSessions[$sUserId])) {
        return 
$aSessions[$sUserId];
    }
    return 
null;
}

Получает сессию юзера

GetSessionsByArrayId() method
public array GetSessionsByArrayId(array $aUserId)
$aUserId array Список ID пользователей
{return} array
Source Code: /classes/modules/user/User.class.php#294 (show)
public function GetSessionsByArrayId($aUserId) {
    if (!
$aUserId) {
        return array();
    }
    if (
Config::Get('sys.cache.solid')) {
        return 
$this->GetSessionsByArrayIdSolid($aUserId);
    }
    if (!
is_array($aUserId)) {
        
$aUserId=array($aUserId);
    }
    
$aUserId=array_unique($aUserId);
    
$aSessions=array();
    
$aUserIdNotNeedQuery=array();
    
/**
     * Делаем мульти-запрос к кешу
     */
    
$aCacheKeys=func_build_cache_keys($aUserId,'user_session_');
    if (
false !== ($data $this->Cache_Get($aCacheKeys))) {
        
/**
         * проверяем что досталось из кеша
         */
        
foreach ($aCacheKeys as $sValue => $sKey ) {
            if (
array_key_exists($sKey,$data)) {
                if (
$data[$sKey] and $data[$sKey]['session']) {
                    
$aSessions[$data[$sKey]['session']->getUserId()]=$data[$sKey]['session'];
                } else {
                    
$aUserIdNotNeedQuery[]=$sValue;
                }
            }
        }
    }
    
/**
     * Смотрим каких юзеров не было в кеше и делаем запрос в БД
     */
    
$aUserIdNeedQuery=array_diff($aUserId,array_keys($aSessions));
    
$aUserIdNeedQuery=array_diff($aUserIdNeedQuery,$aUserIdNotNeedQuery);
    
$aUserIdNeedStore=$aUserIdNeedQuery;
    if (
$data $this->oMapper->GetSessionsByArrayId($aUserIdNeedQuery)) {
        foreach (
$data as $oSession) {
            
/**
             * Добавляем к результату и сохраняем в кеш
             */
            
$aSessions[$oSession->getUserId()]=$oSession;
            
$this->Cache_Set(array('time'=>time(),'session'=>$oSession), "user_session_{$oSession->getUserId()}", array(), 60*60*24*4);
            
$aUserIdNeedStore=array_diff($aUserIdNeedStore,array($oSession->getUserId()));
        }
    }
    
/**
     * Сохраняем в кеш запросы не вернувшие результата
     */
    
foreach ($aUserIdNeedStore as $sId) {
        
$this->Cache_Set(array('time'=>time(),'session'=>null), "user_session_{$sId}", array(), 60*60*24*4);
    }
    
/**
     * Сортируем результат согласно входящему массиву
     */
    
$aSessions=func_array_sort_by_keys($aSessions,$aUserId);
    return 
$aSessions;
}

Список сессий юзеров по ID

GetSessionsByArrayIdSolid() method
public array GetSessionsByArrayIdSolid(array $aUserId)
$aUserId array Список ID пользователей
{return} array
Source Code: /classes/modules/user/User.class.php#359 (show)
public function GetSessionsByArrayIdSolid($aUserId) {
    if (!
is_array($aUserId)) {
        
$aUserId=array($aUserId);
    }
    
$aUserId=array_unique($aUserId);
    
$aSessions=array();
    
$s=join(',',$aUserId);
    if (
false === ($data $this->Cache_Get("user_session_id_{$s}"))) {
        
$data $this->oMapper->GetSessionsByArrayId($aUserId);
        foreach (
$data as $oSession) {
            
$aSessions[$oSession->getUserId()]=$oSession;
        }
        
$this->Cache_Set($aSessions"user_session_id_{$s}", array("user_session_update"), 60*60*24*1);
        return 
$aSessions;
    }
    return 
$data;
}

Получить список сессий по списку айдишников, но используя единый кеш

GetStatUsers() method
public array GetStatUsers()
{return} array
Source Code: /classes/modules/user/User.class.php#676 (show)
public function GetStatUsers() {
    if (
false === ($aStat $this->Cache_Get("user_stats"))) {
        
$aStat['count_all']=$this->oMapper->GetCountUsers();
        
$sDate=date("Y-m-d H:i:s",time()-Config::Get('module.user.time_active'));
        
$aStat['count_active']=$this->oMapper->GetCountUsersActive($sDate);
        
$aStat['count_inactive']=$aStat['count_all']-$aStat['count_active'];
        
$aSex=$this->oMapper->GetCountUsersSex();
        
$aStat['count_sex_man']=(isset($aSex['man']) ? $aSex['man']['count'] : 0);
        
$aStat['count_sex_woman']=(isset($aSex['woman']) ? $aSex['woman']['count'] : 0);
        
$aStat['count_sex_other']=(isset($aSex['other']) ? $aSex['other']['count'] : 0);

        
$this->Cache_Set($aStat"user_stats", array("user_update","user_new"), 60*60*24*4);
    }
    return 
$aStat;
}

Получить статистику по юзерам

GetUserByActivateKey() method
public ModuleUser_EntityUser|null GetUserByActivateKey(string $sKey)
$sKey string Ключ активации
{return} ModuleUser_EntityUser|null
Source Code: /classes/modules/user/User.class.php#425 (show)
public function GetUserByActivateKey($sKey) {
    
$id=$this->oMapper->GetUserByActivateKey($sKey);
    return 
$this->GetUserById($id);
}

Получить юзера по ключу активации

GetUserById() method
public ModuleUser_EntityUser|null GetUserById(int $sId)
$sId int ID пользователя
{return} ModuleUser_EntityUser|null
Source Code: /classes/modules/user/User.class.php#470 (show)
public function GetUserById($sId) {
    if (!
is_numeric($sId)) {
        return 
null;
    }
    
$aUsers=$this->GetUsersAdditionalData($sId);
    if (isset(
$aUsers[$sId])) {
        return 
$aUsers[$sId];
    }
    return 
null;
}

Получить юзера по айдишнику

GetUserByLogin() method
public ModuleUser_EntityUser|null GetUserByLogin(string $sLogin)
$sLogin string Логин пользователя
{return} ModuleUser_EntityUser|null
Source Code: /classes/modules/user/User.class.php#455 (show)
public function GetUserByLogin($sLogin) {
    
$s=strtolower($sLogin);
    if (
false === ($id $this->Cache_Get("user_login_{$s}"))) {
        if (
$id $this->oMapper->GetUserByLogin($sLogin)) {
            
$this->Cache_Set($id"user_login_{$s}", array(), 60*60*24*1);
        }
    }
    return 
$this->GetUserById($id);
}

Получить юзера по логину

GetUserByMail() method
public ModuleUser_EntityUser|null GetUserByMail(string $sMail)
$sMail string Емайл
{return} ModuleUser_EntityUser|null
Source Code: /classes/modules/user/User.class.php#445 (show)
public function GetUserByMail($sMail) {
    
$id=$this->oMapper->GetUserByMail($sMail);
    return 
$this->GetUserById($id);
}

Получить юзера по мылу

GetUserBySessionKey() method
public ModuleUser_EntityUser|null GetUserBySessionKey(string $sKey)
$sKey string Сессионный ключ
{return} ModuleUser_EntityUser|null
Source Code: /classes/modules/user/User.class.php#435 (show)
public function GetUserBySessionKey($sKey) {
    
$id=$this->oMapper->GetUserBySessionKey($sKey);
    return 
$this->GetUserById($id);
}

Получить юзера по ключу сессии

GetUserChangemailByCodeFrom() method
public ModuleUser_EntityChangemail|null GetUserChangemailByCodeFrom(string $sCode)
$sCode string Код подтверждения
{return} ModuleUser_EntityChangemail|null
Source Code: /classes/modules/user/User.class.php#1510 (show)
public function GetUserChangemailByCodeFrom($sCode) {
    return 
$this->oMapper->GetUserChangemailByCodeFrom($sCode);
}

Возвращает объект смены емайла по коду подтверждения

GetUserChangemailByCodeTo() method
public ModuleUser_EntityChangemail|null GetUserChangemailByCodeTo(string $sCode)
$sCode string Код подтверждения
{return} ModuleUser_EntityChangemail|null
Source Code: /classes/modules/user/User.class.php#1519 (show)
public function GetUserChangemailByCodeTo($sCode) {
    return 
$this->oMapper->GetUserChangemailByCodeTo($sCode);
}

Возвращает объект смены емайла по коду подтверждения

GetUserCurrent() method
public ModuleUser_EntityUser|null GetUserCurrent()
{return} ModuleUser_EntityUser|null
Source Code: /classes/modules/user/User.class.php#562 (show)
public function GetUserCurrent() {
    return 
$this->oUserCurrent;
}

Получить текущего юзера

GetUserFieldTypes() method
public array GetUserFieldTypes()
{return} array
Source Code: /classes/modules/user/User.class.php#95 (show)
public function GetUserFieldTypes() {
    return 
$this->aUserFieldTypes;
}

Возвращает список типов полей

GetUserInviteFrom() method
public ModuleUser_EntityUser|null GetUserInviteFrom(int $sUserIdTo)
$sUserIdTo int ID пользователя
{return} ModuleUser_EntityUser|null
Source Code: /classes/modules/user/User.class.php#1004 (show)
public function GetUserInviteFrom($sUserIdTo) {
    if (
false === ($id $this->Cache_Get("user_invite_from_{$sUserIdTo}"))) {
        
$id $this->oMapper->GetUserInviteFrom($sUserIdTo);
        
$this->Cache_Set($id"user_invite_from_{$sUserIdTo}", array("invate_new_to_{$sUserIdTo}"), 60*60*24*1);
    }
    return 
$this->GetUserById($id);
}

Получает юзера который пригласил

GetUserItemsByArrayId() method
public array GetUserItemsByArrayId(array $aUserId)
$aUserId array Список ID пользователей
{return} array
Source Code: /classes/modules/user/User.class.php#262 (show)
public function GetUserItemsByArrayId($aUserId) {
    return 
$this->GetUsersByArrayId($aUserId);
}

Алиас для корректной работы ORM

GetUserNote() method
public ModuleUser_EntityNote GetUserNote(int $iTargetUserId, int $iUserId)
$iTargetUserId int ID пользователя о ком заметка
$iUserId int ID пользователя автора заметки
{return} ModuleUser_EntityNote
Source Code: /classes/modules/user/User.class.php#1393 (show)
public function GetUserNote($iTargetUserId,$iUserId) {
    return 
$this->oMapper->GetUserNote($iTargetUserId,$iUserId);
}

Возвращет заметку по автору и пользователю

GetUserNoteById() method
public ModuleUser_EntityNote GetUserNoteById(int $iId)
$iId int ID заметки
{return} ModuleUser_EntityNote
Source Code: /classes/modules/user/User.class.php#1402 (show)
public function GetUserNoteById($iId) {
    return 
$this->oMapper->GetUserNoteById($iId);
}

Возвращает заметку по ID

GetUserNotesByArray() method
public array GetUserNotesByArray(array $aUserId, int $sUserId)
$aUserId array Список ID целевых пользователей
$sUserId int ID пользователя, кто оставлял заметки
{return} array
Source Code: /classes/modules/user/User.class.php#1412 (show)
public function GetUserNotesByArray($aUserId,$sUserId) {
    if (!
$aUserId) {
        return array();
    }
    if (!
is_array($aUserId)) {
        
$aUserId=array($aUserId);
    }
    
$aUserId=array_unique($aUserId);
    
$aNotes=array();
    
$s=join(',',$aUserId);
    if (
false === ($data $this->Cache_Get("user_notes_{$sUserId}_id_{$s}"))) {
        
$data $this->oMapper->GetUserNotesByArrayUserId($aUserId,$sUserId);
        foreach (
$data as $oNote) {
            
$aNotes[$oNote->getTargetUserId()]=$oNote;
        }

        
$this->Cache_Set($aNotes"user_notes_{$sUserId}_id_{$s}", array("user_note_change_by_user_{$sUserId}"), 60*60*24*1);
        return 
$aNotes;
    }
    return 
$data;
}

Возвращает список заметок пользователя по ID целевых юзеров

GetUserNotesByUserId() method
public array('collection'=>array,'count'=>int) GetUserNotesByUserId(int $iUserId, int $iCurrPage, int $iPerPage)
$iUserId int ID пользователя
$iCurrPage int Номер страницы
$iPerPage int Количество элементов на страницу
{return} array('collection'=>array,'count'=>int)
Source Code: /classes/modules/user/User.class.php#1358 (show)
public function GetUserNotesByUserId($iUserId,$iCurrPage,$iPerPage) {
    
$aResult=$this->oMapper->GetUserNotesByUserId($iUserId,$iCount,$iCurrPage,$iPerPage);
    
/**
     * Цепляем пользователей
     */
    
$aUserId=array();
    foreach(
$aResult as $oNote) {
        
$aUserId[]=$oNote->getTargetUserId();
    }
    
$aUsers=$this->GetUsersAdditionalData($aUserId,array());
    foreach(
$aResult as $oNote) {
        if (isset(
$aUsers[$oNote->getTargetUserId()])) {
            
$oNote->setTargetUser($aUsers[$oNote->getTargetUserId()]);
        } else {
            
$oNote->setTargetUser(Engine::GetEntity('User')); // пустого пользователя во избеания ошибок, т.к. пользователь всегда должен быть
        
}
    }
    return array(
'collection'=>$aResult,'count'=>$iCount);
}

Возвращает список заметок пользователя

GetUsersAdditionalData() method
public array GetUsersAdditionalData(array $aUserId, array|null $aAllowData=NULL)
$aUserId array Список ID пользователей
$aAllowData array|null Список типод дополнительных данных для подгрузки у пользователей
{return} array
Source Code: /classes/modules/user/User.class.php#118 (show)
public function GetUsersAdditionalData($aUserId,$aAllowData=null) {
    if (
is_null($aAllowData)) {
        
$aAllowData=array('vote','session','friend','geo_target','note');
    }
    
func_array_simpleflip($aAllowData);
    if (!
is_array($aUserId)) {
        
$aUserId=array($aUserId);
    }
    
/**
     * Получаем юзеров
     */
    
$aUsers=$this->GetUsersByArrayId($aUserId);
    
/**
     * Получаем дополнительные данные
     */
    
$aSessions=array();
    
$aFriends=array();
    
$aVote=array();
    
$aGeoTargets=array();
    
$aNotes=array();
    if (isset(
$aAllowData['session'])) {
        
$aSessions=$this->GetSessionsByArrayId($aUserId);
    }
    if (isset(
$aAllowData['friend']) and $this->oUserCurrent) {
        
$aFriends=$this->GetFriendsByArray($aUserId,$this->oUserCurrent->getId());
    }

    if (isset(
$aAllowData['vote']) and $this->oUserCurrent) {
        
$aVote=$this->Vote_GetVoteByArray($aUserId,'user',$this->oUserCurrent->getId());
    }
    if (isset(
$aAllowData['geo_target'])) {
        
$aGeoTargets=$this->Geo_GetTargetsByTargetArray('user',$aUserId);
    }
    if (isset(
$aAllowData['note']) and $this->oUserCurrent) {
        
$aNotes=$this->GetUserNotesByArray($aUserId,$this->oUserCurrent->getId());
    }
    
/**
     * Добавляем данные к результату
     */
    
foreach ($aUsers as $oUser) {
        if (isset(
$aSessions[$oUser->getId()])) {
            
$oUser->setSession($aSessions[$oUser->getId()]);
        } else {
            
$oUser->setSession(null); // или $oUser->setSession(new ModuleUser_EntitySession());
        
}
        if (
$aFriends&&isset($aFriends[$oUser->getId()])) {
            
$oUser->setUserFriend($aFriends[$oUser->getId()]);
        } else {
            
$oUser->setUserFriend(null);
        }

        if (isset(
$aVote[$oUser->getId()])) {
            
$oUser->setVote($aVote[$oUser->getId()]);
        } else {
            
$oUser->setVote(null);
        }
        if (isset(
$aGeoTargets[$oUser->getId()])) {
            
$aTargets=$aGeoTargets[$oUser->getId()];
            
$oUser->setGeoTarget(isset($aTargets[0]) ? $aTargets[0] : null);
        } else {
            
$oUser->setGeoTarget(null);
        }
        if (isset(
$aAllowData['note'])) {
            if (isset(
$aNotes[$oUser->getId()])) {
                
$oUser->setUserNote($aNotes[$oUser->getId()]);
            } else {
                
$oUser->setUserNote(false);
            }
        }
    }

    return 
$aUsers;
}

Получает дополнительные данные(объекты) для юзеров по их ID

GetUsersByArrayId() method
public array GetUsersByArrayId(array $aUserId)
$aUserId array Список ID пользователей
{return} array
Source Code: /classes/modules/user/User.class.php#197 (show)
public function GetUsersByArrayId($aUserId) {
    if (!
$aUserId) {
        return array();
    }
    if (
Config::Get('sys.cache.solid')) {
        return 
$this->GetUsersByArrayIdSolid($aUserId);
    }
    if (!
is_array($aUserId)) {
        
$aUserId=array($aUserId);
    }
    
$aUserId=array_unique($aUserId);
    
$aUsers=array();
    
$aUserIdNotNeedQuery=array();
    
/**
     * Делаем мульти-запрос к кешу
     */
    
$aCacheKeys=func_build_cache_keys($aUserId,'user_');
    if (
false !== ($data $this->Cache_Get($aCacheKeys))) {
        
/**
         * проверяем что досталось из кеша
         */
        
foreach ($aCacheKeys as $sValue => $sKey ) {
            if (
array_key_exists($sKey,$data)) {
                if (
$data[$sKey]) {
                    
$aUsers[$data[$sKey]->getId()]=$data[$sKey];
                } else {
                    
$aUserIdNotNeedQuery[]=$sValue;
                }
            }
        }
    }
    
/**
     * Смотрим каких юзеров не было в кеше и делаем запрос в БД
     */
    
$aUserIdNeedQuery=array_diff($aUserId,array_keys($aUsers));
    
$aUserIdNeedQuery=array_diff($aUserIdNeedQuery,$aUserIdNotNeedQuery);
    
$aUserIdNeedStore=$aUserIdNeedQuery;
    if (
$data $this->oMapper->GetUsersByArrayId($aUserIdNeedQuery)) {
        foreach (
$data as $oUser) {
            
/**
             * Добавляем к результату и сохраняем в кеш
             */
            
$aUsers[$oUser->getId()]=$oUser;
            
$this->Cache_Set($oUser"user_{$oUser->getId()}", array(), 60*60*24*4);
            
$aUserIdNeedStore=array_diff($aUserIdNeedStore,array($oUser->getId()));
        }
    }
    
/**
     * Сохраняем в кеш запросы не вернувшие результата
     */
    
foreach ($aUserIdNeedStore as $sId) {
        
$this->Cache_Set(null"user_{$sId}", array(), 60*60*24*4);
    }
    
/**
     * Сортируем результат согласно входящему массиву
     */
    
$aUsers=func_array_sort_by_keys($aUsers,$aUserId);
    return 
$aUsers;
}

Список юзеров по ID

GetUsersByArrayIdSolid() method
public array GetUsersByArrayIdSolid(array $aUserId)
$aUserId array Список ID пользователей
{return} array
Source Code: /classes/modules/user/User.class.php#271 (show)
public function GetUsersByArrayIdSolid($aUserId) {
    if (!
is_array($aUserId)) {
        
$aUserId=array($aUserId);
    }
    
$aUserId=array_unique($aUserId);
    
$aUsers=array();
    
$s=join(',',$aUserId);
    if (
false === ($data $this->Cache_Get("user_id_{$s}"))) {
        
$data $this->oMapper->GetUsersByArrayId($aUserId);
        foreach (
$data as $oUser) {
            
$aUsers[$oUser->getId()]=$oUser;
        }
        
$this->Cache_Set($aUsers"user_id_{$s}", array("user_update","user_new"), 60*60*24*1);
        return 
$aUsers;
    }
    return 
$data;
}

Получение пользователей по списку ID используя общий кеш

GetUsersByDateLast() method
public array GetUsersByDateLast(int $iLimit=20)
$iLimit int Количество
{return} array
Source Code: /classes/modules/user/User.class.php#632 (show)
public function GetUsersByDateLast($iLimit=20) {
    if (
$this->IsAuthorization()) {
        
$data=$this->oMapper->GetUsersByDateLast($iLimit);
    } elseif (
false === ($data $this->Cache_Get("user_date_last_{$iLimit}"))) {
        
$data $this->oMapper->GetUsersByDateLast($iLimit);
        
$this->Cache_Set($data"user_date_last_{$iLimit}", array("user_session_update"), 60*60*24*2);
    }
    
$data=$this->GetUsersAdditionalData($data);
    return 
$data;
}

Получить список юзеров по дате последнего визита

GetUsersByDateRegister() method
public array GetUsersByDateRegister(int $iLimit=20)
$iLimit int Количество
{return} array
Source Code: /classes/modules/user/User.class.php#667 (show)
public function GetUsersByDateRegister($iLimit=20) {
    
$aResult=$this->GetUsersByFilter(array('activate'=>1),array('id'=>'desc'),1,$iLimit);
    return 
$aResult['collection'];
}

Получить список юзеров по дате регистрации

GetUsersByFilter() method
public array('collection'=>array,'count'=>int) GetUsersByFilter(array $aFilter, array $aOrder, int $iCurrPage, int $iPerPage, array $aAllowData=NULL)
$aFilter array Фильтр
$aOrder array Сортировка
$iCurrPage int Номер страницы
$iPerPage int Количество элментов на страницу
$aAllowData array Список типо данных для подгрузки к пользователям
{return} array('collection'=>array,'count'=>int)
Source Code: /classes/modules/user/User.class.php#652 (show)
public function GetUsersByFilter($aFilter,$aOrder,$iCurrPage,$iPerPage,$aAllowData=null) {
    
$sKey="user_filter_".serialize($aFilter).serialize($aOrder)."_{$iCurrPage}_{$iPerPage}";
    if (
false === ($data $this->Cache_Get($sKey))) {
        
$data = array('collection'=>$this->oMapper->GetUsersByFilter($aFilter,$aOrder,$iCount,$iCurrPage,$iPerPage),'count'=>$iCount);
        
$this->Cache_Set($data$sKey, array("user_update","user_new"), 60*60*24*2);
    }
    
$data['collection']=$this->GetUsersAdditionalData($data['collection'],$aAllowData);
    return 
$data;
}

Возвращает список пользователей по фильтру

GetUsersByLoginLike() method
public array GetUsersByLoginLike(string $sUserLogin, int $iLimit)
$sUserLogin string Логин
$iLimit int Количество
{return} array
Source Code: /classes/modules/user/User.class.php#698 (show)
public function GetUsersByLoginLike($sUserLogin,$iLimit) {
    if (
false === ($data $this->Cache_Get("user_like_{$sUserLogin}_{$iLimit}"))) {
        
$data $this->oMapper->GetUsersByLoginLike($sUserLogin,$iLimit);
        
$this->Cache_Set($data"user_like_{$sUserLogin}_{$iLimit}", array("user_new"), 60*60*24*2);
    }
    
$data=$this->GetUsersAdditionalData($data);
    return 
$data;
}

Получить список юзеров по первым буквам логина

GetUsersFriend() method
public array GetUsersFriend(int $sUserId, int $iPage=1, int $iPerPage=10)
$sUserId int ID пользователя
$iPage int Номер страницы
$iPerPage int Количество элементов на страницу
{return} array
Source Code: /classes/modules/user/User.class.php#880 (show)
public function GetUsersFriend($sUserId,$iPage=1,$iPerPage=10) {
    
$sKey="user_friend_{$sUserId}_{$iPage}_{$iPerPage}";
    if (
false === ($data $this->Cache_Get($sKey))) {
        
$data = array('collection'=>$this->oMapper->GetUsersFriend($sUserId,$iCount,$iPage,$iPerPage),'count'=>$iCount);
        
$this->Cache_Set($data$sKey, array("friend_change_user_{$sUserId}"), 60*60*24*2);
    }
    
$data['collection']=$this->GetUsersAdditionalData($data['collection']);
    return 
$data;
}

Получает список друзей

GetUsersInvite() method
public array GetUsersInvite(int $sUserId)
$sUserId int ID пользователя
{return} array
Source Code: /classes/modules/user/User.class.php#990 (show)
public function GetUsersInvite($sUserId) {
    if (
false === ($data $this->Cache_Get("users_invite_{$sUserId}"))) {
        
$data $this->oMapper->GetUsersInvite($sUserId);
        
$this->Cache_Set($data"users_invite_{$sUserId}", array("invate_new_from_{$sUserId}"), 60*60*24*1);
    }
    
$data=$this->GetUsersAdditionalData($data);
    return 
$data;
}

Получает список приглашенных юзеров

Init() method
public void Init()
Source Code: /classes/modules/user/User.class.php#64 (show)
public function Init() {
    
$this->oMapper=Engine::GetMapper(__CLASS__);
    
/**
     * Проверяем есть ли у юзера сессия, т.е. залогинен или нет
     */
    
$sUserId=$this->Session_Get('user_id');
    if (
$sUserId and $oUser=$this->GetUserById($sUserId) and $oUser->getActivate()) {
        if (
$this->oSession=$oUser->getSession()) {
            
/**
             * Сюда можно вставить условие на проверку айпишника сессии
             */
            
$this->oUserCurrent=$oUser;
        }
    }
    
/**
     * Запускаем автозалогинивание
     * В куках стоит время на сколько запоминать юзера
     */
    
$this->AutoLogin();
    
/**
     * Обновляем сессию
     */
    
if (isset($this->oSession)) {
        
$this->UpdateSession();
    }
}

Инициализация

IsAuthorization() method
public bool IsAuthorization()
{return} bool
Source Code: /classes/modules/user/User.class.php#550 (show)
public function IsAuthorization() {
    if (
$this->oUserCurrent) {
        return 
true;
    } else {
        return 
false;
    }
}

Авторизован ли юзер

Logout() method
public void Logout()
Source Code: /classes/modules/user/User.class.php#569 (show)
public function Logout() {
    
$this->oUserCurrent=null;
    
$this->oSession=null;
    
/**
     * Дропаем из сессии
     */
    
$this->Session_Drop('user_id');
    
/**
     * Дропаем куку
     */
    
setcookie('key','',1,Config::Get('sys.cookie.path'),Config::Get('sys.cookie.host'));
}

Разлогинивание

MakeUserChangemail() method
public bool|ModuleUser_EntityChangemail MakeUserChangemail(ModuleUser_EntityUser $oUser, string $sMailNew)
$oUser ModuleUser_EntityUser Объект пользователя
$sMailNew string Новый емайл
{return} bool|ModuleUser_EntityChangemail
Source Code: /classes/modules/user/User.class.php#1529 (show)
public function MakeUserChangemail($oUser,$sMailNew) {
    
$oChangemail=Engine::GetEntity('ModuleUser_EntityChangemail');
    
$oChangemail->setUserId($oUser->getId());
    
$oChangemail->setDateAdd(date("Y-m-d H:i:s"));
    
$oChangemail->setDateExpired(date("Y-m-d H:i:s",time()+3*24*60*60)); // 3 дня для смены емайла
    
$oChangemail->setMailFrom($oUser->getMail() ? $oUser->getMail() : '');
    
$oChangemail->setMailTo($sMailNew);
    
$oChangemail->setCodeFrom(func_generator(32));
    
$oChangemail->setCodeTo(func_generator(32));
    if (
$this->AddUserChangemail($oChangemail)) {
        
/**
         * Если у пользователя раньше не было емайла, то сразу шлем подтверждение на новый емайл
         */
        
if (!$oChangemail->getMailFrom()) {
            
$oChangemail->setConfirmFrom(1);
            
$this->User_UpdateUserChangemail($oChangemail);
            
/**
             * Отправляем уведомление на новый емайл
             */
            
$this->Notify_Send($oChangemail->getMailTo(),
                               
'notify.user_changemail_to.tpl',
                               
$this->Lang_Get('notify_subject_user_changemail'),
                               array(
                                   
'oUser' => $oUser,
                                   
'oChangemail' => $oChangemail,
                               ));

        } else {
            
/**
             * Отправляем уведомление на старый емайл
             */
            
$this->Notify_Send($oUser,
                               
'notify.user_changemail_from.tpl',
                               
$this->Lang_Get('notify_subject_user_changemail'),
                               array(
                                   
'oUser' => $oUser,
                                   
'oChangemail' => $oChangemail,
                               ));
        }
        return 
$oChangemail;
    }
    return 
false;
}

Формирование процесса смены емайла в профиле пользователя

SaveNote() method
public bool|ModuleUser_EntityNote SaveNote(ModuleUser_EntityNote $oNote)
$oNote ModuleUser_EntityNote Объект заметки
{return} bool|ModuleUser_EntityNote
Source Code: /classes/modules/user/User.class.php#1451 (show)
public function SaveNote($oNote) {
    if (!
$oNote->getDateAdd()) {
        
$oNote->setDateAdd(date("Y-m-d H:i:s"));
    }

    
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("user_note_change_by_user_{$oNote->getUserId()}"));
    if (
$oNoteOld=$this->GetUserNote($oNote->getTargetUserId(),$oNote->getUserId()) ) {
        
$oNoteOld->setText($oNote->getText());
        
$this->oMapper->UpdateUserNote($oNoteOld);
        return 
$oNoteOld;
    } else {
        if (
$iId=$this->oMapper->AddUserNote($oNote)) {
            
$oNote->setId($iId);
            return 
$oNote;
        }
    }
    return 
false;
}

Сохраняет заметку в БД, если ее нет то создает новую

Shutdown() method
public void Shutdown()
Source Code: /classes/modules/user/User.class.php#393 (show)
public function Shutdown() {
    if (
$this->oUserCurrent) {
        
$this->Viewer_Assign('iUserCurrentCountTalkNew',$this->Talk_GetCountTalkNew($this->oUserCurrent->getId()));
        
$this->Viewer_Assign('iUserCurrentCountTopicDraft',$this->Topic_GetCountDraftTopicsByUserId($this->oUserCurrent->getId()));
    }
    
$this->Viewer_Assign('oUserCurrent',$this->oUserCurrent);
}

При завершенни модуля загружаем в шалон объект текущего юзера

Update() method
public bool Update(ModuleUser_EntityUser $oUser)
$oUser ModuleUser_EntityUser Объект пользователя
{return} bool
Source Code: /classes/modules/user/User.class.php#486 (show)
public function Update(ModuleUser_EntityUser $oUser) {
    
//чистим зависимые кеши
    
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array('user_update'));
    
$this->Cache_Delete("user_{$oUser->getId()}");
    return 
$this->oMapper->Update($oUser);
}

Обновляет юзера

UpdateFriend() method
public bool UpdateFriend(ModuleUser_EntityFriend $oFriend)
$oFriend ModuleUser_EntityFriend Объект дружбы(связи пользователей)
{return} bool
Source Code: /classes/modules/user/User.class.php#865 (show)
public function UpdateFriend(ModuleUser_EntityFriend $oFriend) {
    
//чистим зависимые кеши
    
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("friend_change_user_{$oFriend->getUserFrom()}","friend_change_user_{$oFriend->getUserTo()}"));
    
$this->Cache_Delete("user_friend_{$oFriend->getUserFrom()}_{$oFriend->getUserTo()}");
    
$this->Cache_Delete("user_friend_{$oFriend->getUserTo()}_{$oFriend->getUserFrom()}");
    return 
$this->oMapper->UpdateFriend($oFriend);
}

Обновляет информацию о друге

UpdateInvite() method
public bool UpdateInvite(ModuleUser_EntityInvite $oInvite)
$oInvite ModuleUser_EntityInvite бъект инвайта
{return} bool
Source Code: /classes/modules/user/User.class.php#932 (show)
public function UpdateInvite(ModuleUser_EntityInvite $oInvite) {
    
//чистим зависимые кеши
    
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("invate_new_to_{$oInvite->getUserToId()}","invate_new_from_{$oInvite->getUserFromId()}"));
    return 
$this->oMapper->UpdateInvite($oInvite);
}

Обновляет инвайт

UpdateReminder() method
public bool UpdateReminder(ModuleUser_EntityReminder $oReminder)
$oReminder ModuleUser_EntityReminder Объект восстановления пароля
{return} bool
Source Code: /classes/modules/user/User.class.php#1026 (show)
public function UpdateReminder(ModuleUser_EntityReminder $oReminder) {
    return 
$this->oMapper->UpdateReminder($oReminder);
}

Сохраняем воспомнинание(восстановление) пароля

UpdateSession() method
protected void UpdateSession()
Source Code: /classes/modules/user/User.class.php#585 (show)
protected function UpdateSession() {
    
$this->oSession->setDateLast(date("Y-m-d H:i:s"));
    
$this->oSession->setIpLast(func_getIp());
    if (
false === ($data $this->Cache_Get("user_session_{$this->oSession->getUserId()}"))) {
        
$data=array(
            
'time'=>time(),
            
'session'=>$this->oSession
        
);
    } else {
        
$data['session']=$this->oSession;
    }
    if (!
Config::Get('sys.cache.use') or $data['time']<time()-60*10) {
        
$data['time']=time();
        
$this->oMapper->UpdateSession($this->oSession);
        
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array('user_session_update'));
    }
    
$this->Cache_Set($data"user_session_{$this->oSession->getUserId()}", array(), 60*60*24*4);
}

Обновление данных сессии Важный момент: сессию обновляем в кеше и раз в 10 минут скидываем в БД

UpdateUserChangemail() method
public int UpdateUserChangemail(ModuleUser_EntityChangemail $oChangemail)
$oChangemail ModuleUser_EntityChangemail Объект смены емайла
{return} int
Source Code: /classes/modules/user/User.class.php#1501 (show)
public function UpdateUserChangemail($oChangemail) {
    return 
$this->oMapper->UpdateUserChangemail($oChangemail);
}

Обновляет запись о смене емайла

UploadAvatar() method
public string|bool UploadAvatar(string $sFileTmp, ModuleUser_EntityUser $oUser, array $aSize=array ( ))
$sFileTmp string Серверный путь до временного аватара
$oUser ModuleUser_EntityUser Объект пользователя
$aSize array Размер области из которой нужно вырезать картинку - array('x1'=>0,'y1'=>0,'x2'=>100,'y2'=>100)
{return} string|bool
Source Code: /classes/modules/user/User.class.php#1046 (show)
public function UploadAvatar($sFileTmp,$oUser,$aSize=array()) {
    if (!
file_exists($sFileTmp)) {
        return 
false;
    }
    
$sPath $this->Image_GetIdDir($oUser->getId());
    
$aParams=$this->Image_BuildParams('avatar');

    
/**
     * Срезаем квадрат
     */
    
$oImage $this->Image_CreateImageObject($sFileTmp);
    
/**
     * Если объект изображения не создан,
     * возвращаем ошибку
     */
    
if($sError=$oImage->get_last_error()) {
        
// Вывод сообщения об ошибки, произошедшей при создании объекта изображения
        // $this->Message_AddError($sError,$this->Lang_Get('error'));
        
@unlink($sFileTmp);
        return 
false;
    }

    if (!
$aSize) {
        
$oImage $this->Image_CropSquare($oImage);
        
$oImage->set_jpg_quality($aParams['jpg_quality']);
        
$oImage->output(null,$sFileTmp);
    } else {
        
$iWSource=$oImage->get_image_params('width');
        
$iHSource=$oImage->get_image_params('height');
        
/**
         * Достаем переменные x1 и т.п. из $aSize
         */
        
extract($aSize,EXTR_PREFIX_SAME,'ops');
        if (
$x1>$x2) {
            
// меняем значения переменных
            
$x1 $x1 $x2;
            
$x2 $x1 $x2;
            
$x1 $x1 $x2;
        }
        if (
$y1>$y2) {
            
$y1 $y1 $y2;
            
$y2 $y1 $y2;
            
$y1 $y1 $y2;
        }
        if (
$x1<0) {
            
$x1=0;
        }
        if (
$y1<0) {
            
$y1=0;
        }
        if (
$x2>$iWSource) {
            
$x2=$iWSource;
        }
        if (
$y2>$iHSource) {
            
$y2=$iHSource;
        }

        
$iW=$x2-$x1;
        
// Допускаем минимальный клип в 32px (исключая маленькие изображения)
        
if ($iW<32 && $x1+32<=$iWSource) {
            
$iW=32;
        }
        
$iH=$iW;
        if (
$iH+$y1>$iHSource) {
            
$iH=$iHSource-$y1;
        }
        
$oImage->crop($iW,$iH,$x1,$y1);
        
$oImage->output(null,$sFileTmp);
    }

    if (
$sFileAvatar=$this->Image_Resize($sFileTmp,$sPath,'avatar_100x100',Config::Get('view.img_max_width'),Config::Get('view.img_max_height'),100,100,false,$aParams)) {
        
$aSize=Config::Get('module.user.avatar_size');
        foreach (
$aSize as $iSize) {
            if (
$iSize==0) {
                
$this->Image_Resize($sFileTmp,$sPath,'avatar',Config::Get('view.img_max_width'),Config::Get('view.img_max_height'),null,null,false,$aParams);
            } else {
                
$this->Image_Resize($sFileTmp,$sPath,"avatar_{$iSize}x{$iSize}",Config::Get('view.img_max_width'),Config::Get('view.img_max_height'),$iSize,$iSize,false,$aParams);
            }
        }
        @
unlink($sFileTmp);
        
/**
         * Если все нормально, возвращаем расширение загруженного аватара
         */
        
return $this->Image_GetWebPath($sFileAvatar);
    }
    @
unlink($sFileTmp);
    
/**
     * В случае ошибки, возвращаем false
     */
    
return false;
}

Загрузка аватара пользователя

UploadFoto() method
public string|bool UploadFoto(string $sFileTmp, ModuleUser_EntityUser $oUser, array $aSize=array ( ))
$sFileTmp string Серверный путь до временной фотографии
$oUser ModuleUser_EntityUser Объект пользователя
$aSize array Размер области из которой нужно вырезать картинку - array('x1'=>0,'y1'=>0,'x2'=>100,'y2'=>100)
{return} string|bool
Source Code: /classes/modules/user/User.class.php#1161 (show)
public function UploadFoto($sFileTmp,$oUser,$aSize=array()) {
    if (!
file_exists($sFileTmp)) {
        return 
false;
    }
    
$sDirUpload=$this->Image_GetIdDir($oUser->getId());
    
$aParams=$this->Image_BuildParams('foto');


    if (
$aSize) {
        
$oImage $this->Image_CreateImageObject($sFileTmp);
        
/**
         * Если объект изображения не создан,
         * возвращаем ошибку
         */
        
if($sError=$oImage->get_last_error()) {
            
// Вывод сообщения об ошибки, произошедшей при создании объекта изображения
            // $this->Message_AddError($sError,$this->Lang_Get('error'));
            
@unlink($sFileTmp);
            return 
false;
        }

        
$iWSource=$oImage->get_image_params('width');
        
$iHSource=$oImage->get_image_params('height');
        
/**
         * Достаем переменные x1 и т.п. из $aSize
         */
        
extract($aSize,EXTR_PREFIX_SAME,'ops');
        if (
$x1>$x2) {
            
// меняем значения переменных
            
$x1 $x1 $x2;
            
$x2 $x1 $x2;
            
$x1 $x1 $x2;
        }
        if (
$y1>$y2) {
            
$y1 $y1 $y2;
            
$y2 $y1 $y2;
            
$y1 $y1 $y2;
        }
        if (
$x1<0) {
            
$x1=0;
        }
        if (
$y1<0) {
            
$y1=0;
        }
        if (
$x2>$iWSource) {
            
$x2=$iWSource;
        }
        if (
$y2>$iHSource) {
            
$y2=$iHSource;
        }

        
$iW=$x2-$x1;
        
// Допускаем минимальный клип в 32px (исключая маленькие изображения)
        
if ($iW<32 && $x1+32<=$iWSource) {
            
$iW=32;
        }
        
$iH=$y2-$y1;
        
$oImage->crop($iW,$iH,$x1,$y1);
        
$oImage->output(null,$sFileTmp);
    }

    if (
$sFileFoto=$this->Image_Resize($sFileTmp,$sDirUpload,func_generator(6),Config::Get('view.img_max_width'),Config::Get('view.img_max_height'),Config::Get('module.user.profile_photo_width'),null,true,$aParams)) {
        @
unlink($sFileTmp);
        
/**
         * удаляем старое фото
         */
        
$this->DeleteFoto($oUser);
        return 
$this->Image_GetWebPath($sFileFoto);
    }
    @
unlink($sFileTmp);
    return 
false;
}

загрузка фотографии пользователя

addUserField() method
public bool addUserField(ModuleUser_EntityField $oField)
$oField ModuleUser_EntityField Объект пользовательского поля
{return} bool
Source Code: /classes/modules/user/User.class.php#1300 (show)
public function addUserField($oField) {
    return 
$this->oMapper->addUserField($oField);
}

Добавить поле

deleteUserField() method
public bool deleteUserField(int $iId)
$iId int ID пользовательского поля
{return} bool
Source Code: /classes/modules/user/User.class.php#1318 (show)
public function deleteUserField($iId) {
    return 
$this->oMapper->deleteUserField($iId);
}

Удалить поле

getUserFieldValueByName() method
public string getUserFieldValueByName(int $iUserId, string $sName)
$iUserId int ID пользователя
$sName string Имя поля
{return} string
Source Code: /classes/modules/user/User.class.php#1280 (show)
public function getUserFieldValueByName($iUserId$sName) {
    return 
$this->oMapper->getUserFieldValueByName($iUserId$sName);
}

Получить по имени поля его значение дял определённого пользователя

getUserFields() method
public array getUserFields(array|null $aType=NULL)
$aType array|null Типы полей, null - все типы
{return} array
Source Code: /classes/modules/user/User.class.php#1259 (show)
public function getUserFields($aType=null) {
    return 
$this->oMapper->getUserFields($aType);
}

Получить дополнительные поля профиля пользователя

getUserFieldsValues() method
public array getUserFieldsValues(int $iUserId, bool $bOnlyNoEmpty=true, array $aType=array ( 0 => '', ))
$iUserId int ID пользователя
$bOnlyNoEmpty bool Загружать только непустые поля
$aType array Типы полей, null - все типы
{return} array
Source Code: /classes/modules/user/User.class.php#1270 (show)
public function getUserFieldsValues($iUserId$bOnlyNoEmpty true$aType=array('')) {
    return 
$this->oMapper->getUserFieldsValues($iUserId$bOnlyNoEmpty$aType);
}

Получить значения дополнительных полей профиля пользователя

setUserFieldsValues() method
public bool setUserFieldsValues(int $iUserId, array $aFields, int $iCountMax=1)
$iUserId int ID пользователя
$aFields array Ассоциативный массив полей id => value
$iCountMax int Максимальное количество одинаковых полей
{return} bool
Source Code: /classes/modules/user/User.class.php#1291 (show)
public function setUserFieldsValues($iUserId$aFields$iCountMax=1) {
    return 
$this->oMapper->setUserFieldsValues($iUserId$aFields$iCountMax);
}

Установить значения дополнительных полей профиля пользователя

updateUserField() method
public bool updateUserField(ModuleUser_EntityField $oField)
$oField ModuleUser_EntityField Объект пользовательского поля
{return} bool
Source Code: /classes/modules/user/User.class.php#1309 (show)
public function updateUserField($oField) {
    return 
$this->oMapper->updateUserField($oField);
}

Изменить поле

userFieldExistsById() method
public bool userFieldExistsById(int $iId)
$iId int ID поля
{return} bool
Source Code: /classes/modules/user/User.class.php#1337 (show)
public function userFieldExistsById($iId) {
    return 
$this->oMapper->userFieldExistsById($iId);
}

Проверяет существует ли поле с таким ID

userFieldExistsByName() method
public bool userFieldExistsByName(string $sName, int|null $iId=NULL)
$sName string Имя поля
$iId int|null ID поля
{return} bool
Source Code: /classes/modules/user/User.class.php#1328 (show)
public function userFieldExistsByName($sName$iId null) {
    return 
$this->oMapper->userFieldExistsByName($sName$iId);
}

Проверяет существует ли поле с таким именем