ModuleStream_MapperStream

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

Protected Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
oDb DbSimple_Generic_Database Объект подключения к базе данных Mapper

Public Methods

Hide inherited methods

MethodDescriptionDefined By
AddEvent() Добавление события в БД ModuleStream_MapperStream
GetCount() Количество событий для пользователя ModuleStream_MapperStream
GetEventByTarget() Получает событие по типу и его ID ModuleStream_MapperStream
IsSubscribe() Проверяет подписан ли пользователь на конкретного пользователя ModuleStream_MapperStream
Read() Чтение событий ModuleStream_MapperStream
UpdateEvent() Обновление события ModuleStream_MapperStream
__construct() Передаем коннект к БД Mapper
getTypesList() Получение типов событий, на которые подписан пользователь ModuleStream_MapperStream
getUserSubscribes() Получение списка пользователей, на которых подписан пользователь ModuleStream_MapperStream
subscribeUser() Подписать пользователя ModuleStream_MapperStream
switchUserEventType() Редактирование списка событий, на которые подписан юзер ModuleStream_MapperStream
unsubscribeUser() Отписать пользователя ModuleStream_MapperStream

Method Details

AddEvent() method
public int|bool AddEvent(ModuleStream_EntityEvent $oObject)
$oObject ModuleStream_EntityEvent
{return} int|bool
Source Code: /classes/modules/stream/mapper/Stream.mapper.class.php#31 (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: /classes/modules/stream/mapper/Stream.mapper.class.php#120 (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: /classes/modules/stream/mapper/Stream.mapper.class.php#46 (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,$sEventType,is_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: /classes/modules/stream/mapper/Stream.mapper.class.php#183 (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: /classes/modules/stream/mapper/Stream.mapper.class.php#95 (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: /classes/modules/stream/mapper/Stream.mapper.class.php#61 (show)
public function UpdateEvent($oObject) {
    
$sql "UPDATE ".Config::Get('db.table.stream_event')." SET ?a WHERE id = ?d ";
    return 
$this->oDb->query($sql,$oObject->_getData(array('publish')),$oObject->getId());
}

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

getTypesList() method
public array getTypesList(int $iUserId)
$iUserId int ID пользователя
{return} array
Source Code: /classes/modules/stream/mapper/Stream.mapper.class.php#71 (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: /classes/modules/stream/mapper/Stream.mapper.class.php#82 (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: /classes/modules/stream/mapper/Stream.mapper.class.php#156 (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: /classes/modules/stream/mapper/Stream.mapper.class.php#141 (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: /classes/modules/stream/mapper/Stream.mapper.class.php#171 (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);
}

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