ModuleStream_MapperStream

Package application.modules.stream
Inheritance class ModuleStream_MapperStream » Mapper » LsObject
Since 1.0
Source Code /application/classes/modules/stream/mapper/Stream.mapper.class.php
Объект маппера для работы с БД

Protected Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
_aBehaviors Список поведений в виде готовых объектов, формируется автоматически LsObject
aBehaviors array Список поведений LsObject
oDb DbSimple_Database Объект подключения к базе данных Mapper

Public Methods

Hide inherited methods

MethodDescriptionDefined By
AddBehaviorHook() Добавляет хук поведения LsObject
AddEvent() Добавление события в БД ModuleStream_MapperStream
AttachBehavior() Присоединяет поведение к объекту LsObject
DetachBehavior() Отсоединяет поведение от объекта LsObject
GetBehavior() Возвращает объект поведения по его имени LsObject
GetBehaviors() Возвращает все объекты поведения LsObject
GetCount() Количество событий для пользователя ModuleStream_MapperStream
GetEventByTarget() Получает событие по типу и его ID ModuleStream_MapperStream
IsSubscribe() Проверяет подписан ли пользователь на конкретного пользователя ModuleStream_MapperStream
Read() Чтение событий ModuleStream_MapperStream
RemoveBehaviorHook() Удаляет хук поведения LsObject
RunBehaviorHook() Запускает хук поведения на выполнение LsObject
UpdateEvent() Обновление события ModuleStream_MapperStream
__call() Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля LsObject
__clone() При клонировании сбрасываем поведения LsObject
__construct() Передаем коннект к БД Mapper
__get() Обработка доступа к объекты поведения LsObject
getTypesList() Получение типов событий, на которые подписан пользователь ModuleStream_MapperStream
getUserSubscribes() Получение списка пользователей, на которых подписан пользователь ModuleStream_MapperStream
subscribeUser() Подписать пользователя ModuleStream_MapperStream
switchUserEventType() Редактирование списка событий, на которые подписан юзер ModuleStream_MapperStream
unsubscribeUser() Отписать пользователя ModuleStream_MapperStream

Protected Methods

Hide inherited methods

MethodDescriptionDefined By
IsSuccessful() Mapper
PrepareBehaviors() Инициализация поведений LsObject

Method Details

AddEvent() method
public int|bool AddEvent(ModuleStream_EntityEvent $oObject)
$oObject ModuleStream_EntityEvent
{return} int|bool
Source Code: /application/classes/modules/stream/mapper/Stream.mapper.class.php#36 (show)
public function AddEvent($oObject)
{
    
$sql "INSERT INTO " Config::Get('db.table.stream_event') . " SET ?a ";
    if (
$iId $this->oDb->query($sql$oObject->_getData())) {
        return 
$iId;
    }
    return 
false;
}

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

GetCount() method
public int GetCount(array $aEventTypes, array|null $aUserId)
$aEventTypes array Список типов событий
$aUserId array|null ID пользователя
{return} int
Source Code: /application/classes/modules/stream/mapper/Stream.mapper.class.php#142 (show)
public function GetCount($aEventTypes$aUserId)
{
    if (!
is_null($aUserId) and !is_array($aUserId)) {
        
$aUserId = array($aUserId);
    }
    
$sql 'SELECT count(*) as c FROM ' Config::Get('db.table.stream_event') . '
            WHERE
                event_type IN (?a)
                { AND user_id IN (?a) }
                AND publish = 1 '
;
    if (
$aRow $this->oDb->selectRow($sql$aEventTypes,
        (!
is_null($aUserId) and count($aUserId)) ? $aUserId DBSIMPLE_SKIP)
    ) {
        return 
$aRow['c'];
    }
    return 
0;
}

Количество событий для пользователя

GetEventByTarget() method
public ModuleStream_EntityEvent GetEventByTarget(string $sEventType, int $iTargetId, int|null $iUserId=NULL)
$sEventType string Тип
$iTargetId int ID владельца события
$iUserId int|null ID пользователя
{return} ModuleStream_EntityEvent
Source Code: /application/classes/modules/stream/mapper/Stream.mapper.class.php#53 (show)
public function GetEventByTarget($sEventType$iTargetId$iUserId null)
{
    
$sql "SELECT * FROM
                " 
Config::Get('db.table.stream_event') . "
            WHERE target_id = ?d AND event_type = ? { AND user_id = ?d } "
;
    if (
$aRow $this->oDb->selectRow($sql$iTargetId$sEventTypeis_null($iUserId) ? DBSIMPLE_SKIP $iUserId)
    ) {
        return 
Engine::GetEntity('ModuleStream_EntityEvent'$aRow);
    }
    return 
null;
}

Получает событие по типу и его ID

IsSubscribe() method
public bool IsSubscribe($iUserId $iUserId, $iTargetUserId $iTargetUserId)
$iUserId $iUserId ID пользователя
$iTargetUserId $iTargetUserId ID пользователя на которого подписан
{return} bool
Source Code: /application/classes/modules/stream/mapper/Stream.mapper.class.php#215 (show)
public function IsSubscribe($iUserId$iTargetUserId)
{
    
$sql 'SELECT * FROM ' Config::Get('db.table.stream_subscribe') . ' WHERE
            user_id = ?d AND target_user_id = ?d LIMIT 0,1'
;
    if (
$this->oDb->selectRow($sql$iUserId$iTargetUserId)) {
        return 
true;
    }
    return 
false;
}

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

Read() method
public array Read(array $aEventTypes, array|null $aUsersList, int $iCount, int $iFromId)
$aEventTypes array Список типов событий
$aUsersList array|null Список пользователей, чьи события читать
$iCount int Количество
$iFromId int ID события с которого начинать выборку
{return} array
Source Code: /application/classes/modules/stream/mapper/Stream.mapper.class.php#112 (show)
public function Read($aEventTypes$aUsersList$iCount$iFromId)
{
    
$sql 'SELECT * FROM ' Config::Get('db.table.stream_event') . '
            WHERE
                event_type IN (?a) 
                { AND user_id IN (?a) }
                AND publish = 1
                { AND id < ?d }    
            ORDER BY id DESC
            { LIMIT 0,?d }'
;

    
$aReturn = array();
    if (
$aRows $this->oDb->select($sql$aEventTypes,
        (!
is_null($aUsersList) and count($aUsersList)) ? $aUsersList DBSIMPLE_SKIP,
        !
is_null($iFromId) ? $iFromId DBSIMPLE_SKIP, !is_null($iCount) ? $iCount DBSIMPLE_SKIP)
    ) {
        foreach (
$aRows as $aRow) {
            
$aReturn[] = Engine::GetEntity('Stream_Event'$aRow);
        }
    }
    return 
$aReturn;
}

Чтение событий

UpdateEvent() method
public int UpdateEvent(ModuleStream_EntityEvent $oObject)
$oObject ModuleStream_EntityEvent Объект события
{return} int
Source Code: /application/classes/modules/stream/mapper/Stream.mapper.class.php#71 (show)
public function UpdateEvent($oObject)
{
    
$sql "UPDATE " Config::Get('db.table.stream_event') . " SET ?a WHERE id = ?d ";
    
$res $this->oDb->query($sql$oObject->_getData(array('publish')), $oObject->getId());
    return 
$this->IsSuccessful($res);
}

Обновление события

getTypesList() method
public array getTypesList(int $iUserId)
$iUserId int ID пользователя
{return} array
Source Code: /application/classes/modules/stream/mapper/Stream.mapper.class.php#84 (show)
public function getTypesList($iUserId)
{
    
$sql 'SELECT event_type FROM ' Config::Get('db.table.stream_user_type') . ' WHERE user_id = ?d';
    
$aRet $this->oDb->selectCol($sql$iUserId);
    return 
$aRet;
}

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

getUserSubscribes() method
public array getUserSubscribes(int $iUserId)
$iUserId int ID пользователя
{return} array
Source Code: /application/classes/modules/stream/mapper/Stream.mapper.class.php#97 (show)
public function getUserSubscribes($iUserId)
{
    
$sql 'SELECT target_user_id FROM ' Config::Get('db.table.stream_subscribe') . ' WHERE user_id = ?d';
    return 
$this->oDb->selectCol($sql$iUserId);
}

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

subscribeUser() method
public void subscribeUser(int $iUserId, int $iTargetUserId)
$iUserId int ID пользователя
$iTargetUserId int ID пользователя на которого подписываем
Source Code: /application/classes/modules/stream/mapper/Stream.mapper.class.php#184 (show)
public function subscribeUser($iUserId$iTargetUserId)
{
    
$sql 'SELECT * FROM ' Config::Get('db.table.stream_subscribe') . ' WHERE
            user_id = ?d AND target_user_id = ?d'
;
    if (!
$this->oDb->select($sql$iUserId$iTargetUserId)) {
        
$sql 'INSERT INTO ' Config::Get('db.table.stream_subscribe') . ' SET
                user_id = ?d, target_user_id = ?d'
;
        
$this->oDb->query($sql$iUserId$iTargetUserId);
    }
}

Подписать пользователя

switchUserEventType() method
public bool switchUserEventType(int $iUserId, string $sEventType)
$iUserId int ID пользователя
$sEventType string Тип
{return} bool
Source Code: /application/classes/modules/stream/mapper/Stream.mapper.class.php#167 (show)
public function switchUserEventType($iUserId$sEventType)
{
    
$sql 'SELECT * FROM ' Config::Get('db.table.stream_user_type') . ' WHERE user_id = ?d AND event_type = ?';
    if (
$this->oDb->select($sql$iUserId$sEventType)) {
        
$sql 'DELETE FROM ' Config::Get('db.table.stream_user_type') . ' WHERE user_id = ?d AND event_type = ?';
    } else {
        
$sql 'INSERT INTO  ' Config::Get('db.table.stream_user_type') . ' SET user_id = ?d , event_type = ?';
    }
    
$this->oDb->query($sql$iUserId$sEventType);
}

Редактирование списка событий, на которые подписан юзер

unsubscribeUser() method
public void unsubscribeUser(int $iUserId, int $iTargetUserId)
$iUserId int ID пользователя
$iTargetUserId int ID пользователя на которого подписываем
Source Code: /application/classes/modules/stream/mapper/Stream.mapper.class.php#201 (show)
public function unsubscribeUser($iUserId$iTargetUserId)
{
    
$sql 'DELETE FROM ' Config::Get('db.table.stream_subscribe') . ' WHERE
        user_id = ?d AND target_user_id = ?d'
;
    
$this->oDb->query($sql$iUserId$iTargetUserId);
}

Отписать пользователя