2011-05-23 16:55:40 +03:00
|
|
|
|
<?php
|
2014-10-08 08:20:29 +03:00
|
|
|
|
/*
|
|
|
|
|
* LiveStreet CMS
|
|
|
|
|
* Copyright © 2013 OOO "ЛС-СОФТ"
|
|
|
|
|
*
|
|
|
|
|
* ------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* Official site: www.livestreetcms.com
|
|
|
|
|
* Contact e-mail: office@livestreetcms.com
|
|
|
|
|
*
|
|
|
|
|
* GNU General Public License, version 2:
|
|
|
|
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
|
|
|
*
|
|
|
|
|
* ------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* @link http://www.livestreetcms.com
|
|
|
|
|
* @copyright 2013 OOO "ЛС-СОФТ"
|
|
|
|
|
* @author Maxim Mzhelskiy <rus.engine@gmail.com>
|
|
|
|
|
*
|
|
|
|
|
*/
|
2011-05-23 16:55:40 +03:00
|
|
|
|
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Маппер для работы с БД
|
|
|
|
|
*
|
2014-10-08 08:20:29 +03:00
|
|
|
|
* @package application.modules.userfeed
|
2012-06-25 20:53:05 +03:00
|
|
|
|
* @since 1.0
|
|
|
|
|
*/
|
2014-10-08 11:49:34 +03:00
|
|
|
|
class ModuleUserfeed_MapperUserfeed extends Mapper
|
|
|
|
|
{
|
|
|
|
|
/**
|
|
|
|
|
* Подписать пользователя
|
|
|
|
|
*
|
|
|
|
|
* @param int $iUserId ID подписываемого пользователя
|
|
|
|
|
* @param int $iSubscribeType Тип подписки (см. константы класса)
|
|
|
|
|
* @param int $iTargetId ID цели подписки
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
|
|
|
|
public function subscribeUser($iUserId, $iSubscribeType, $iTargetId)
|
|
|
|
|
{
|
|
|
|
|
$sql = 'SELECT * FROM ' . Config::Get('db.table.userfeed_subscribe') . ' WHERE
|
2011-05-23 16:55:40 +03:00
|
|
|
|
user_id = ?d AND subscribe_type = ?d AND target_id = ?d';
|
2014-10-08 11:49:34 +03:00
|
|
|
|
if (!$this->oDb->select($sql, $iUserId, $iSubscribeType, $iTargetId)) {
|
|
|
|
|
$sql = 'INSERT INTO ' . Config::Get('db.table.userfeed_subscribe') . ' SET
|
2011-05-23 16:55:40 +03:00
|
|
|
|
user_id = ?d, subscribe_type = ?d, target_id = ?d';
|
2014-10-08 11:49:34 +03:00
|
|
|
|
$this->oDb->query($sql, $iUserId, $iSubscribeType, $iTargetId);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Отписать пользователя
|
|
|
|
|
*
|
|
|
|
|
* @param int $iUserId ID подписываемого пользователя
|
|
|
|
|
* @param int $iSubscribeType Тип подписки (см. константы класса)
|
|
|
|
|
* @param int $iTargetId ID цели подписки
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
|
|
|
|
public function unsubscribeUser($iUserId, $iSubscribeType, $iTargetId)
|
|
|
|
|
{
|
|
|
|
|
$sql = 'DELETE FROM ' . Config::Get('db.table.userfeed_subscribe') . ' WHERE
|
2011-05-23 16:55:40 +03:00
|
|
|
|
user_id = ?d AND subscribe_type = ?d AND target_id = ?d';
|
2014-10-08 11:49:34 +03:00
|
|
|
|
$res = $this->oDb->query($sql, $iUserId, $iSubscribeType, $iTargetId);
|
|
|
|
|
return $this->IsSuccessful($res);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Получить список подписок пользователя
|
|
|
|
|
*
|
|
|
|
|
* @param int $iUserId ID пользователя, для которого загружаются подписки
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
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;
|
|
|
|
|
}
|
2011-05-23 16:55:40 +03:00
|
|
|
|
|
2014-10-08 11:49:34 +03:00
|
|
|
|
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;
|
|
|
|
|
}
|
2011-05-23 16:55:40 +03:00
|
|
|
|
|
2014-10-08 11:49:34 +03:00
|
|
|
|
/**
|
|
|
|
|
* Получить ленту топиков по подписке
|
|
|
|
|
*
|
2014-12-01 09:09:09 +02:00
|
|
|
|
* @param $aUserId array Список ID юзеров
|
|
|
|
|
* @param $aBlogId array Список ID блогов
|
|
|
|
|
* @param $aBlogIdClose array Список ID закрытых блогов пользователя блогов
|
2014-11-25 12:01:57 +02:00
|
|
|
|
* @param $iCount
|
|
|
|
|
* @param $iCurrPage
|
|
|
|
|
* @param $iPerPage
|
2014-10-08 11:49:34 +03:00
|
|
|
|
* @return array
|
|
|
|
|
*/
|
2014-12-01 09:09:09 +02:00
|
|
|
|
public function ReadFeed($aUserId, $aBlogId, $aBlogIdClose, &$iCount, $iCurrPage, $iPerPage)
|
2014-10-08 11:49:34 +03:00
|
|
|
|
{
|
2014-11-25 12:01:57 +02:00
|
|
|
|
if (!is_array($aUserId)) {
|
2014-12-01 09:09:09 +02:00
|
|
|
|
$aUserId = array($aUserId);
|
2014-11-25 12:01:57 +02:00
|
|
|
|
}
|
|
|
|
|
if (!is_array($aBlogId)) {
|
2014-12-01 09:09:09 +02:00
|
|
|
|
$aBlogId = array($aBlogId);
|
|
|
|
|
}
|
|
|
|
|
if (!is_array($aBlogIdClose)) {
|
|
|
|
|
$aBlogIdClose = array($aBlogIdClose);
|
2014-11-25 12:01:57 +02:00
|
|
|
|
}
|
2014-10-08 11:49:34 +03:00
|
|
|
|
$sql = "
|
2011-09-16 16:40:13 +03:00
|
|
|
|
SELECT
|
|
|
|
|
t.topic_id
|
|
|
|
|
FROM
|
2014-10-08 11:49:34 +03:00
|
|
|
|
" . Config::Get('db.table.topic') . " as t,
|
|
|
|
|
" . Config::Get('db.table.blog') . " as b
|
2011-09-16 16:40:13 +03:00
|
|
|
|
WHERE
|
|
|
|
|
t.topic_publish = 1
|
|
|
|
|
AND t.blog_id=b.blog_id
|
2015-02-01 08:07:45 +02:00
|
|
|
|
AND (
|
|
|
|
|
b.blog_type!='close'
|
|
|
|
|
{ OR t.blog_id IN (?a) }
|
|
|
|
|
{ OR t.blog_id2 IN (?a) }
|
|
|
|
|
{ OR t.blog_id3 IN (?a) }
|
|
|
|
|
{ OR t.blog_id4 IN (?a) }
|
|
|
|
|
{ OR t.blog_id5 IN (?a) }
|
|
|
|
|
)
|
|
|
|
|
AND (
|
|
|
|
|
1=0
|
|
|
|
|
{ OR t.blog_id IN (?a) }
|
|
|
|
|
{ OR t.blog_id2 IN (?a) }
|
|
|
|
|
{ OR t.blog_id3 IN (?a) }
|
|
|
|
|
{ OR t.blog_id4 IN (?a) }
|
|
|
|
|
{ OR t.blog_id5 IN (?a) }
|
|
|
|
|
|
|
|
|
|
{ OR t.user_id IN (?a) }
|
|
|
|
|
)
|
2016-05-02 16:19:47 +03:00
|
|
|
|
ORDER BY t.topic_date_publish DESC
|
2014-11-25 12:01:57 +02:00
|
|
|
|
LIMIT ?d, ?d ";
|
2011-05-23 16:55:40 +03:00
|
|
|
|
|
2014-11-25 12:01:57 +02:00
|
|
|
|
$aTopics = array();
|
|
|
|
|
if ($aRows = $this->oDb->selectPage($iCount, $sql,
|
2014-12-01 09:09:09 +02:00
|
|
|
|
count($aBlogIdClose) ? $aBlogIdClose : DBSIMPLE_SKIP,
|
2015-02-01 08:07:45 +02:00
|
|
|
|
count($aBlogIdClose) ? $aBlogIdClose : DBSIMPLE_SKIP,
|
|
|
|
|
count($aBlogIdClose) ? $aBlogIdClose : DBSIMPLE_SKIP,
|
|
|
|
|
count($aBlogIdClose) ? $aBlogIdClose : DBSIMPLE_SKIP,
|
|
|
|
|
count($aBlogIdClose) ? $aBlogIdClose : DBSIMPLE_SKIP,
|
|
|
|
|
|
2014-11-25 12:01:57 +02:00
|
|
|
|
count($aBlogId) ? $aBlogId : DBSIMPLE_SKIP,
|
2015-02-01 08:07:45 +02:00
|
|
|
|
count($aBlogId) ? $aBlogId : DBSIMPLE_SKIP,
|
|
|
|
|
count($aBlogId) ? $aBlogId : DBSIMPLE_SKIP,
|
|
|
|
|
count($aBlogId) ? $aBlogId : DBSIMPLE_SKIP,
|
|
|
|
|
count($aBlogId) ? $aBlogId : DBSIMPLE_SKIP,
|
|
|
|
|
|
2014-11-25 12:01:57 +02:00
|
|
|
|
count($aUserId) ? $aUserId : DBSIMPLE_SKIP,
|
2014-12-01 09:09:09 +02:00
|
|
|
|
($iCurrPage - 1) * $iPerPage, $iPerPage)
|
|
|
|
|
) {
|
2014-11-25 12:01:57 +02:00
|
|
|
|
foreach ($aRows as $aTopic) {
|
|
|
|
|
$aTopics[] = $aTopic['topic_id'];
|
|
|
|
|
}
|
|
|
|
|
}
|
2014-10-08 11:49:34 +03:00
|
|
|
|
return $aTopics;
|
|
|
|
|
}
|
2011-05-23 16:55:40 +03:00
|
|
|
|
}
|