ModuleUserfeed_MapperUserfeed

Package application.modules.userfeed
Inheritance class ModuleUserfeed_MapperUserfeed » Mapper » LsObject
Since 1.0
Source Code /application/classes/modules/userfeed/mapper/Userfeed.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
AttachBehavior() Присоединяет поведение к объекту LsObject
DetachBehavior() Отсоединяет поведение от объекта LsObject
GetBehavior() Возвращает объект поведения по его имени LsObject
GetBehaviors() Возвращает все объекты поведения LsObject
RemoveBehaviorHook() Удаляет хук поведения LsObject
RunBehaviorHook() Запускает хук поведения на выполнение LsObject
__call() Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля LsObject
__clone() При клонировании сбрасываем поведения LsObject
__construct() Передаем коннект к БД Mapper
__get() Обработка доступа к объекты поведения LsObject
getUserSubscribes() Получить список подписок пользователя ModuleUserfeed_MapperUserfeed
readFeed() Получить ленту топиков по подписке ModuleUserfeed_MapperUserfeed
subscribeUser() Подписать пользователя ModuleUserfeed_MapperUserfeed
unsubscribeUser() Отписать пользователя ModuleUserfeed_MapperUserfeed

Protected Methods

Hide inherited methods

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

Method Details

getUserSubscribes() method
public array getUserSubscribes(int $iUserId)
$iUserId int ID пользователя, для которого загружаются подписки
{return} array
Source Code: /application/classes/modules/userfeed/mapper/Userfeed.mapper.class.php#73 (show)
public function getUserSubscribes($iUserId)
{
    
$sql 'SELECT subscribe_type, target_id FROM ' Config::Get('db.table.userfeed_subscribe') . ' WHERE user_id = ?d';
    
$aSubscribes $this->oDb->select($sql$iUserId);
    
$aResult = array('blogs' => array(), 'users' => array());

    if (!
count($aSubscribes)) {
        return 
$aResult;
    }

    foreach (
$aSubscribes as $aSubscribe) {
        if (
$aSubscribe['subscribe_type'] == ModuleUserfeed::SUBSCRIBE_TYPE_BLOG) {
            
$aResult['blogs'][] = $aSubscribe['target_id'];
        } elseif (
$aSubscribe['subscribe_type'] == ModuleUserfeed::SUBSCRIBE_TYPE_USER) {
            
$aResult['users'][] = $aSubscribe['target_id'];
        }
    }
    return 
$aResult;
}

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

readFeed() method
public array readFeed(array $aUserSubscribes, int $iCount, int $iFromId)
$aUserSubscribes array Список подписок пользователя
$iCount int Число получаемых записей (если null, из конфига)
$iFromId int Получить записи, начиная с указанной
{return} array
Source Code: /application/classes/modules/userfeed/mapper/Userfeed.mapper.class.php#101 (show)
public function readFeed($aUserSubscribes$iCount$iFromId)
{
    
$sql "
                        SELECT         
                            t.topic_id                                        
                        FROM 
                            " 
Config::Get('db.table.topic') . " as t,
                            " 
Config::Get('db.table.blog') . " as b
                        WHERE 
                            t.topic_publish = 1 
                            AND t.blog_id=b.blog_id 
                            AND b.blog_type!='close' 
                            { AND t.topic_id < ?d }
                            AND ( 1=0 { OR t.blog_id IN (?a) } { OR t.user_id IN (?a) } )                                 
                        ORDER BY t.topic_id DESC    
                        { LIMIT 0, ?d }"
;

    
$aTopics $aTopics $this->oDb->selectCol($sql,
        
$iFromId $iFromId DBSIMPLE_SKIP,
        
count($aUserSubscribes['blogs']) ? $aUserSubscribes['blogs'] : DBSIMPLE_SKIP,
        
count($aUserSubscribes['users']) ? $aUserSubscribes['users'] : DBSIMPLE_SKIP,
        
$iCount $iCount DBSIMPLE_SKIP
    
);
    return 
$aTopics;
}

Получить ленту топиков по подписке

subscribeUser() method
public bool subscribeUser(int $iUserId, int $iSubscribeType, int $iTargetId)
$iUserId int ID подписываемого пользователя
$iSubscribeType int Тип подписки (см. константы класса)
$iTargetId int ID цели подписки
{return} bool
Source Code: /application/classes/modules/userfeed/mapper/Userfeed.mapper.class.php#38 (show)
public function subscribeUser($iUserId$iSubscribeType$iTargetId)
{
    
$sql 'SELECT * FROM ' Config::Get('db.table.userfeed_subscribe') . ' WHERE
            user_id = ?d AND subscribe_type = ?d AND target_id = ?d'
;
    if (!
$this->oDb->select($sql$iUserId$iSubscribeType$iTargetId)) {
        
$sql 'INSERT INTO ' Config::Get('db.table.userfeed_subscribe') . ' SET
                user_id = ?d, subscribe_type = ?d, target_id = ?d'
;
        
$this->oDb->query($sql$iUserId$iSubscribeType$iTargetId);
        return 
true;
    }
    return 
false;
}

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

unsubscribeUser() method
public bool unsubscribeUser(int $iUserId, int $iSubscribeType, int $iTargetId)
$iUserId int ID подписываемого пользователя
$iSubscribeType int Тип подписки (см. константы класса)
$iTargetId int ID цели подписки
{return} bool
Source Code: /application/classes/modules/userfeed/mapper/Userfeed.mapper.class.php#59 (show)
public function unsubscribeUser($iUserId$iSubscribeType$iTargetId)
{
    
$sql 'DELETE FROM ' Config::Get('db.table.userfeed_subscribe') . ' WHERE
            user_id = ?d AND subscribe_type = ?d AND target_id = ?d'
;
    
$res $this->oDb->query($sql$iUserId$iSubscribeType$iTargetId);
    return 
$this->IsSuccessful($res);
}

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