1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-07-01 14:05:07 +03:00
ifhub.club/classes/modules/userfeed/Userfeed.class.php
2011-05-30 14:14:56 +00:00

88 lines
3.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
class ModuleUserfeed extends Module
{
const SUBSCRIBE_TYPE_BLOG = 1; // Подписки на топики по блогу
const SUBSCRIBE_TYPE_USER = 2;// Подписки на топики по юзеру
protected $oMapper = null;
public function Init()
{
$this->oMapper=Engine::GetMapper(__CLASS__);
}
/**
* Подписать пользователя
* @param type $iUserId Id подписываемого пользователя
* @param type $iSubscribeType Тип подписки (см. константы класса)
* @param type $iTargetId Id цели подписки
*/
public function subscribeUser($iUserId, $iSubscribeType, $iTargetId)
{
return $this->oMapper->subscribeUser($iUserId, $iSubscribeType, $iTargetId);
}
/**
* Отписать пользователя
* @param type $iUserId Id подписываемого пользователя
* @param type $iSubscribeType Тип подписки (см. константы класса)
* @param type $iTargetId Id цели подписки
*/
public function unsubscribeUser($iUserId, $iSubscribeType, $iTargetId)
{
return $this->oMapper->unsubscribeUser($iUserId, $iSubscribeType, $iTargetId);
}
/**
* Обновить подписки пользователя
* @param type $iUserId Id подписываемого пользователя
* @param type $aUserSubscribes Массив подписок array('blogs' => array(), 'users'=> array())
* @param type $iType users или blogs если нужно обновить толкьо один тип подписки
* @return type
*/
public function updateSubscribes($iUserId, $aUserSubscribes, $iType = null)
{
return $this->oMapper->updateSubscribes($iUserId, $aUserSubscribes, $iType);
}
/**
* Получить ленту топиков по подписке
* @param type $iUserId Id пользователя, для которого получаем ленту
* @param type $iCount Число получаемых записей (если null, из конфига)
* @param type $iFromId Получить записи, начиная с указанной
* @return type
*/
public function read($iUserId, $iCount = null, $iFromId = null)
{
if (!$iCount) $iCount = Config::Get('module.userfeed.count_default');
$aUserSubscribes = $this->oMapper->getUserSubscribes($iUserId);
$aTopicsIds = $this->oMapper->readFeed($aUserSubscribes, $iCount, $iFromId);
return $this->Topic_getTopicsAdditionalData($aTopicsIds);
}
/**
* Получить список подписок пользователя
* @param type $iUserId Id пользователя, для которого загружаются подписки
* @return type
*/
public function getUserSubscribes($iUserId)
{
$aUserSubscribes = $this->oMapper->getUserSubscribes($iUserId);
$aResult = array('blogs' => array(), 'users' => array());
if (count($aUserSubscribes['blogs'])) {
$aBlogs = $this->Blog_getBlogsByArrayId($aUserSubscribes['blogs']);
foreach ($aBlogs as $oBlog) {
$aResult['blogs'][$oBlog->getId()] = $oBlog;
}
}
if (count($aUserSubscribes['users'])) {
$aUsers = $this->User_getUsersByArrayId($aUserSubscribes['users']);
foreach ($aUsers as $oUser) {
$aResult['users'][$oUser->getId()] = $oUser;
}
}
return $aResult;
}
}