mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-05-19 17:28:23 +03:00
Документация классов
This commit is contained in:
parent
05aeccda82
commit
d453781800
|
@ -18,11 +18,27 @@
|
|||
/**
|
||||
* Модуль для работы с топиками
|
||||
*
|
||||
* @package modules.topic
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleTopic extends Module {
|
||||
/**
|
||||
* Объект маппера
|
||||
*
|
||||
* @var ModuleTopic_MapperTopic
|
||||
*/
|
||||
protected $oMapperTopic;
|
||||
/**
|
||||
* Объект текущего пользователя
|
||||
*
|
||||
* @var ModuleUser_EntityUser|null
|
||||
*/
|
||||
protected $oUserCurrent=null;
|
||||
|
||||
/**
|
||||
* Список типов топика
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $aTopicTypes=array(
|
||||
'topic','link','question','photoset'
|
||||
);
|
||||
|
@ -37,12 +53,17 @@ class ModuleTopic extends Module {
|
|||
}
|
||||
/**
|
||||
* Возвращает список типов топика
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicTypes() {
|
||||
return $this->aTopicTypes;
|
||||
}
|
||||
/**
|
||||
* Добавляет в новый тип топика
|
||||
*
|
||||
* @param string $sType Новый тип
|
||||
* @return bool
|
||||
*/
|
||||
public function AddTopicType($sType) {
|
||||
if (!in_array($sType,$this->aTopicTypes)) {
|
||||
|
@ -54,7 +75,7 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Проверяет разрешен ли данный тип топика
|
||||
*
|
||||
* @param $sType
|
||||
* @param string $sType Тип
|
||||
* @return bool
|
||||
*/
|
||||
public function IsAllowTopicType($sType) {
|
||||
|
@ -63,6 +84,9 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получает дополнительные данные(объекты) для топиков по их ID
|
||||
*
|
||||
* @param array $aTopicId Список ID топиков
|
||||
* @param array|null $aAllowData Список типов дополнительных данных, которые нужно подключать к топикам
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicsAdditionalData($aTopicId,$aAllowData=null) {
|
||||
if (is_null($aAllowData)) {
|
||||
|
@ -164,8 +188,8 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Добавляет топик
|
||||
*
|
||||
* @param ModuleTopic_EntityTopic $oTopic
|
||||
* @return unknown
|
||||
* @param ModuleTopic_EntityTopic $oTopic Объект топика
|
||||
* @return ModuleTopic_EntityTopic|bool
|
||||
*/
|
||||
public function AddTopic(ModuleTopic_EntityTopic $oTopic) {
|
||||
if ($sId=$this->oMapperTopic->AddTopic($oTopic)) {
|
||||
|
@ -187,12 +211,11 @@ class ModuleTopic extends Module {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавление тега к топику
|
||||
*
|
||||
* @param ModuleTopic_EntityTopicTag $oTopicTag
|
||||
* @return mixed
|
||||
* @param ModuleTopic_EntityTopicTag $oTopicTag Объект тега топика
|
||||
* @return int
|
||||
*/
|
||||
public function AddTopicTag(ModuleTopic_EntityTopicTag $oTopicTag) {
|
||||
return $this->oMapperTopic->AddTopicTag($oTopicTag);
|
||||
|
@ -200,8 +223,8 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Удаляет теги у топика
|
||||
*
|
||||
* @param unknown_type $sTopicId
|
||||
* @return unknown
|
||||
* @param int $sTopicId ID топика
|
||||
* @return bool
|
||||
*/
|
||||
public function DeleteTopicTagsByTopicId($sTopicId) {
|
||||
return $this->oMapperTopic->DeleteTopicTagsByTopicId($sTopicId);
|
||||
|
@ -210,8 +233,8 @@ class ModuleTopic extends Module {
|
|||
* Удаляет топик.
|
||||
* Если тип таблиц в БД InnoDB, то удалятся всё связи по топику(комменты,голосования,избранное)
|
||||
*
|
||||
* @param unknown_type $oTopicId|$sTopicId
|
||||
* @return unknown
|
||||
* @param ModuleTopic_EntityTopic|int $oTopicId Объект топика или ID
|
||||
* @return bool
|
||||
*/
|
||||
public function DeleteTopic($oTopicId) {
|
||||
if ($oTopicId instanceof ModuleTopic_EntityTopic) {
|
||||
|
@ -237,7 +260,7 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Удаляет свзяанные с топика данные
|
||||
*
|
||||
* @param int $iTopicId
|
||||
* @param int $iTopicId ID топика
|
||||
* @return bool
|
||||
*/
|
||||
public function DeleteTopicAdditionalData($iTopicId) {
|
||||
|
@ -279,14 +302,13 @@ class ModuleTopic extends Module {
|
|||
$this->deleteTopicPhoto($oPhoto);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* Обновляет топик
|
||||
*
|
||||
* @param ModuleTopic_EntityTopic $oTopic
|
||||
* @return unknown
|
||||
* @param ModuleTopic_EntityTopic $oTopic Объект топика
|
||||
* @return bool
|
||||
*/
|
||||
public function UpdateTopic(ModuleTopic_EntityTopic $oTopic) {
|
||||
/**
|
||||
|
@ -338,22 +360,20 @@ class ModuleTopic extends Module {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Удаление контента топика по его номеру
|
||||
*
|
||||
* @param unknown_type $iTopicId
|
||||
* @return unknown
|
||||
* @param int $iTopicId ID топика
|
||||
* @return bool
|
||||
*/
|
||||
public function DeleteTopicContentByTopicId($iTopicId) {
|
||||
return $this->oMapperTopic->DeleteTopicContentByTopicId($iTopicId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить топик по айдишнику
|
||||
*
|
||||
* @param unknown_type $sId
|
||||
* @return unknown
|
||||
* @param int $sId ID топика
|
||||
* @return ModuleTopic_EntityTopic|null
|
||||
*/
|
||||
public function GetTopicById($sId) {
|
||||
$aTopics=$this->GetTopicsAdditionalData($sId);
|
||||
|
@ -365,7 +385,8 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получить список топиков по списку айдишников
|
||||
*
|
||||
* @param unknown_type $aTopicId
|
||||
* @param array $aTopicId Список ID топиков
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicsByArrayId($aTopicId) {
|
||||
if (!$aTopicId) {
|
||||
|
@ -430,8 +451,8 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получить список топиков по списку айдишников, но используя единый кеш
|
||||
*
|
||||
* @param unknown_type $aTopicId
|
||||
* @return unknown
|
||||
* @param array $aTopicId Список ID топиков
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicsByArrayIdSolid($aTopicId) {
|
||||
if (!is_array($aTopicId)) {
|
||||
|
@ -453,11 +474,10 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получает список топиков из избранного
|
||||
*
|
||||
* @param string $sUserId
|
||||
* @param int $iCount
|
||||
* @param int $iCurrPage
|
||||
* @param int $iPerPage
|
||||
* @return array
|
||||
* @param int $sUserId ID пользователя
|
||||
* @param int $iCurrPage Номер текущей страницы
|
||||
* @param int $iPerPage Количество элементов на страницу
|
||||
* @return array('collection'=>array,'count'=>int)
|
||||
*/
|
||||
public function GetTopicsFavouriteByUserId($sUserId,$iCurrPage,$iPerPage) {
|
||||
$aCloseTopics =array();
|
||||
|
@ -476,7 +496,7 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Возвращает число топиков в избранном
|
||||
*
|
||||
* @param string $sUserId
|
||||
* @param int $sUserId ID пользователя
|
||||
* @return int
|
||||
*/
|
||||
public function GetCountTopicsFavouriteByUserId($sUserId) {
|
||||
|
@ -488,10 +508,11 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Список топиков по фильтру
|
||||
*
|
||||
* @param array $aFilter
|
||||
* @param int $iPage
|
||||
* @param int $iPerPage
|
||||
* @return array
|
||||
* @param array $aFilter Фильтр
|
||||
* @param int $iPage Номер страницы
|
||||
* @param int $iPerPage Количество элементов на страницу
|
||||
* @param array|null $aAllowData Список типов данных для подгрузки в топики
|
||||
* @return array('collection'=>array,'count'=>int)
|
||||
*/
|
||||
public function GetTopicsByFilter($aFilter,$iPage=0,$iPerPage=0,$aAllowData=null) {
|
||||
$s=serialize($aFilter);
|
||||
|
@ -513,7 +534,7 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Количество топиков по фильтру
|
||||
*
|
||||
* @param array $aFilter
|
||||
* @param array $aFilter Фильтр
|
||||
* @return int
|
||||
*/
|
||||
public function GetCountTopicsByFilter($aFilter) {
|
||||
|
@ -527,7 +548,7 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Количество черновиков у пользователя
|
||||
*
|
||||
* @param $iUserId
|
||||
* @param int $iUserId ID пользователя
|
||||
* @return int
|
||||
*/
|
||||
public function GetCountDraftTopicsByUserId($iUserId) {
|
||||
|
@ -539,8 +560,8 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получает список хороших топиков для вывода на главную страницу(из всех блогов, как коллективных так и персональных)
|
||||
*
|
||||
* @param int $iPage
|
||||
* @param int $iPerPage
|
||||
* @param int $iPage Номер страницы
|
||||
* @param int $iPerPage Количество элементов на страницу
|
||||
* @param bool $bAddAccessible Указывает на необходимость добавить в выдачу топики,
|
||||
* из блогов доступных пользователю. При указании false,
|
||||
* в выдачу будут переданы только топики из общедоступных блогов.
|
||||
|
@ -573,8 +594,8 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получает список новых топиков, ограничение новизны по дате из конфига
|
||||
*
|
||||
* @param int $iPage
|
||||
* @param int $iPerPage
|
||||
* @param int $iPage Номер страницы
|
||||
* @param int $iPerPage Количество элементов на страницу
|
||||
* @param bool $bAddAccessible Указывает на необходимость добавить в выдачу топики,
|
||||
* из блогов доступных пользователю. При указании false,
|
||||
* в выдачу будут переданы только топики из общедоступных блогов.
|
||||
|
@ -603,8 +624,8 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получает список ВСЕХ новых топиков
|
||||
*
|
||||
* @param int $iPage
|
||||
* @param int $iPerPage
|
||||
* @param int $iPage Номер страницы
|
||||
* @param int $iPerPage Количество элементов на страницу
|
||||
* @param bool $bAddAccessible Указывает на необходимость добавить в выдачу топики,
|
||||
* из блогов доступных пользователю. При указании false,
|
||||
* в выдачу будут переданы только топики из общедоступных блогов.
|
||||
|
@ -631,9 +652,9 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получает список ВСЕХ обсуждаемых топиков
|
||||
*
|
||||
* @param int $iPage
|
||||
* @param int $iPerPage
|
||||
* @param int | string $sPeriod
|
||||
* @param int $iPage Номер страницы
|
||||
* @param int $iPerPage Количество элементов на страницу
|
||||
* @param int|string $sPeriod Период в виде секунд или конкретной даты
|
||||
* @param bool $bAddAccessible Указывает на необходимость добавить в выдачу топики,
|
||||
* из блогов доступных пользователю. При указании false,
|
||||
* в выдачу будут переданы только топики из общедоступных блогов.
|
||||
|
@ -669,9 +690,9 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получает список ВСЕХ рейтинговых топиков
|
||||
*
|
||||
* @param int $iPage
|
||||
* @param int $iPerPage
|
||||
* @param int | string $sPeriod
|
||||
* @param int $iPage Номер страницы
|
||||
* @param int $iPerPage Количество элементов на страницу
|
||||
* @param int|string $sPeriod Период в виде секунд или конкретной даты
|
||||
* @param bool $bAddAccessible Указывает на необходимость добавить в выдачу топики,
|
||||
* из блогов доступных пользователю. При указании false,
|
||||
* в выдачу будут переданы только топики из общедоступных блогов.
|
||||
|
@ -707,8 +728,8 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получает заданое число последних топиков
|
||||
*
|
||||
* @param unknown_type $iCount
|
||||
* @return unknown
|
||||
* @param int $iCount Количество
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicsLast($iCount) {
|
||||
$aFilter=array(
|
||||
|
@ -735,10 +756,11 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* список топиков из персональных блогов
|
||||
*
|
||||
* @param unknown_type $iPage
|
||||
* @param unknown_type $iPerPage
|
||||
* @param unknown_type $sShowType
|
||||
* @return unknown
|
||||
* @param int $iPage Номер страницы
|
||||
* @param int $iPerPage Количество элементов на страницу
|
||||
* @param string $sShowType Тип выборки топиков
|
||||
* @param string|int $sPeriod Период в виде секунд или конкретной даты
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicsPersonal($iPage,$iPerPage,$sShowType='good',$sPeriod=null) {
|
||||
if (is_numeric($sPeriod)) {
|
||||
|
@ -787,7 +809,7 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получает число новых топиков в персональных блогах
|
||||
*
|
||||
* @return unknown
|
||||
* @return int
|
||||
*/
|
||||
public function GetCountTopicsPersonalNew() {
|
||||
$sDate=date("Y-m-d H:00:00",time()-Config::Get('module.topic.new_time'));
|
||||
|
@ -803,11 +825,11 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получает список топиков по юзеру
|
||||
*
|
||||
* @param unknown_type $sUserId
|
||||
* @param unknown_type $iPublish
|
||||
* @param unknown_type $iPage
|
||||
* @param unknown_type $iPerPage
|
||||
* @return unknown
|
||||
* @param int $sUserId ID пользователя
|
||||
* @param int $iPublish Флаг публикации топика
|
||||
* @param int $iPage Номер страницы
|
||||
* @param int $iPerPage Количество элементов на страницу
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicsPersonalByUser($sUserId,$iPublish,$iPage,$iPerPage) {
|
||||
$aFilter=array(
|
||||
|
@ -824,13 +846,12 @@ class ModuleTopic extends Module {
|
|||
}
|
||||
return $this->GetTopicsByFilter($aFilter,$iPage,$iPerPage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает количество топиков которые создал юзер
|
||||
*
|
||||
* @param unknown_type $sUserId
|
||||
* @param unknown_type $iPublish
|
||||
* @return unknown
|
||||
* @param int $sUserId ID пользователя
|
||||
* @param int $iPublish Флаг публикации топика
|
||||
* @return array
|
||||
*/
|
||||
public function GetCountTopicsPersonalByUser($sUserId,$iPublish) {
|
||||
$aFilter=array(
|
||||
|
@ -852,12 +873,11 @@ class ModuleTopic extends Module {
|
|||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получает список идентификаторов топиков
|
||||
* из закрытых блогов по юзеру
|
||||
*
|
||||
* @param string $sUserId
|
||||
* @param int $sUserId ID пользователя
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicsCloseByUser($sUserId=null) {
|
||||
|
@ -873,19 +893,17 @@ class ModuleTopic extends Module {
|
|||
'blog_type' => array('close'),
|
||||
);
|
||||
}
|
||||
|
||||
$aTopics=$this->GetTopicsByFilter($aFilter);
|
||||
return array_keys($aTopics['collection']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Получает список топиков из указанного блога
|
||||
*
|
||||
* @param int $iBlogId
|
||||
* @param int $iPage
|
||||
* @param int $iPerPage
|
||||
* @param array $aAllowData
|
||||
* @param bool $bIdsOnly
|
||||
* @param int $iBlogId ID блога
|
||||
* @param int $iPage Номер страницы
|
||||
* @param int $iPerPage Количество элементов на страницу
|
||||
* @param array $aAllowData Список типов данных для подгрузки в топики
|
||||
* @param bool $bIdsOnly Возвращать только ID или список объектов
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicsByBlogId($iBlogId,$iPage=0,$iPerPage=0,$aAllowData=array(),$bIdsOnly=true) {
|
||||
|
@ -899,14 +917,14 @@ class ModuleTopic extends Module {
|
|||
? array_keys($aTopics['collection'])
|
||||
: $aTopics;
|
||||
}
|
||||
|
||||
/**
|
||||
* список топиков из коллективных блогов
|
||||
* Список топиков из коллективных блогов
|
||||
*
|
||||
* @param unknown_type $iPage
|
||||
* @param unknown_type $iPerPage
|
||||
* @param unknown_type $sShowType
|
||||
* @return unknown
|
||||
* @param int $iPage Номер страницы
|
||||
* @param int $iPerPage Количество элементов на страницу
|
||||
* @param string $sShowType Тип выборки топиков
|
||||
* @param string $sPeriod Период в виде секунд или конкретной даты
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicsCollective($iPage,$iPerPage,$sShowType='good',$sPeriod=null) {
|
||||
if (is_numeric($sPeriod)) {
|
||||
|
@ -963,7 +981,7 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получает число новых топиков в коллективных блогах
|
||||
*
|
||||
* @return unknown
|
||||
* @return int
|
||||
*/
|
||||
public function GetCountTopicsCollectiveNew() {
|
||||
$sDate=date("Y-m-d H:00:00",time()-Config::Get('module.topic.new_time'));
|
||||
|
@ -987,9 +1005,9 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получает топики по рейтингу и дате
|
||||
*
|
||||
* @param unknown_type $sDate
|
||||
* @param unknown_type $iLimit
|
||||
* @return unknown
|
||||
* @param string $sDate Дата
|
||||
* @param int $iLimit Количество
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicsRatingByDate($sDate,$iLimit=20) {
|
||||
/**
|
||||
|
@ -1011,11 +1029,12 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Список топиков из блога
|
||||
*
|
||||
* @param unknown_type $oBlog
|
||||
* @param unknown_type $iPage
|
||||
* @param unknown_type $iPerPage
|
||||
* @param unknown_type $sShowType
|
||||
* @return unknown
|
||||
* @param ModuleBlog_EntityBlog $oBlog Объект блога
|
||||
* @param int $iPage Номер страницы
|
||||
* @param int $iPerPage Количество элементов на страницу
|
||||
* @param string $sShowType Тип выборки топиков
|
||||
* @param string $sPeriod Период в виде секунд или конкретной даты
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicsByBlog($oBlog,$iPage,$iPerPage,$sShowType='good',$sPeriod=null) {
|
||||
if (is_numeric($sPeriod)) {
|
||||
|
@ -1063,8 +1082,8 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получает число новых топиков из блога
|
||||
*
|
||||
* @param unknown_type $oBlog
|
||||
* @return unknown
|
||||
* @param ModuleBlog_EntityBlog $oBlog Объект блога
|
||||
* @return int
|
||||
*/
|
||||
public function GetCountTopicsByBlogNew($oBlog) {
|
||||
$sDate=date("Y-m-d H:00:00",time()-Config::Get('module.topic.new_time'));
|
||||
|
@ -1079,9 +1098,9 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получает список топиков по тегу
|
||||
*
|
||||
* @param string $sTag
|
||||
* @param int $iPage
|
||||
* @param int $iPerPage
|
||||
* @param string $sTag Тег
|
||||
* @param int $iPage Номер страницы
|
||||
* @param int $iPerPage Количество элементов на страницу
|
||||
* @param bool $bAddAccessible Указывает на необходимость добавить в выдачу топики,
|
||||
* из блогов доступных пользователю. При указании false,
|
||||
* в выдачу будут переданы только топики из общедоступных блогов.
|
||||
|
@ -1103,8 +1122,9 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получает список тегов топиков
|
||||
*
|
||||
* @param unknown_type $iLimit
|
||||
* @return unknown
|
||||
* @param int $iLimit Количество
|
||||
* @param array $aExcludeTopic Список ID топиков для исключения
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicTags($iLimit,$aExcludeTopic=array()) {
|
||||
$s=serialize($aExcludeTopic);
|
||||
|
@ -1117,7 +1137,8 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получает список тегов из топиков открытых блогов (open,personal)
|
||||
*
|
||||
* @param int $iLimit
|
||||
* @param int $iLimit Количество
|
||||
* @param int|null $iUserId ID пользователя, чью теги получаем
|
||||
* @return array
|
||||
*/
|
||||
public function GetOpenTopicTags($iLimit,$iUserId=null) {
|
||||
|
@ -1127,12 +1148,11 @@ class ModuleTopic extends Module {
|
|||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Увеличивает у топика число комментов
|
||||
*
|
||||
* @param unknown_type $sTopicId
|
||||
* @return unknown
|
||||
* @param int $sTopicId ID топика
|
||||
* @return bool
|
||||
*/
|
||||
public function increaseTopicCountComment($sTopicId) {
|
||||
$this->Cache_Delete("topic_{$sTopicId}");
|
||||
|
@ -1142,9 +1162,9 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получает привязку топика к ибранному(добавлен ли топик в избранное у юзера)
|
||||
*
|
||||
* @param unknown_type $sTopicId
|
||||
* @param unknown_type $sUserId
|
||||
* @return unknown
|
||||
* @param int $sTopicId ID топика
|
||||
* @param int $sUserId ID пользователя
|
||||
* @return ModuleFavourite_EntityFavourite
|
||||
*/
|
||||
public function GetFavouriteTopic($sTopicId,$sUserId) {
|
||||
return $this->Favourite_GetFavourite($sTopicId,'topic',$sUserId);
|
||||
|
@ -1152,7 +1172,9 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получить список избранного по списку айдишников
|
||||
*
|
||||
* @param unknown_type $aTopicId
|
||||
* @param array $aTopicId Список ID топиков
|
||||
* @param int $sUserId ID пользователя
|
||||
* @return array
|
||||
*/
|
||||
public function GetFavouriteTopicsByArray($aTopicId,$sUserId) {
|
||||
return $this->Favourite_GetFavouritesByArray($aTopicId,'topic',$sUserId);
|
||||
|
@ -1160,8 +1182,8 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получить список избранного по списку айдишников, но используя единый кеш
|
||||
*
|
||||
* @param array $aTopicId
|
||||
* @param int $sUserId
|
||||
* @param array $aTopicId Список ID топиков
|
||||
* @param int $sUserId ID пользователя
|
||||
* @return array
|
||||
*/
|
||||
public function GetFavouriteTopicsByArraySolid($aTopicId,$sUserId) {
|
||||
|
@ -1170,8 +1192,8 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Добавляет топик в избранное
|
||||
*
|
||||
* @param ModuleFavourite_EntityFavourite $oFavouriteTopic
|
||||
* @return unknown
|
||||
* @param ModuleFavourite_EntityFavourite $oFavouriteTopic Объект избранного
|
||||
* @return bool
|
||||
*/
|
||||
public function AddFavouriteTopic(ModuleFavourite_EntityFavourite $oFavouriteTopic) {
|
||||
return $this->Favourite_AddFavourite($oFavouriteTopic);
|
||||
|
@ -1179,8 +1201,8 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Удаляет топик из избранного
|
||||
*
|
||||
* @param ModuleFavourite_EntityFavourite $oFavouriteTopic
|
||||
* @return unknown
|
||||
* @param ModuleFavourite_EntityFavourite $oFavouriteTopic Объект избранного
|
||||
* @return bool
|
||||
*/
|
||||
public function DeleteFavouriteTopic(ModuleFavourite_EntityFavourite $oFavouriteTopic) {
|
||||
return $this->Favourite_DeleteFavourite($oFavouriteTopic);
|
||||
|
@ -1188,8 +1210,8 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Устанавливает переданный параметр публикации таргета (топика)
|
||||
*
|
||||
* @param string $sTopicId
|
||||
* @param int $iPublish
|
||||
* @param int $sTopicId ID топика
|
||||
* @param int $iPublish Флаг публикации топика
|
||||
* @return bool
|
||||
*/
|
||||
public function SetFavouriteTopicPublish($sTopicId,$iPublish) {
|
||||
|
@ -1198,7 +1220,7 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Удаляет топики из избранного по списку
|
||||
*
|
||||
* @param array $aTopicId
|
||||
* @param array $aTopicId Список ID топиков
|
||||
* @return bool
|
||||
*/
|
||||
public function DeleteFavouriteTopicByArrayId($aTopicId) {
|
||||
|
@ -1207,8 +1229,9 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получает список тегов по первым буквам тега
|
||||
*
|
||||
* @param unknown_type $sTag
|
||||
* @param unknown_type $iLimit
|
||||
* @param string $sTag Тэг
|
||||
* @param int $iLimit Количество
|
||||
* @return bool
|
||||
*/
|
||||
public function GetTopicTagsByLike($sTag,$iLimit) {
|
||||
if (false === ($data = $this->Cache_Get("tag_like_{$sTag}_{$iLimit}"))) {
|
||||
|
@ -1220,7 +1243,8 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Обновляем/устанавливаем дату прочтения топика, если читаем его первый раз то добавляем
|
||||
*
|
||||
* @param ModuleTopic_EntityTopicRead $oTopicRead
|
||||
* @param ModuleTopic_EntityTopicRead $oTopicRead Объект факта чтения топика
|
||||
* @return bool
|
||||
*/
|
||||
public function SetTopicRead(ModuleTopic_EntityTopicRead $oTopicRead) {
|
||||
if ($this->GetTopicRead($oTopicRead->getTopicId(),$oTopicRead->getUserId())) {
|
||||
|
@ -1237,9 +1261,9 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получаем дату прочтения топика юзером
|
||||
*
|
||||
* @param unknown_type $sTopicId
|
||||
* @param unknown_type $sUserId
|
||||
* @return unknown
|
||||
* @param int $sTopicId ID топика
|
||||
* @param int $sUserId ID пользователя
|
||||
* @return ModuleTopic_EntityTopicRead|null
|
||||
*/
|
||||
public function GetTopicRead($sTopicId,$sUserId) {
|
||||
$data=$this->GetTopicsReadByArray($sTopicId,$sUserId);
|
||||
|
@ -1251,7 +1275,7 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Удаляет записи о чтении записей по списку идентификаторов
|
||||
*
|
||||
* @param array|int $aTopicId
|
||||
* @param array|int $aTopicId Список ID топиков
|
||||
* @return bool
|
||||
*/
|
||||
public function DeleteTopicReadByArrayId($aTopicId) {
|
||||
|
@ -1261,7 +1285,9 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получить список просмотром/чтения топиков по списку айдишников
|
||||
*
|
||||
* @param unknown_type $aTopicId
|
||||
* @param array $aTopicId Список ID топиков
|
||||
* @param int $sUserId ID пользователя
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicsReadByArray($aTopicId,$sUserId) {
|
||||
if (!$aTopicId) {
|
||||
|
@ -1325,9 +1351,9 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получить список просмотром/чтения топиков по списку айдишников, но используя единый кеш
|
||||
*
|
||||
* @param unknown_type $aTopicId
|
||||
* @param unknown_type $sUserId
|
||||
* @return unknown
|
||||
* @param array $aTopicId Список ID топиков
|
||||
* @param int $sUserId ID пользователя
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicsReadByArraySolid($aTopicId,$sUserId) {
|
||||
if (!is_array($aTopicId)) {
|
||||
|
@ -1349,9 +1375,9 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Проверяет голосовал ли юзер за топик-вопрос
|
||||
*
|
||||
* @param unknown_type $sTopicId
|
||||
* @param unknown_type $sUserId
|
||||
* @return unknown
|
||||
* @param int $sTopicId ID топика
|
||||
* @param int $sUserId ID пользователя
|
||||
* @return ModuleTopic_EntityTopicQuestionVote|null
|
||||
*/
|
||||
public function GetTopicQuestionVote($sTopicId,$sUserId) {
|
||||
$data=$this->GetTopicsQuestionVoteByArray($sTopicId,$sUserId);
|
||||
|
@ -1363,7 +1389,9 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получить список голосований в топике-опросе по списку айдишников
|
||||
*
|
||||
* @param unknown_type $aTopicId
|
||||
* @param array $aTopicId Список ID топиков
|
||||
* @param int $sUserId ID пользователя
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicsQuestionVoteByArray($aTopicId,$sUserId) {
|
||||
if (!$aTopicId) {
|
||||
|
@ -1427,9 +1455,9 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получить список голосований в топике-опросе по списку айдишников, но используя единый кеш
|
||||
*
|
||||
* @param unknown_type $aTopicId
|
||||
* @param unknown_type $sUserId
|
||||
* @return unknown
|
||||
* @param array $aTopicId Список ID топиков
|
||||
* @param int $sUserId ID пользователя
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicsQuestionVoteByArraySolid($aTopicId,$sUserId) {
|
||||
if (!is_array($aTopicId)) {
|
||||
|
@ -1451,7 +1479,8 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Добавляет факт голосования за топик-вопрос
|
||||
*
|
||||
* @param ModuleTopic_EntityTopicQuestionVote $oTopicQuestionVote
|
||||
* @param ModuleTopic_EntityTopicQuestionVote $oTopicQuestionVote Объект голосования в топике-опросе
|
||||
* @return bool
|
||||
*/
|
||||
public function AddTopicQuestionVote(ModuleTopic_EntityTopicQuestionVote $oTopicQuestionVote) {
|
||||
$this->Cache_Delete("topic_question_vote_{$oTopicQuestionVote->getTopicId()}_{$oTopicQuestionVote->getVoterId()}");
|
||||
|
@ -1461,9 +1490,9 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Получает топик по уникальному хешу(текст топика)
|
||||
*
|
||||
* @param unknown_type $sUserId
|
||||
* @param unknown_type $sHash
|
||||
* @return unknown
|
||||
* @param int $sUserId
|
||||
* @param string $sHash
|
||||
* @return ModuleTopic_EntityTopic|null
|
||||
*/
|
||||
public function GetTopicUnique($sUserId,$sHash) {
|
||||
$sId=$this->oMapperTopic->GetTopicUnique($sUserId,$sHash);
|
||||
|
@ -1472,9 +1501,9 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Рассылает уведомления о новом топике подписчикам блога
|
||||
*
|
||||
* @param unknown_type $oBlog
|
||||
* @param unknown_type $oTopic
|
||||
* @param unknown_type $oUserTopic
|
||||
* @param ModuleBlog_EntityBlog $oBlog Объект блога
|
||||
* @param ModuleTopic_EntityTopic $oTopic Объект топика
|
||||
* @param ModuleUser_EntityUser $oUserTopic Объект пользователя
|
||||
*/
|
||||
public function SendNotifyTopicNew($oBlog,$oTopic,$oUserTopic) {
|
||||
$aBlogUsersResult=$this->Blog_GetBlogUsersByBlogId($oBlog->getId(),null,null); // нужно постранично пробегаться по всем
|
||||
|
@ -1491,12 +1520,12 @@ class ModuleTopic extends Module {
|
|||
}
|
||||
}
|
||||
/**
|
||||
* Возвращает список последних топиков пользователя,
|
||||
* опубликованных не более чем $iTimeLimit секунд назад
|
||||
* Возвращает список последних топиков пользователя, опубликованных не более чем $iTimeLimit секунд назад
|
||||
*
|
||||
* @param string $sUserId
|
||||
* @param int $iTimeLimit
|
||||
* @param int $iCountLimit
|
||||
* @param int $sUserId ID пользователя
|
||||
* @param int $iTimeLimit Число секунд
|
||||
* @param int $iCountLimit Количество
|
||||
* @param array $aAllowData Список типов данных для подгрузки в топики
|
||||
* @return array
|
||||
*/
|
||||
public function GetLastTopicsByUserId($sUserId,$iTimeLimit,$iCountLimit=1,$aAllowData=array()) {
|
||||
|
@ -1509,12 +1538,11 @@ class ModuleTopic extends Module {
|
|||
|
||||
return $aTopics;
|
||||
}
|
||||
|
||||
/**
|
||||
* Перемещает топики в другой блог
|
||||
*
|
||||
* @param array $aTopics
|
||||
* @param string $sBlogId
|
||||
* @param array $aTopics Список ID топиков
|
||||
* @param int $sBlogId ID блога
|
||||
* @return bool
|
||||
*/
|
||||
public function MoveTopicsByArrayId($aTopics,$sBlogId) {
|
||||
|
@ -1530,12 +1558,11 @@ class ModuleTopic extends Module {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Перемещает топики в другой блог
|
||||
*
|
||||
* @param string $sBlogId
|
||||
* @param string $sBlogIdNew
|
||||
* @param int $sBlogId ID старого блога
|
||||
* @param int $sBlogIdNew ID нового блога
|
||||
* @return bool
|
||||
*/
|
||||
public function MoveTopics($sBlogId,$sBlogIdNew) {
|
||||
|
@ -1551,12 +1578,11 @@ class ModuleTopic extends Module {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Заргузка изображений при написании топика
|
||||
* Загрузка изображений при написании топика
|
||||
*
|
||||
* @param array $aFile
|
||||
* @param ModuleUser_EntityUser $oUser
|
||||
* @param array $aFile Массив $_FILES
|
||||
* @param ModuleUser_EntityUser $oUser Объект пользователя
|
||||
* @return string|bool
|
||||
*/
|
||||
public function UploadTopicImageFile($aFile,$oUser) {
|
||||
|
@ -1581,9 +1607,9 @@ class ModuleTopic extends Module {
|
|||
/**
|
||||
* Загрузка изображений по переданному URL
|
||||
*
|
||||
* @param string $sUrl
|
||||
* @param string $sUrl URL изображения
|
||||
* @param ModuleUser_EntityUser $oUser
|
||||
* @return (string|bool)
|
||||
* @return string|int
|
||||
*/
|
||||
public function UploadTopicImageUrl($sUrl, $oUser) {
|
||||
/**
|
||||
|
@ -1608,7 +1634,6 @@ class ModuleTopic extends Module {
|
|||
$sContent.=fread($oFile ,1024*1);
|
||||
$iSizeKb++;
|
||||
}
|
||||
|
||||
/**
|
||||
* Если конец файла не достигнут,
|
||||
* значит файл имеет недопустимый размер
|
||||
|
@ -1617,7 +1642,6 @@ class ModuleTopic extends Module {
|
|||
return ModuleImage::UPLOAD_IMAGE_ERROR_SIZE;
|
||||
}
|
||||
fclose($oFile);
|
||||
|
||||
/**
|
||||
* Создаем tmp-файл, для временного хранения изображения
|
||||
*/
|
||||
|
@ -1629,7 +1653,6 @@ class ModuleTopic extends Module {
|
|||
|
||||
$sDirSave=$this->Image_GetIdDir($oUser->getId());
|
||||
$aParams=$this->Image_BuildParams('topic');
|
||||
|
||||
/**
|
||||
* Передаем изображение на обработку
|
||||
*/
|
||||
|
@ -1641,19 +1664,11 @@ class ModuleTopic extends Module {
|
|||
@unlink($sFileTmp);
|
||||
return ModuleImage::UPLOAD_IMAGE_ERROR;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Возвращает список фотографий к топику-фотосет по списку id фоток
|
||||
*
|
||||
* @param unknown_type $aPhotoId
|
||||
* @return unknown
|
||||
* @param array $aPhotoId Список ID фото
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicPhotosByArrayId($aPhotoId) {
|
||||
if (!$aPhotoId) {
|
||||
|
@ -1675,11 +1690,11 @@ class ModuleTopic extends Module {
|
|||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавить к топику изображение
|
||||
* @param type $oPhoto
|
||||
* @return type
|
||||
*
|
||||
* @param ModuleTopic_EntityTopicPhoto $oPhoto Объект фото к топику-фотосету
|
||||
* @return ModuleTopic_EntityTopicPhoto|bool
|
||||
*/
|
||||
public function addTopicPhoto($oPhoto) {
|
||||
if ($sId=$this->oMapperTopic->addTopicPhoto($oPhoto)) {
|
||||
|
@ -1689,12 +1704,11 @@ class ModuleTopic extends Module {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Получить изображение из фотосета по его id
|
||||
* @param type $sId
|
||||
* @return type
|
||||
*
|
||||
* @param int $sId ID фото
|
||||
* @return ModuleTopic_EntityTopicPhoto|null
|
||||
*/
|
||||
public function getTopicPhotoById($sId) {
|
||||
$aPhotos=$this->GetTopicPhotosByArrayId($sId);
|
||||
|
@ -1703,60 +1717,57 @@ class ModuleTopic extends Module {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить список изображений из фотосета по id топика
|
||||
* @param type $iTopicId
|
||||
* @param type $iFromId
|
||||
* @param type $iCount
|
||||
* @return type
|
||||
*
|
||||
* @param int $iTopicId ID топика
|
||||
* @param int|null $iFromId ID с которого начинать выборку
|
||||
* @param int|null $iCount Количество
|
||||
* @return array
|
||||
*/
|
||||
public function getPhotosByTopicId($iTopicId, $iFromId = null, $iCount = null) {
|
||||
return $this->oMapperTopic->getPhotosByTopicId($iTopicId, $iFromId, $iCount);
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить список изображений из фотосета по временному коду
|
||||
* @param type $sTargetTmp
|
||||
* @return type
|
||||
*
|
||||
* @param string $sTargetTmp Временный ключ
|
||||
* @return array
|
||||
*/
|
||||
public function getPhotosByTargetTmp($sTargetTmp) {
|
||||
return $this->oMapperTopic->getPhotosByTargetTmp($sTargetTmp);
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить число изображений из фотосета по id топика
|
||||
* @param type $iTopicId
|
||||
* @return type
|
||||
*
|
||||
* @param int $iTopicId ID топика
|
||||
* @return int
|
||||
*/
|
||||
public function getCountPhotosByTopicId($iTopicId) {
|
||||
return $this->oMapperTopic->getCountPhotosByTopicId($iTopicId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить число изображений из фотосета по id топика
|
||||
* @param type $sTargetTmp
|
||||
* @return type
|
||||
*
|
||||
* @param string $sTargetTmp Временный ключ
|
||||
* @return int
|
||||
*/
|
||||
public function getCountPhotosByTargetTmp($sTargetTmp) {
|
||||
return $this->oMapperTopic->getCountPhotosByTargetTmp($sTargetTmp);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* обновить данные по изображению
|
||||
* @param type $oPhoto
|
||||
* Обновить данные по изображению
|
||||
*
|
||||
* @param ModuleTopic_EntityTopicPhoto $oPhoto Объект фото
|
||||
*/
|
||||
public function updateTopicPhoto($oPhoto) {
|
||||
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("photoset_photo_update"));
|
||||
$this->oMapperTopic->updateTopicPhoto($oPhoto);
|
||||
}
|
||||
|
||||
/**
|
||||
* Удалить изображение
|
||||
* @param type $oPhoto
|
||||
* @return type
|
||||
*
|
||||
* @param ModuleTopic_EntityTopicPhoto $oPhoto Объект фото
|
||||
*/
|
||||
public function deleteTopicPhoto($oPhoto) {
|
||||
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("photoset_photo_update"));
|
||||
|
@ -1772,13 +1783,12 @@ class ModuleTopic extends Module {
|
|||
}
|
||||
$this->Image_RemoveFile($this->Image_GetServerPath($oPhoto->getWebPath($sSize)));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Загрузить изображение
|
||||
* @param type $aFile
|
||||
* @return string
|
||||
*
|
||||
* @param array $aFile Массив $_FILES
|
||||
* @return string|bool
|
||||
*/
|
||||
public function UploadTopicPhoto($aFile) {
|
||||
if(!is_array($aFile) || !isset($aFile['tmp_name'])) {
|
||||
|
@ -1811,7 +1821,6 @@ class ModuleTopic extends Module {
|
|||
@unlink($sFileTmp);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Превышает максимальные размеры из конфига
|
||||
*/
|
||||
|
@ -1820,14 +1829,17 @@ class ModuleTopic extends Module {
|
|||
@unlink($sFileTmp);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Добавляем к загруженному файлу расширение
|
||||
/**
|
||||
* Добавляем к загруженному файлу расширение
|
||||
*/
|
||||
$sFile=$sFileTmp.'.'.$oImage->get_image_params('format');
|
||||
rename($sFileTmp,$sFile);
|
||||
|
||||
$aSizes=Config::Get('module.topic.photoset.size');
|
||||
foreach ($aSizes as $aSize) {
|
||||
// Для каждого указанного в конфиге размера генерируем картинку
|
||||
/**
|
||||
* Для каждого указанного в конфиге размера генерируем картинку
|
||||
*/
|
||||
$sNewFileName = $sFileName.'_'.$aSize['w'];
|
||||
$oImage = $this->Image_CreateImageObject($sFile);
|
||||
if ($aSize['crop']) {
|
||||
|
@ -1836,10 +1848,8 @@ class ModuleTopic extends Module {
|
|||
}
|
||||
$this->Image_Resize($sFile,$sPath,$sNewFileName,Config::Get('view.img_max_width'),Config::Get('view.img_max_height'),$aSize['w'],$aSize['h'],true,$aParams,$oImage);
|
||||
}
|
||||
|
||||
return $this->Image_GetWebPath($sFile);
|
||||
}
|
||||
|
||||
/**
|
||||
* Пересчитывает счетчик избранных топиков
|
||||
*
|
||||
|
@ -1848,7 +1858,6 @@ class ModuleTopic extends Module {
|
|||
public function RecalculateFavourite(){
|
||||
return $this->oMapperTopic->RecalculateFavourite();
|
||||
}
|
||||
|
||||
/**
|
||||
* Пересчитывает счетчики голосований
|
||||
*
|
||||
|
|
|
@ -15,7 +15,19 @@
|
|||
---------------------------------------------------------
|
||||
*/
|
||||
|
||||
/**
|
||||
* Объект сущности топика
|
||||
*
|
||||
* @package modules.topic
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleTopic_EntityTopic extends Entity {
|
||||
/**
|
||||
* Массив объектов(не всегда) для дополнительных типов топиков(линки, опросы, подкасты и т.п.)
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $aExtra=null;
|
||||
|
||||
/**
|
||||
* Определяем правила валидации
|
||||
|
@ -33,20 +45,12 @@ class ModuleTopic_EntityTopic extends Entity {
|
|||
$this->aValidateRules[]=array('topic_type','topic_type','on'=>array('topic','link','question','photoset'));
|
||||
$this->aValidateRules[]=array('link_url','url','allowEmpty'=>false,'label'=>$this->Lang_Get('topic_link_create_url'),'on'=>array('link'));
|
||||
}
|
||||
|
||||
/**
|
||||
* массив объектов(не всегда) для дополнительных типов топиков(линки, опросы, подкасты и т.п.)
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $aExtra=null;
|
||||
|
||||
/**
|
||||
* Проверка типа топика
|
||||
*
|
||||
* @param $sValue
|
||||
* @param $aParams
|
||||
* @return bool | string
|
||||
* @param string $sValue Проверяемое значение
|
||||
* @param array $aParams Параметры
|
||||
* @return bool|string
|
||||
*/
|
||||
public function ValidateTopicType($sValue,$aParams) {
|
||||
if ($this->Topic_IsAllowTopicType($sValue)) {
|
||||
|
@ -57,9 +61,9 @@ class ModuleTopic_EntityTopic extends Entity {
|
|||
/**
|
||||
* Проверка топика на уникальность
|
||||
*
|
||||
* @param $sValue
|
||||
* @param $aParams
|
||||
* @return bool | string
|
||||
* @param string $sValue Проверяемое значение
|
||||
* @param array $aParams Параметры
|
||||
* @return bool|string
|
||||
*/
|
||||
public function ValidateTopicUnique($sValue,$aParams) {
|
||||
$this->setTextHash(md5($this->getType().$sValue.$this->getTitle()));
|
||||
|
@ -74,9 +78,9 @@ class ModuleTopic_EntityTopic extends Entity {
|
|||
/**
|
||||
* Валидация ID блога
|
||||
*
|
||||
* @param $sValue
|
||||
* @param $aParams
|
||||
* @return bool | string
|
||||
* @param string $sValue Проверяемое значение
|
||||
* @param array $aParams Параметры
|
||||
* @return bool|string
|
||||
*/
|
||||
public function ValidateBlogId($sValue,$aParams) {
|
||||
if ($sValue==0) {
|
||||
|
@ -88,109 +92,266 @@ class ModuleTopic_EntityTopic extends Entity {
|
|||
return $this->Lang_Get('topic_create_blog_error_unknown');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Возвращает ID топика
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getId() {
|
||||
return $this->_getDataOne('topic_id');
|
||||
}
|
||||
/**
|
||||
* Возвращает ID блога
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getBlogId() {
|
||||
return $this->_getDataOne('blog_id');
|
||||
}
|
||||
/**
|
||||
* Возвращает ID пользователя
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getUserId() {
|
||||
return $this->_getDataOne('user_id');
|
||||
}
|
||||
/**
|
||||
* Возвращает тип топика
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getType() {
|
||||
return $this->_getDataOne('topic_type');
|
||||
}
|
||||
/**
|
||||
* Возвращает заголовок топика
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getTitle() {
|
||||
return $this->_getDataOne('topic_title');
|
||||
}
|
||||
/**
|
||||
* Возвращает текст топика
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getText() {
|
||||
return $this->_getDataOne('topic_text');
|
||||
}
|
||||
/**
|
||||
* Возвращает короткий текст топика (до ката)
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getTextShort() {
|
||||
return $this->_getDataOne('topic_text_short');
|
||||
}
|
||||
/**
|
||||
* Возвращает исходный текст топика, без примененя парсера тегов
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getTextSource() {
|
||||
return $this->_getDataOne('topic_text_source');
|
||||
}
|
||||
/**
|
||||
* Возвращает сериализованные строку дополнительный данных топика
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getExtra() {
|
||||
return $this->_getDataOne('topic_extra') ? $this->_getDataOne('topic_extra') : serialize('');
|
||||
}
|
||||
/**
|
||||
* Возвращает строку со списком тегов через запятую
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getTags() {
|
||||
return $this->_getDataOne('topic_tags');
|
||||
}
|
||||
/**
|
||||
* Возвращает дату создания топика
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getDateAdd() {
|
||||
return $this->_getDataOne('topic_date_add');
|
||||
}
|
||||
/**
|
||||
* Возвращает дату редактирования топика
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getDateEdit() {
|
||||
return $this->_getDataOne('topic_date_edit');
|
||||
}
|
||||
/**
|
||||
* Возвращает IP пользователя
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getUserIp() {
|
||||
return $this->_getDataOne('topic_user_ip');
|
||||
}
|
||||
/**
|
||||
* Возвращает статус опубликованности топика
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getPublish() {
|
||||
return $this->_getDataOne('topic_publish');
|
||||
}
|
||||
/**
|
||||
* Возвращает статус опубликованности черновика
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getPublishDraft() {
|
||||
return $this->_getDataOne('topic_publish_draft');
|
||||
}
|
||||
/**
|
||||
* Возвращает статус публикации топика на главной странице
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getPublishIndex() {
|
||||
return $this->_getDataOne('topic_publish_index');
|
||||
}
|
||||
/**
|
||||
* Возвращает рейтинг топика
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getRating() {
|
||||
return number_format(round($this->_getDataOne('topic_rating'),2), 0, '.', '');
|
||||
}
|
||||
/**
|
||||
* Возвращает число проголосовавших за топик
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getCountVote() {
|
||||
return $this->_getDataOne('topic_count_vote');
|
||||
}
|
||||
/**
|
||||
* Возвращает число проголосовавших за топик положительно
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getCountVoteUp() {
|
||||
return $this->_getDataOne('topic_count_vote_up');
|
||||
}
|
||||
/**
|
||||
* Возвращает число проголосовавших за топик отрицательно
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getCountVoteDown() {
|
||||
return $this->_getDataOne('topic_count_vote_down');
|
||||
}
|
||||
/**
|
||||
* Возвращает число воздержавшихся при голосовании за топик
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getCountVoteAbstain() {
|
||||
return $this->_getDataOne('topic_count_vote_abstain');
|
||||
}
|
||||
/**
|
||||
* Возвращает число прочтений топика
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getCountRead() {
|
||||
return $this->_getDataOne('topic_count_read');
|
||||
}
|
||||
/**
|
||||
* Возвращает количество комментариев к топику
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getCountComment() {
|
||||
return $this->_getDataOne('topic_count_comment');
|
||||
}
|
||||
/**
|
||||
* Возвращает текст ката
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getCutText() {
|
||||
return $this->_getDataOne('topic_cut_text');
|
||||
}
|
||||
/**
|
||||
* Возвращает статус запрета комментировать топик
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getForbidComment() {
|
||||
return $this->_getDataOne('topic_forbid_comment');
|
||||
}
|
||||
/**
|
||||
* Возвращает хеш топика для проверки топика на уникальность
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getTextHash() {
|
||||
return $this->_getDataOne('topic_text_hash');
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает массив тегов
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getTagsArray() {
|
||||
if ($this->getTags()) {
|
||||
return explode(',',$this->getTags());
|
||||
}
|
||||
return array();
|
||||
}
|
||||
/**
|
||||
* Возвращает количество новых комментариев в топике для текущего пользователя
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getCountCommentNew() {
|
||||
return $this->_getDataOne('count_comment_new');
|
||||
}
|
||||
/**
|
||||
* Возвращает дату прочтения топика для текущего пользователя
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getDateRead() {
|
||||
return $this->_getDataOne('date_read');
|
||||
}
|
||||
/**
|
||||
* Возвращает объект пользователя, автора топик
|
||||
*
|
||||
* @return ModuleUser_EntityUser|null
|
||||
*/
|
||||
public function getUser() {
|
||||
if (!$this->_getDataOne('user')) {
|
||||
$this->_aData['user']=$this->User_GetUserById($this->getUserId());
|
||||
}
|
||||
return $this->_getDataOne('user');
|
||||
}
|
||||
/**
|
||||
* Возвращает объект блого, в котором находится топик
|
||||
*
|
||||
* @return ModuleBlog_EntityBlog|null
|
||||
*/
|
||||
public function getBlog() {
|
||||
return $this->_getDataOne('blog');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Возвращает полный URL до топика
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getUrl() {
|
||||
if ($this->getBlog()->getType()=='personal') {
|
||||
return Router::GetPath('blog').$this->getId().'.html';
|
||||
|
@ -198,21 +359,46 @@ class ModuleTopic_EntityTopic extends Entity {
|
|||
return Router::GetPath('blog').$this->getBlog()->getUrl().'/'.$this->getId().'.html';
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Возвращает объект голосования за топик текущим пользователем
|
||||
*
|
||||
* @return ModuleVote_EntityVote|null
|
||||
*/
|
||||
public function getVote() {
|
||||
return $this->_getDataOne('vote');
|
||||
}
|
||||
/**
|
||||
* Возвращает статус голосовал ли пользователь в топике-опросе
|
||||
*
|
||||
* @return bool|null
|
||||
*/
|
||||
public function getUserQuestionIsVote() {
|
||||
return $this->_getDataOne('user_question_is_vote');
|
||||
}
|
||||
/**
|
||||
* Проверяет находится ли данный топик в избранном у текущего пользователя
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getIsFavourite() {
|
||||
if ($this->getFavourite()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
* Возвращает количество добавивших топик в избранное
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getCountFavourite() {
|
||||
return $this->_getDataOne('topic_count_favourite');
|
||||
}
|
||||
/**
|
||||
* Возвращает объект подписки на новые комментарии к топику
|
||||
*
|
||||
* @return ModuleSubscribe_EntitySubscribe|null
|
||||
*/
|
||||
public function getSubscribeNewComment() {
|
||||
if (!($oUserCurrent=$this->User_GetUserCurrent())) {
|
||||
return null;
|
||||
|
@ -225,18 +411,31 @@ class ModuleTopic_EntityTopic extends Entity {
|
|||
***************************************************************************************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* Извлекает сериализованные данные топика
|
||||
*/
|
||||
protected function extractExtra() {
|
||||
if (is_null($this->aExtra)) {
|
||||
$this->aExtra=@unserialize($this->getExtra());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает значение нужного параметра
|
||||
*
|
||||
* @param string $sName Название параметра/данных
|
||||
* @param mixed $data Данные
|
||||
*/
|
||||
protected function setExtraValue($sName,$data) {
|
||||
$this->extractExtra();
|
||||
$this->aExtra[$sName]=$data;
|
||||
$this->setExtra($this->aExtra);
|
||||
}
|
||||
|
||||
/**
|
||||
* Извлекает значение параметра
|
||||
*
|
||||
* @param string $sName Название параметра
|
||||
* @return null|mixed
|
||||
*/
|
||||
protected function getExtraValue($sName) {
|
||||
$this->extractExtra();
|
||||
if (isset($this->aExtra[$sName])) {
|
||||
|
@ -245,7 +444,12 @@ class ModuleTopic_EntityTopic extends Entity {
|
|||
return null;
|
||||
}
|
||||
|
||||
// методы для топика-ссылки
|
||||
/**
|
||||
* Возвращает URL для топика-ссылки
|
||||
*
|
||||
* @param bool $bShort Укарачивать урл или нет
|
||||
* @return null|string
|
||||
*/
|
||||
public function getLinkUrl($bShort=false) {
|
||||
if ($this->getType()!='link') {
|
||||
return null;
|
||||
|
@ -271,25 +475,45 @@ class ModuleTopic_EntityTopic extends Entity {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
/**
|
||||
* Устанавливает URL для топика-ссылки
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setLinkUrl($data) {
|
||||
if ($this->getType()!='link') {
|
||||
return;
|
||||
}
|
||||
$this->setExtraValue('url',$data);
|
||||
}
|
||||
/**
|
||||
* Возвращает количество переходов по ссылке в топике-ссылке
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getLinkCountJump() {
|
||||
if ($this->getType()!='link') {
|
||||
return null;
|
||||
}
|
||||
return (int)$this->getExtraValue('count_jump');
|
||||
}
|
||||
/**
|
||||
* Устанавливает количество переходов по ссылке в топике-ссылке
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setLinkCountJump($data) {
|
||||
if ($this->getType()!='link') {
|
||||
return;
|
||||
}
|
||||
$this->setExtraValue('count_jump',$data);
|
||||
}
|
||||
//методы для топика-вопроса
|
||||
|
||||
/**
|
||||
* Добавляет вариант ответа в топик-опрос
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function addQuestionAnswer($data) {
|
||||
if ($this->getType()!='question') {
|
||||
return;
|
||||
|
@ -298,12 +522,21 @@ class ModuleTopic_EntityTopic extends Entity {
|
|||
$this->aExtra['answers'][]=array('text'=>$data,'count'=>0);
|
||||
$this->setExtra($this->aExtra);
|
||||
}
|
||||
/**
|
||||
* Очищает варианты ответа в топике-опрос
|
||||
*/
|
||||
public function clearQuestionAnswer() {
|
||||
if ($this->getType()!='question') {
|
||||
return;
|
||||
}
|
||||
$this->setExtraValue('answers',array());
|
||||
}
|
||||
/**
|
||||
* Возвращает варианты ответа в топике-опрос
|
||||
*
|
||||
* @param bool $bSortVote
|
||||
* @return array|null
|
||||
*/
|
||||
public function getQuestionAnswers($bSortVote=false) {
|
||||
if ($this->getType()!='question') {
|
||||
return null;
|
||||
|
@ -318,6 +551,11 @@ class ModuleTopic_EntityTopic extends Entity {
|
|||
}
|
||||
return array();
|
||||
}
|
||||
/**
|
||||
* Увеличивает количество ответов на данный вариант в топике-опросе
|
||||
*
|
||||
* @param int $sIdAnswer ID варианта ответа
|
||||
*/
|
||||
public function increaseQuestionAnswerVote($sIdAnswer) {
|
||||
if ($aAnswers=$this->getQuestionAnswers()) {
|
||||
if (isset($aAnswers[$sIdAnswer])) {
|
||||
|
@ -327,6 +565,11 @@ class ModuleTopic_EntityTopic extends Entity {
|
|||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Возвращает максимально количество ответов на вариант в топике-опросе
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getQuestionAnswerMax() {
|
||||
$aAnswers=$this->getQuestionAnswers();
|
||||
$iMax=0;
|
||||
|
@ -337,6 +580,12 @@ class ModuleTopic_EntityTopic extends Entity {
|
|||
}
|
||||
return $iMax;
|
||||
}
|
||||
/**
|
||||
* Возвращает в процентах количество проголосовавших за конкретный вариант
|
||||
*
|
||||
* @param int $sIdAnswer ID варианта
|
||||
* @return int|string
|
||||
*/
|
||||
public function getQuestionAnswerPercent($sIdAnswer) {
|
||||
if ($aAnswers=$this->getQuestionAnswers()) {
|
||||
if (isset($aAnswers[$sIdAnswer])) {
|
||||
|
@ -349,26 +598,45 @@ class ModuleTopic_EntityTopic extends Entity {
|
|||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Возвращает общее число принявших участие в опросе в топике-опросе
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getQuestionCountVote() {
|
||||
if ($this->getType()!='question') {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (int)$this->getExtraValue('count_vote');
|
||||
}
|
||||
/**
|
||||
* Устанавливает общее число принявших участие в опросе в топике-опросе
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setQuestionCountVote($data) {
|
||||
if ($this->getType()!='question') {
|
||||
return;
|
||||
}
|
||||
$this->setExtraValue('count_vote',$data);
|
||||
}
|
||||
/**
|
||||
* Возвращает число воздержавшихся от участия в опросе в топике-опросе
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getQuestionCountVoteAbstain() {
|
||||
if ($this->getType()!='question') {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (int)$this->getExtraValue('count_vote_abstain');
|
||||
}
|
||||
/**
|
||||
* Устанавливает число воздержавшихся от участия в опросе в топике-опросе
|
||||
*
|
||||
* @param int $data
|
||||
* @return mixed
|
||||
*/
|
||||
public function setQuestionCountVoteAbstain($data) {
|
||||
if ($this->getType()!='question') {
|
||||
return;
|
||||
|
@ -376,123 +644,313 @@ class ModuleTopic_EntityTopic extends Entity {
|
|||
$this->setExtraValue('count_vote_abstain',$data);
|
||||
}
|
||||
|
||||
// Методы для фото-топика
|
||||
|
||||
/**
|
||||
* Возвращает фотографии из топика-фотосета
|
||||
*
|
||||
* @param int|null $iFromId ID с которого начинать выборку
|
||||
* @param int|null $iCount Количество
|
||||
* @return array
|
||||
*/
|
||||
public function getPhotosetPhotos($iFromId = null, $iCount = null) {
|
||||
return $this->Topic_getPhotosByTopicId($this->getId(), $iFromId, $iCount);
|
||||
}
|
||||
/**
|
||||
* Возвращает количество фотографий в топике-фотосете
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getPhotosetCount() {
|
||||
return $this->getExtraValue('count_photo');
|
||||
}
|
||||
/**
|
||||
* Возвращает ID главной фото в топике-фотосете
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getPhotosetMainPhotoId() {
|
||||
return $this->getExtraValue('main_photo_id');
|
||||
}
|
||||
/**
|
||||
* Устанавливает ID главной фото в топике-фотосете
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setPhotosetMainPhotoId($data) {
|
||||
$this->setExtraValue('main_photo_id',$data);
|
||||
}
|
||||
/**
|
||||
* Устанавливает количество фотографий в топике-фотосете
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setPhotosetCount($data) {
|
||||
$this->setExtraValue('count_photo',$data);
|
||||
}
|
||||
|
||||
|
||||
//*************************************************************************************************************************************************
|
||||
|
||||
/**
|
||||
* Устанваливает ID топика
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setId($data) {
|
||||
$this->_aData['topic_id']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает ID блога
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setBlogId($data) {
|
||||
$this->_aData['blog_id']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает ID пользователя
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setUserId($data) {
|
||||
$this->_aData['user_id']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает тип топика
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setType($data) {
|
||||
$this->_aData['topic_type']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает заголовок топика
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setTitle($data) {
|
||||
$this->_aData['topic_title']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает текст топика
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setText($data) {
|
||||
$this->_aData['topic_text']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает сериализованную строчку дополнительных данных
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setExtra($data) {
|
||||
$this->_aData['topic_extra']=serialize($data);
|
||||
}
|
||||
/**
|
||||
* Устанавливает короткий текст топика до ката
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setTextShort($data) {
|
||||
$this->_aData['topic_text_short']=$data;
|
||||
}
|
||||
/**
|
||||
* Устаналивает исходный текст топика
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setTextSource($data) {
|
||||
$this->_aData['topic_text_source']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает список тегов в виде строки
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setTags($data) {
|
||||
$this->_aData['topic_tags']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает дату создания топика
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setDateAdd($data) {
|
||||
$this->_aData['topic_date_add']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает дату редактирования топика
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setDateEdit($data) {
|
||||
$this->_aData['topic_date_edit']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает IP пользователя
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setUserIp($data) {
|
||||
$this->_aData['topic_user_ip']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает флаг публикации топика
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setPublish($data) {
|
||||
$this->_aData['topic_publish']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает флаг публикации черновика
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setPublishDraft($data) {
|
||||
$this->_aData['topic_publish_draft']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает флаг публикации на главной странице
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setPublishIndex($data) {
|
||||
$this->_aData['topic_publish_index']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает рейтинг топика
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setRating($data) {
|
||||
$this->_aData['topic_rating']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает количество проголосовавших
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setCountVote($data) {
|
||||
$this->_aData['topic_count_vote']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает количество проголосовавших в плюс
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setCountVoteUp($data) {
|
||||
$this->_aData['topic_count_vote_up']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает количество проголосовавших в минус
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setCountVoteDown($data) {
|
||||
$this->_aData['topic_count_vote_down']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает число воздержавшихся
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setCountVoteAbstain($data) {
|
||||
$this->_aData['topic_count_vote_abstain']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает число прочтения топика
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setCountRead($data) {
|
||||
$this->_aData['topic_count_read']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает количество комментариев
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setCountComment($data) {
|
||||
$this->_aData['topic_count_comment']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает текст ката
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setCutText($data) {
|
||||
$this->_aData['topic_cut_text']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает флаг запрета коментирования топика
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setForbidComment($data) {
|
||||
$this->_aData['topic_forbid_comment']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает хеш топика
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setTextHash($data) {
|
||||
$this->_aData['topic_text_hash']=$data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает объект пользователя
|
||||
*
|
||||
* @param ModuleUser_EntityUser $data
|
||||
*/
|
||||
public function setUser($data) {
|
||||
$this->_aData['user']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает объект блога
|
||||
*
|
||||
* @param ModuleBlog_EntityBlog $data
|
||||
*/
|
||||
public function setBlog($data) {
|
||||
$this->_aData['blog']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает факт голосования пользователя в топике-опросе
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setUserQuestionIsVote($data) {
|
||||
$this->_aData['user_question_is_vote']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает объект голосования за топик
|
||||
*
|
||||
* @param ModuleVote_EntityVote $data
|
||||
*/
|
||||
public function setVote($data) {
|
||||
$this->_aData['vote']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает количество новых комментариев
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setCountCommentNew($data) {
|
||||
$this->_aData['count_comment_new']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает дату прочтения топика текущим пользователем
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setDateRead($data) {
|
||||
$this->_aData['date_read']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает количество пользователей, добавивших топик в избранное
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setCountFavourite($data) {
|
||||
$this->_aData['topic_count_favourite']=$data;
|
||||
}
|
||||
|
|
|
@ -1,31 +1,74 @@
|
|||
<?php
|
||||
/*-------------------------------------------------------
|
||||
*
|
||||
* LiveStreet Engine Social Networking
|
||||
* Copyright © 2008 Mzhelskiy Maxim
|
||||
*
|
||||
*--------------------------------------------------------
|
||||
*
|
||||
* Official site: www.livestreet.ru
|
||||
* Contact e-mail: rus.engine@gmail.com
|
||||
*
|
||||
* GNU General Public License, version 2:
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
---------------------------------------------------------
|
||||
*/
|
||||
|
||||
class ModuleTopic_EntityTopicPhoto extends Entity
|
||||
{
|
||||
public function getId()
|
||||
{
|
||||
/**
|
||||
* Объект сущности фото в топике-фотосете
|
||||
*
|
||||
* @package modules.topic
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleTopic_EntityTopicPhoto extends Entity {
|
||||
/**
|
||||
* Возвращает ID фото
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getId() {
|
||||
return $this->_getDataOne('id');
|
||||
}
|
||||
public function getTopicId()
|
||||
{
|
||||
/**
|
||||
* Возвращает ID топика
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getTopicId() {
|
||||
return $this->_getDataOne('topic_id');
|
||||
}
|
||||
public function getTargetTmp()
|
||||
{
|
||||
/**
|
||||
* Возвращает ключ временного владельца
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getTargetTmp() {
|
||||
return $this->_getDataOne('target_tmp');
|
||||
}
|
||||
public function getDescription()
|
||||
{
|
||||
/**
|
||||
* Возвращает описание фото
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getDescription() {
|
||||
return $this->_getDataOne('description');
|
||||
}
|
||||
|
||||
public function getPath()
|
||||
{
|
||||
/**
|
||||
* Вовзращает полный веб путь до фото
|
||||
*
|
||||
* @return mixed|null
|
||||
*/
|
||||
public function getPath() {
|
||||
return $this->_getDataOne('path');
|
||||
}
|
||||
|
||||
public function getWebPath($sWidth = null)
|
||||
{
|
||||
/**
|
||||
* Возвращает полный веб путь до фото определенного размера
|
||||
*
|
||||
* @param string|null $sWidth Размер фото, например, '100' или '150crop'
|
||||
* @return null|string
|
||||
*/
|
||||
public function getWebPath($sWidth = null) {
|
||||
if ($this->getPath()) {
|
||||
if ($sWidth) {
|
||||
$aPathInfo=pathinfo($this->getPath());
|
||||
|
@ -38,17 +81,28 @@ class ModuleTopic_EntityTopicPhoto extends Entity
|
|||
}
|
||||
}
|
||||
|
||||
public function setTopicId($iTopicId)
|
||||
{
|
||||
/**
|
||||
* Устанавливает ID топика
|
||||
*
|
||||
* @param int $iTopicId
|
||||
*/
|
||||
public function setTopicId($iTopicId) {
|
||||
$this->_aData['topic_id'] = $iTopicId;
|
||||
}
|
||||
public function setTargetTmp($sTargetTmp)
|
||||
{
|
||||
/**
|
||||
* Устанавливает ключ временного владельца
|
||||
*
|
||||
* @param string $sTargetTmp
|
||||
*/
|
||||
public function setTargetTmp($sTargetTmp) {
|
||||
$this->_aData['target_tmp'] = $sTargetTmp;
|
||||
}
|
||||
public function setDescription($sDescription)
|
||||
{
|
||||
/**
|
||||
* Устанавливает описание фото
|
||||
*
|
||||
* @param string $sDescription
|
||||
*/
|
||||
public function setDescription($sDescription) {
|
||||
$this->_aData['description'] = $sDescription;
|
||||
}
|
||||
|
||||
}
|
|
@ -15,27 +15,61 @@
|
|||
---------------------------------------------------------
|
||||
*/
|
||||
|
||||
class ModuleTopic_EntityTopicQuestionVote extends Entity
|
||||
{
|
||||
public function getTopicId() {
|
||||
return $this->_getDataOne('topic_id');
|
||||
}
|
||||
public function getVoterId() {
|
||||
return $this->_getDataOne('user_voter_id');
|
||||
}
|
||||
/**
|
||||
* Объект сущности голосования в топике-опросе
|
||||
*
|
||||
* @package modules.topic
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleTopic_EntityTopicQuestionVote extends Entity {
|
||||
/**
|
||||
* Возвращает ID топика
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getTopicId() {
|
||||
return $this->_getDataOne('topic_id');
|
||||
}
|
||||
/**
|
||||
* Возвращает ID проголосовавшего пользователя
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getVoterId() {
|
||||
return $this->_getDataOne('user_voter_id');
|
||||
}
|
||||
/**
|
||||
* Возвращает номер варианта
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getAnswer() {
|
||||
return $this->_getDataOne('answer');
|
||||
}
|
||||
|
||||
|
||||
return $this->_getDataOne('answer');
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает ID топика
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setTopicId($data) {
|
||||
$this->_aData['topic_id']=$data;
|
||||
}
|
||||
public function setVoterId($data) {
|
||||
$this->_aData['user_voter_id']=$data;
|
||||
}
|
||||
public function setAnswer($data) {
|
||||
$this->_aData['answer']=$data;
|
||||
}
|
||||
$this->_aData['topic_id']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает ID проголосовавшего пользователя
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setVoterId($data) {
|
||||
$this->_aData['user_voter_id']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает номер варианта
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setAnswer($data) {
|
||||
$this->_aData['answer']=$data;
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -15,40 +15,94 @@
|
|||
---------------------------------------------------------
|
||||
*/
|
||||
|
||||
class ModuleTopic_EntityTopicRead extends Entity
|
||||
{
|
||||
public function getTopicId() {
|
||||
return $this->_getDataOne('topic_id');
|
||||
}
|
||||
public function getUserId() {
|
||||
return $this->_getDataOne('user_id');
|
||||
}
|
||||
public function getDateRead() {
|
||||
return $this->_getDataOne('date_read');
|
||||
}
|
||||
public function getCommentCountLast() {
|
||||
return $this->_getDataOne('comment_count_last');
|
||||
}
|
||||
public function getCommentIdLast() {
|
||||
return $this->_getDataOne('comment_id_last');
|
||||
}
|
||||
/**
|
||||
* Объект сущности факта прочтения топика
|
||||
*
|
||||
* @package modules.topic
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleTopic_EntityTopicRead extends Entity {
|
||||
/**
|
||||
* Возвращает ID топика
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getTopicId() {
|
||||
return $this->_getDataOne('topic_id');
|
||||
}
|
||||
/**
|
||||
* Возвращает ID пользователя
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getUserId() {
|
||||
return $this->_getDataOne('user_id');
|
||||
}
|
||||
/**
|
||||
* Возвращает дату прочтения
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getDateRead() {
|
||||
return $this->_getDataOne('date_read');
|
||||
}
|
||||
/**
|
||||
* Возвращает число комментариев в последнем прочтении топика
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getCommentCountLast() {
|
||||
return $this->_getDataOne('comment_count_last');
|
||||
}
|
||||
/**
|
||||
* Возвращает ID последнего комментария
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getCommentIdLast() {
|
||||
return $this->_getDataOne('comment_id_last');
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Устанавливает ID топика
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setTopicId($data) {
|
||||
$this->_aData['topic_id']=$data;
|
||||
}
|
||||
public function setUserId($data) {
|
||||
$this->_aData['user_id']=$data;
|
||||
}
|
||||
public function setDateRead($data) {
|
||||
$this->_aData['date_read']=$data;
|
||||
}
|
||||
public function setCommentCountLast($data) {
|
||||
$this->_aData['comment_count_last']=$data;
|
||||
}
|
||||
public function setCommentIdLast($data) {
|
||||
$this->_aData['comment_id_last']=$data;
|
||||
}
|
||||
$this->_aData['topic_id']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает ID пользователя
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setUserId($data) {
|
||||
$this->_aData['user_id']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает дату прочтения
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setDateRead($data) {
|
||||
$this->_aData['date_read']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает число комментариев в последнем прочтении топика
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setCommentCountLast($data) {
|
||||
$this->_aData['comment_count_last']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает ID последнего комментария
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setCommentIdLast($data) {
|
||||
$this->_aData['comment_id_last']=$data;
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -15,51 +15,119 @@
|
|||
---------------------------------------------------------
|
||||
*/
|
||||
|
||||
class ModuleTopic_EntityTopicTag extends Entity
|
||||
{
|
||||
public function getId() {
|
||||
return $this->_getDataOne('topic_tag_id');
|
||||
}
|
||||
public function getTopicId() {
|
||||
return $this->_getDataOne('topic_id');
|
||||
}
|
||||
public function getUserId() {
|
||||
return $this->_getDataOne('user_id');
|
||||
}
|
||||
public function getBlogId() {
|
||||
return $this->_getDataOne('blog_id');
|
||||
}
|
||||
public function getText() {
|
||||
return $this->_getDataOne('topic_tag_text');
|
||||
}
|
||||
|
||||
public function getCount() {
|
||||
return $this->_getDataOne('count');
|
||||
}
|
||||
public function getSize() {
|
||||
return $this->_getDataOne('size');
|
||||
}
|
||||
/**
|
||||
* Объект сущности тега топика
|
||||
*
|
||||
* @package modules.topic
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleTopic_EntityTopicTag extends Entity {
|
||||
/**
|
||||
* Возвращает ID тега
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getId() {
|
||||
return $this->_getDataOne('topic_tag_id');
|
||||
}
|
||||
/**
|
||||
* Возвращает ID топика
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getTopicId() {
|
||||
return $this->_getDataOne('topic_id');
|
||||
}
|
||||
/**
|
||||
* Возвращает ID пользователя
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getUserId() {
|
||||
return $this->_getDataOne('user_id');
|
||||
}
|
||||
/**
|
||||
* Возвращает ID блога
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getBlogId() {
|
||||
return $this->_getDataOne('blog_id');
|
||||
}
|
||||
/**
|
||||
* Возвращает текст тега
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getText() {
|
||||
return $this->_getDataOne('topic_tag_text');
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Возвращает количество тегов
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getCount() {
|
||||
return $this->_getDataOne('count');
|
||||
}
|
||||
/**
|
||||
* Возвращает просчитанный размер тега для облака тегов
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getSize() {
|
||||
return $this->_getDataOne('size');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Устанавливает ID тега
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setId($data) {
|
||||
$this->_aData['topic_tag_id']=$data;
|
||||
}
|
||||
public function setTopicId($data) {
|
||||
$this->_aData['topic_id']=$data;
|
||||
}
|
||||
public function setUserId($data) {
|
||||
$this->_aData['user_id']=$data;
|
||||
}
|
||||
public function setBlogId($data) {
|
||||
$this->_aData['blog_id']=$data;
|
||||
}
|
||||
public function setText($data) {
|
||||
$this->_aData['topic_tag_text']=$data;
|
||||
}
|
||||
|
||||
$this->_aData['topic_tag_id']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает ID топика
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setTopicId($data) {
|
||||
$this->_aData['topic_id']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает ID пользователя
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setUserId($data) {
|
||||
$this->_aData['user_id']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает ID блога
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setBlogId($data) {
|
||||
$this->_aData['blog_id']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает текст тега
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setText($data) {
|
||||
$this->_aData['topic_tag_text']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает просчитанный размер тега для облака тегов
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setSize($data) {
|
||||
$this->_aData['size']=$data;
|
||||
}
|
||||
$this->_aData['size']=$data;
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -15,8 +15,19 @@
|
|||
---------------------------------------------------------
|
||||
*/
|
||||
|
||||
class ModuleTopic_MapperTopic extends Mapper {
|
||||
|
||||
/**
|
||||
* Объект маппера для работы с БД
|
||||
*
|
||||
* @package modules.topic
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleTopic_MapperTopic extends Mapper {
|
||||
/**
|
||||
* Добавляет топик
|
||||
*
|
||||
* @param ModuleTopic_EntityTopic $oTopic Объект топика
|
||||
* @return int|bool
|
||||
*/
|
||||
public function AddTopic(ModuleTopic_EntityTopic $oTopic) {
|
||||
$sql = "INSERT INTO ".Config::Get('db.table.topic')."
|
||||
(blog_id,
|
||||
|
@ -34,17 +45,22 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
topic_text_hash
|
||||
)
|
||||
VALUES(?d, ?d, ?, ?, ?, ?, ?, ?d, ?d, ?d, ?, ?, ?)
|
||||
";
|
||||
";
|
||||
if ($iId=$this->oDb->query($sql,$oTopic->getBlogId(),$oTopic->getUserId(),$oTopic->getType(),$oTopic->getTitle(),
|
||||
$oTopic->getTags(),$oTopic->getDateAdd(),$oTopic->getUserIp(),$oTopic->getPublish(),$oTopic->getPublishDraft(),$oTopic->getPublishIndex(),$oTopic->getCutText(),$oTopic->getForbidComment(),$oTopic->getTextHash()))
|
||||
$oTopic->getTags(),$oTopic->getDateAdd(),$oTopic->getUserIp(),$oTopic->getPublish(),$oTopic->getPublishDraft(),$oTopic->getPublishIndex(),$oTopic->getCutText(),$oTopic->getForbidComment(),$oTopic->getTextHash()))
|
||||
{
|
||||
$oTopic->setId($iId);
|
||||
$this->AddTopicContent($oTopic);
|
||||
return $iId;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет контент топика
|
||||
*
|
||||
* @param ModuleTopic_EntityTopic $oTopic Объект топика
|
||||
* @return int|bool
|
||||
*/
|
||||
public function AddTopicContent(ModuleTopic_EntityTopic $oTopic) {
|
||||
$sql = "INSERT INTO ".Config::Get('db.table.topic_content')."
|
||||
(topic_id,
|
||||
|
@ -54,15 +70,20 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
topic_extra
|
||||
)
|
||||
VALUES(?d, ?, ?, ?, ? )
|
||||
";
|
||||
";
|
||||
if ($iId=$this->oDb->query($sql,$oTopic->getId(),$oTopic->getText(),
|
||||
$oTopic->getTextShort(),$oTopic->getTextSource(),$oTopic->getExtra()))
|
||||
$oTopic->getTextShort(),$oTopic->getTextSource(),$oTopic->getExtra()))
|
||||
{
|
||||
return $iId;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавление тега к топику
|
||||
*
|
||||
* @param ModuleTopic_EntityTopicTag $oTopicTag Объект тега топика
|
||||
* @return int
|
||||
*/
|
||||
public function AddTopicTag(ModuleTopic_EntityTopicTag $oTopicTag) {
|
||||
$sql = "INSERT INTO ".Config::Get('db.table.topic_tag')."
|
||||
(topic_id,
|
||||
|
@ -71,45 +92,66 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
topic_tag_text
|
||||
)
|
||||
VALUES(?d, ?d, ?d, ?)
|
||||
";
|
||||
if ($iId=$this->oDb->query($sql,$oTopicTag->getTopicId(),$oTopicTag->getUserId(),$oTopicTag->getBlogId(),$oTopicTag->getText()))
|
||||
";
|
||||
if ($iId=$this->oDb->query($sql,$oTopicTag->getTopicId(),$oTopicTag->getUserId(),$oTopicTag->getBlogId(),$oTopicTag->getText()))
|
||||
{
|
||||
return $iId;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Удаление контента топика по его номеру
|
||||
*
|
||||
* @param int $iTopicId ID топика
|
||||
* @return bool
|
||||
*/
|
||||
public function DeleteTopicContentByTopicId($iTopicId) {
|
||||
$sql = "DELETE FROM ".Config::Get('db.table.topic_content')." WHERE topic_id = ?d ";
|
||||
if ($this->oDb->query($sql,$iTopicId)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Удаляет теги у топика
|
||||
*
|
||||
* @param int $sTopicId ID топика
|
||||
* @return bool
|
||||
*/
|
||||
public function DeleteTopicTagsByTopicId($sTopicId) {
|
||||
$sql = "DELETE FROM ".Config::Get('db.table.topic_tag')."
|
||||
WHERE
|
||||
topic_id = ?d
|
||||
";
|
||||
";
|
||||
if ($this->oDb->query($sql,$sTopicId)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Удаляет топик.
|
||||
* Если тип таблиц в БД InnoDB, то удалятся всё связи по топику(комменты,голосования,избранное)
|
||||
*
|
||||
* @param int $sTopicId Объект топика или ID
|
||||
* @return bool
|
||||
*/
|
||||
public function DeleteTopic($sTopicId) {
|
||||
$sql = "DELETE FROM ".Config::Get('db.table.topic')."
|
||||
WHERE
|
||||
topic_id = ?d
|
||||
";
|
||||
";
|
||||
if ($this->oDb->query($sql,$sTopicId)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Получает топик по уникальному хешу(текст топика)
|
||||
*
|
||||
* @param int $sUserId
|
||||
* @param string $sHash
|
||||
* @return int|null
|
||||
*/
|
||||
public function GetTopicUnique($sUserId,$sHash) {
|
||||
$sql = "SELECT topic_id FROM ".Config::Get('db.table.topic')."
|
||||
WHERE
|
||||
|
@ -123,12 +165,17 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить список топиков по списку айдишников
|
||||
*
|
||||
* @param array $aArrayId Список ID топиков
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicsByArrayId($aArrayId) {
|
||||
if (!is_array($aArrayId) or count($aArrayId)==0) {
|
||||
return array();
|
||||
}
|
||||
|
||||
|
||||
$sql = "SELECT
|
||||
t.*,
|
||||
tc.*
|
||||
|
@ -143,21 +190,28 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
foreach ($aRows as $aTopic) {
|
||||
$aTopics[]=Engine::GetEntity('Topic',$aTopic);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $aTopics;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Список топиков по фильтру
|
||||
*
|
||||
* @param array $aFilter Фильтр
|
||||
* @param int $iCount Возвращает общее число элементов
|
||||
* @param int $iCurrPage Номер страницы
|
||||
* @param int $iPerPage Количество элементов на страницу
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopics($aFilter,&$iCount,$iCurrPage,$iPerPage) {
|
||||
$sWhere=$this->buildFilter($aFilter);
|
||||
|
||||
|
||||
if(!isset($aFilter['order'])) {
|
||||
$aFilter['order'] = 't.topic_date_add desc';
|
||||
}
|
||||
if (!is_array($aFilter['order'])) {
|
||||
$aFilter['order'] = array($aFilter['order']);
|
||||
}
|
||||
|
||||
|
||||
$sql = "SELECT
|
||||
t.topic_id
|
||||
FROM
|
||||
|
@ -169,19 +223,24 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
AND
|
||||
t.blog_id=b.blog_id
|
||||
ORDER BY ".
|
||||
implode(', ', $aFilter['order'])
|
||||
."
|
||||
LIMIT ?d, ?d";
|
||||
implode(', ', $aFilter['order'])
|
||||
."
|
||||
LIMIT ?d, ?d";
|
||||
$aTopics=array();
|
||||
if ($aRows=$this->oDb->selectPage($iCount,$sql,($iCurrPage-1)*$iPerPage, $iPerPage)) {
|
||||
if ($aRows=$this->oDb->selectPage($iCount,$sql,($iCurrPage-1)*$iPerPage, $iPerPage)) {
|
||||
foreach ($aRows as $aTopic) {
|
||||
$aTopics[]=$aTopic['topic_id'];
|
||||
}
|
||||
}
|
||||
}
|
||||
return $aTopics;
|
||||
}
|
||||
|
||||
public function GetCountTopics($aFilter) {
|
||||
/**
|
||||
* Количество топиков по фильтру
|
||||
*
|
||||
* @param array $aFilter Фильтр
|
||||
* @return int
|
||||
*/
|
||||
public function GetCountTopics($aFilter) {
|
||||
$sWhere=$this->buildFilter($aFilter);
|
||||
$sql = "SELECT
|
||||
count(t.topic_id) as count
|
||||
|
@ -194,23 +253,28 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
".$sWhere."
|
||||
|
||||
AND
|
||||
t.blog_id=b.blog_id;";
|
||||
t.blog_id=b.blog_id;";
|
||||
if ($aRow=$this->oDb->selectRow($sql)) {
|
||||
return $aRow['count'];
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает все топики по фильтру
|
||||
*
|
||||
* @param array $aFilter Фильтр
|
||||
* @return array
|
||||
*/
|
||||
public function GetAllTopics($aFilter) {
|
||||
$sWhere=$this->buildFilter($aFilter);
|
||||
|
||||
|
||||
if(!isset($aFilter['order'])) {
|
||||
$aFilter['order'] = 't.topic_id desc';
|
||||
}
|
||||
if (!is_array($aFilter['order'])) {
|
||||
$aFilter['order'] = array($aFilter['order']);
|
||||
}
|
||||
|
||||
|
||||
$sql = "SELECT
|
||||
t.topic_id
|
||||
FROM
|
||||
|
@ -221,18 +285,27 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
".$sWhere."
|
||||
AND
|
||||
t.blog_id=b.blog_id
|
||||
ORDER by ".implode(', ', $aFilter['order'])." ";
|
||||
ORDER by ".implode(', ', $aFilter['order'])." ";
|
||||
$aTopics=array();
|
||||
if ($aRows=$this->oDb->select($sql)) {
|
||||
if ($aRows=$this->oDb->select($sql)) {
|
||||
foreach ($aRows as $aTopic) {
|
||||
$aTopics[]=$aTopic['topic_id'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $aTopics;
|
||||
return $aTopics;
|
||||
}
|
||||
|
||||
public function GetTopicsByTag($sTag,$aExcludeBlog,&$iCount,$iCurrPage,$iPerPage) {
|
||||
/**
|
||||
* Получает список топиков по тегу
|
||||
*
|
||||
* @param string $sTag Тег
|
||||
* @param array $aExcludeBlog Список ID блогов для исключения
|
||||
* @param int $iCount Возвращает общее количество элементов
|
||||
* @param int $iCurrPage Номер страницы
|
||||
* @param int $iPerPage Количество элементов на страницу
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicsByTag($sTag,$aExcludeBlog,&$iCount,$iCurrPage,$iPerPage) {
|
||||
$sql = "
|
||||
SELECT
|
||||
topic_id
|
||||
|
@ -243,13 +316,13 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
{ AND blog_id NOT IN (?a) }
|
||||
ORDER BY topic_id DESC
|
||||
LIMIT ?d, ?d ";
|
||||
|
||||
|
||||
$aTopics=array();
|
||||
if ($aRows=$this->oDb->selectPage(
|
||||
$iCount,$sql,$sTag,
|
||||
(is_array($aExcludeBlog)&&count($aExcludeBlog)) ? $aExcludeBlog : DBSIMPLE_SKIP,
|
||||
($iCurrPage-1)*$iPerPage, $iPerPage
|
||||
)
|
||||
$iCount,$sql,$sTag,
|
||||
(is_array($aExcludeBlog)&&count($aExcludeBlog)) ? $aExcludeBlog : DBSIMPLE_SKIP,
|
||||
($iCurrPage-1)*$iPerPage, $iPerPage
|
||||
)
|
||||
) {
|
||||
foreach ($aRows as $aTopic) {
|
||||
$aTopics[]=$aTopic['topic_id'];
|
||||
|
@ -257,8 +330,14 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
}
|
||||
return $aTopics;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Получает топики по рейтингу и дате
|
||||
*
|
||||
* @param string $sDate Дата
|
||||
* @param int $iLimit Количество
|
||||
* @param array $aExcludeBlog Список ID блогов для исключения
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicsRatingByDate($sDate,$iLimit,$aExcludeBlog=array()) {
|
||||
$sql = "SELECT
|
||||
t.topic_id
|
||||
|
@ -272,13 +351,13 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
t.topic_rating >= 0
|
||||
{ AND t.blog_id NOT IN(?a) }
|
||||
ORDER by t.topic_rating desc, t.topic_id desc
|
||||
LIMIT 0, ?d ";
|
||||
LIMIT 0, ?d ";
|
||||
$aTopics=array();
|
||||
if ($aRows=$this->oDb->select(
|
||||
$sql,$sDate,
|
||||
(is_array($aExcludeBlog)&&count($aExcludeBlog)) ? $aExcludeBlog : DBSIMPLE_SKIP,
|
||||
$iLimit
|
||||
)
|
||||
$sql,$sDate,
|
||||
(is_array($aExcludeBlog)&&count($aExcludeBlog)) ? $aExcludeBlog : DBSIMPLE_SKIP,
|
||||
$iLimit
|
||||
)
|
||||
) {
|
||||
foreach ($aRows as $aTopic) {
|
||||
$aTopics[]=$aTopic['topic_id'];
|
||||
|
@ -286,7 +365,13 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
}
|
||||
return $aTopics;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получает список тегов топиков
|
||||
*
|
||||
* @param int $iLimit Количество
|
||||
* @param array $aExcludeTopic Список ID топиков для исключения
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicTags($iLimit,$aExcludeTopic=array()) {
|
||||
$sql = "SELECT
|
||||
tt.topic_tag_text,
|
||||
|
@ -301,26 +386,32 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
ORDER BY
|
||||
count desc
|
||||
LIMIT 0, ?d
|
||||
";
|
||||
";
|
||||
$aReturn=array();
|
||||
$aReturnSort=array();
|
||||
if ($aRows=$this->oDb->select(
|
||||
$sql,
|
||||
(is_array($aExcludeTopic)&&count($aExcludeTopic)) ? $aExcludeTopic : DBSIMPLE_SKIP,
|
||||
$iLimit
|
||||
)
|
||||
$sql,
|
||||
(is_array($aExcludeTopic)&&count($aExcludeTopic)) ? $aExcludeTopic : DBSIMPLE_SKIP,
|
||||
$iLimit
|
||||
)
|
||||
) {
|
||||
foreach ($aRows as $aRow) {
|
||||
foreach ($aRows as $aRow) {
|
||||
$aReturn[mb_strtolower($aRow['topic_tag_text'],'UTF-8')]=$aRow;
|
||||
}
|
||||
ksort($aReturn);
|
||||
foreach ($aReturn as $aRow) {
|
||||
$aReturnSort[]=Engine::GetEntity('Topic_TopicTag',$aRow);
|
||||
$aReturnSort[]=Engine::GetEntity('Topic_TopicTag',$aRow);
|
||||
}
|
||||
}
|
||||
return $aReturnSort;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получает список тегов из топиков открытых блогов (open,personal)
|
||||
*
|
||||
* @param int $iLimit Количество
|
||||
* @param int|null $iUserId ID пользователя, чью теги получаем
|
||||
* @return array
|
||||
*/
|
||||
public function GetOpenTopicTags($iLimit,$iUserId=null) {
|
||||
$sql = "
|
||||
SELECT
|
||||
|
@ -341,36 +432,45 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
ORDER BY
|
||||
count desc
|
||||
LIMIT 0, ?d
|
||||
";
|
||||
";
|
||||
$aReturn=array();
|
||||
$aReturnSort=array();
|
||||
if ($aRows=$this->oDb->select($sql,is_null($iUserId) ? DBSIMPLE_SKIP : $iUserId,$iLimit)) {
|
||||
foreach ($aRows as $aRow) {
|
||||
foreach ($aRows as $aRow) {
|
||||
$aReturn[mb_strtolower($aRow['topic_tag_text'],'UTF-8')]=$aRow;
|
||||
}
|
||||
ksort($aReturn);
|
||||
foreach ($aReturn as $aRow) {
|
||||
$aReturnSort[]=Engine::GetEntity('Topic_TopicTag',$aRow);
|
||||
$aReturnSort[]=Engine::GetEntity('Topic_TopicTag',$aRow);
|
||||
}
|
||||
}
|
||||
return $aReturnSort;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Увеличивает у топика число комментов
|
||||
*
|
||||
* @param int $sTopicId ID топика
|
||||
* @return bool
|
||||
*/
|
||||
public function increaseTopicCountComment($sTopicId) {
|
||||
$sql = "UPDATE ".Config::Get('db.table.topic')."
|
||||
SET
|
||||
topic_count_comment=topic_count_comment+1
|
||||
WHERE
|
||||
topic_id = ?
|
||||
";
|
||||
";
|
||||
if ($this->oDb->query($sql,$sTopicId)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function UpdateTopic(ModuleTopic_EntityTopic $oTopic) {
|
||||
/**
|
||||
* Обновляет топик
|
||||
*
|
||||
* @param ModuleTopic_EntityTopic $oTopic Объект топика
|
||||
* @return bool
|
||||
*/
|
||||
public function UpdateTopic(ModuleTopic_EntityTopic $oTopic) {
|
||||
$sql = "UPDATE ".Config::Get('db.table.topic')."
|
||||
SET
|
||||
blog_id= ?d,
|
||||
|
@ -395,15 +495,20 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
topic_text_hash = ?
|
||||
WHERE
|
||||
topic_id = ?d
|
||||
";
|
||||
";
|
||||
if ($this->oDb->query($sql,$oTopic->getBlogId(),$oTopic->getTitle(),$oTopic->getTags(),$oTopic->getDateAdd(),$oTopic->getDateEdit(),$oTopic->getUserIp(),$oTopic->getPublish(),$oTopic->getPublishDraft(),$oTopic->getPublishIndex(),$oTopic->getRating(),$oTopic->getCountVote(),$oTopic->getCountVoteUp(),$oTopic->getCountVoteDown(),$oTopic->getCountVoteAbstain(),$oTopic->getCountRead(),$oTopic->getCountComment(),$oTopic->getCountFavourite(),$oTopic->getCutText(),$oTopic->getForbidComment(),$oTopic->getTextHash(),$oTopic->getId())) {
|
||||
$this->UpdateTopicContent($oTopic);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function UpdateTopicContent(ModuleTopic_EntityTopic $oTopic) {
|
||||
/**
|
||||
* Обновляет контент топика
|
||||
*
|
||||
* @param ModuleTopic_EntityTopic $oTopic Объект топика
|
||||
* @return bool
|
||||
*/
|
||||
public function UpdateTopicContent(ModuleTopic_EntityTopic $oTopic) {
|
||||
$sql = "UPDATE ".Config::Get('db.table.topic_content')."
|
||||
SET
|
||||
topic_text= ?,
|
||||
|
@ -412,13 +517,18 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
topic_extra= ?
|
||||
WHERE
|
||||
topic_id = ?d
|
||||
";
|
||||
";
|
||||
if ($this->oDb->query($sql,$oTopic->getText(),$oTopic->getTextShort(),$oTopic->getTextSource(),$oTopic->getExtra(),$oTopic->getId())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Строит строку условий для SQL запроса топиков
|
||||
*
|
||||
* @param array $aFilter Фильтр
|
||||
* @return string
|
||||
*/
|
||||
protected function buildFilter($aFilter) {
|
||||
$sWhere='';
|
||||
if (isset($aFilter['topic_date_more'])) {
|
||||
|
@ -426,7 +536,7 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
}
|
||||
if (isset($aFilter['topic_publish'])) {
|
||||
$sWhere.=" AND t.topic_publish = ".(int)$aFilter['topic_publish'];
|
||||
}
|
||||
}
|
||||
if (isset($aFilter['topic_rating']) and is_array($aFilter['topic_rating'])) {
|
||||
$sPublishIndex='';
|
||||
if (isset($aFilter['topic_rating']['publish_index']) and $aFilter['topic_rating']['publish_index']==1) {
|
||||
|
@ -436,7 +546,7 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
$sWhere.=" AND ( t.topic_rating >= ".(float)$aFilter['topic_rating']['value']." {$sPublishIndex} ) ";
|
||||
} else {
|
||||
$sWhere.=" AND ( t.topic_rating < ".(float)$aFilter['topic_rating']['value']." ) ";
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isset($aFilter['topic_new'])) {
|
||||
$sWhere.=" AND t.topic_date_add >= '".$aFilter['topic_new']."'";
|
||||
|
@ -468,8 +578,8 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
$sType=$aBlogId;
|
||||
$aBlogId=array();
|
||||
}
|
||||
|
||||
$aBlogTypes[] = (count($aBlogId)==0)
|
||||
|
||||
$aBlogTypes[] = (count($aBlogId)==0)
|
||||
? "(b.blog_type='".$sType."')"
|
||||
: "(b.blog_type='".$sType."' AND t.blog_id IN ('".join("','",$aBlogId)."'))";
|
||||
}
|
||||
|
@ -483,9 +593,15 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
}
|
||||
return $sWhere;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получает список тегов по первым буквам тега
|
||||
*
|
||||
* @param string $sTag Тэг
|
||||
* @param int $iLimit Количество
|
||||
* @return bool
|
||||
*/
|
||||
public function GetTopicTagsByLike($sTag,$iLimit) {
|
||||
$sTag=mb_strtolower($sTag,"UTF-8");
|
||||
$sTag=mb_strtolower($sTag,"UTF-8");
|
||||
$sql = "SELECT
|
||||
topic_tag_text
|
||||
FROM
|
||||
|
@ -495,7 +611,7 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
GROUP BY
|
||||
topic_tag_text
|
||||
LIMIT 0, ?d
|
||||
";
|
||||
";
|
||||
$aReturn=array();
|
||||
if ($aRows=$this->oDb->select($sql,$sTag.'%',$iLimit)) {
|
||||
foreach ($aRows as $aRow) {
|
||||
|
@ -504,8 +620,13 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
}
|
||||
return $aReturn;
|
||||
}
|
||||
|
||||
public function UpdateTopicRead(ModuleTopic_EntityTopicRead $oTopicRead) {
|
||||
/**
|
||||
* Обновляем дату прочтения топика
|
||||
*
|
||||
* @param ModuleTopic_EntityTopicRead $oTopicRead Объект факта чтения топика
|
||||
* @return int
|
||||
*/
|
||||
public function UpdateTopicRead(ModuleTopic_EntityTopicRead $oTopicRead) {
|
||||
$sql = "UPDATE ".Config::Get('db.table.topic_read')."
|
||||
SET
|
||||
comment_count_last = ? ,
|
||||
|
@ -515,11 +636,16 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
topic_id = ?
|
||||
AND
|
||||
user_id = ?
|
||||
";
|
||||
";
|
||||
return $this->oDb->query($sql,$oTopicRead->getCommentCountLast(),$oTopicRead->getCommentIdLast(),$oTopicRead->getDateRead(),$oTopicRead->getTopicId(),$oTopicRead->getUserId());
|
||||
}
|
||||
|
||||
public function AddTopicRead(ModuleTopic_EntityTopicRead $oTopicRead) {
|
||||
}
|
||||
/**
|
||||
* Устанавливаем дату прочтения топика
|
||||
*
|
||||
* @param ModuleTopic_EntityTopicRead $oTopicRead Объект факта чтения топика
|
||||
* @return bool
|
||||
*/
|
||||
public function AddTopicRead(ModuleTopic_EntityTopicRead $oTopicRead) {
|
||||
$sql = "INSERT INTO ".Config::Get('db.table.topic_read')."
|
||||
SET
|
||||
comment_count_last = ? ,
|
||||
|
@ -527,32 +653,38 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
date_read = ? ,
|
||||
topic_id = ? ,
|
||||
user_id = ?
|
||||
";
|
||||
";
|
||||
return $this->oDb->query($sql,$oTopicRead->getCommentCountLast(),$oTopicRead->getCommentIdLast(),$oTopicRead->getDateRead(),$oTopicRead->getTopicId(),$oTopicRead->getUserId());
|
||||
}
|
||||
/**
|
||||
* Удаляет записи о чтении записей по списку идентификаторов
|
||||
*
|
||||
* @param array $aTopicId
|
||||
* @param array $aTopicId Список ID топиков
|
||||
* @return bool
|
||||
*/
|
||||
*/
|
||||
public function DeleteTopicReadByArrayId($aTopicId) {
|
||||
$sql = "
|
||||
DELETE FROM ".Config::Get('db.table.topic_read')."
|
||||
WHERE
|
||||
topic_id IN(?a)
|
||||
";
|
||||
";
|
||||
if ($this->oDb->query($sql,$aTopicId)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить список просмотром/чтения топиков по списку айдишников
|
||||
*
|
||||
* @param array $aArrayId Список ID топиков
|
||||
* @param int $sUserId ID пользователя
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicsReadByArray($aArrayId,$sUserId) {
|
||||
if (!is_array($aArrayId) or count($aArrayId)==0) {
|
||||
return array();
|
||||
}
|
||||
|
||||
|
||||
$sql = "SELECT
|
||||
t.*
|
||||
FROM
|
||||
|
@ -567,10 +699,15 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
foreach ($aRows as $aRow) {
|
||||
$aReads[]=Engine::GetEntity('Topic_TopicRead',$aRow);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $aReads;
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет факт голосования за топик-вопрос
|
||||
*
|
||||
* @param ModuleTopic_EntityTopicQuestionVote $oTopicQuestionVote Объект голосования в топике-опросе
|
||||
* @return bool
|
||||
*/
|
||||
public function AddTopicQuestionVote(ModuleTopic_EntityTopicQuestionVote $oTopicQuestionVote) {
|
||||
$sql = "INSERT INTO ".Config::Get('db.table.topic_question_vote')."
|
||||
(topic_id,
|
||||
|
@ -578,20 +715,25 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
answer
|
||||
)
|
||||
VALUES(?d, ?d, ?f)
|
||||
";
|
||||
if ($this->oDb->query($sql,$oTopicQuestionVote->getTopicId(),$oTopicQuestionVote->getVoterId(),$oTopicQuestionVote->getAnswer())===0)
|
||||
";
|
||||
if ($this->oDb->query($sql,$oTopicQuestionVote->getTopicId(),$oTopicQuestionVote->getVoterId(),$oTopicQuestionVote->getAnswer())===0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Получить список голосований в топике-опросе по списку айдишников
|
||||
*
|
||||
* @param array $aArrayId Список ID топиков
|
||||
* @param int $sUserId ID пользователя
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicsQuestionVoteByArray($aArrayId,$sUserId) {
|
||||
if (!is_array($aArrayId) or count($aArrayId)==0) {
|
||||
return array();
|
||||
}
|
||||
|
||||
|
||||
$sql = "SELECT
|
||||
v.*
|
||||
FROM
|
||||
|
@ -606,57 +748,54 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
foreach ($aRows as $aRow) {
|
||||
$aVotes[]=Engine::GetEntity('Topic_TopicQuestionVote',$aRow);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $aVotes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Перемещает топики в другой блог
|
||||
*
|
||||
* @param array $aTopics
|
||||
* @param string $sBlogId
|
||||
* @param array $aTopics Список ID топиков
|
||||
* @param int $sBlogId ID блога
|
||||
* @return bool
|
||||
*/
|
||||
*/
|
||||
public function MoveTopicsByArrayId($aTopics,$sBlogId) {
|
||||
if(!is_array($aTopics)) $aTopics = array($aTopics);
|
||||
|
||||
|
||||
$sql = "UPDATE ".Config::Get('db.table.topic')."
|
||||
SET
|
||||
blog_id= ?d
|
||||
WHERE
|
||||
topic_id IN(?a)
|
||||
";
|
||||
";
|
||||
if ($this->oDb->query($sql,$sBlogId,$aTopics)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Перемещает топики в другой блог
|
||||
*
|
||||
* @param string $sBlogId
|
||||
* @param string $sBlogIdNew
|
||||
* @param int $sBlogId ID старого блога
|
||||
* @param int $sBlogIdNew ID нового блога
|
||||
* @return bool
|
||||
*/
|
||||
*/
|
||||
public function MoveTopics($sBlogId,$sBlogIdNew) {
|
||||
$sql = "UPDATE ".Config::Get('db.table.topic')."
|
||||
SET
|
||||
blog_id= ?d
|
||||
WHERE
|
||||
blog_id = ?d
|
||||
";
|
||||
";
|
||||
if ($this->oDb->query($sql,$sBlogIdNew,$sBlogId)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Перемещает теги топиков в другой блог
|
||||
*
|
||||
* @param string $sBlogId
|
||||
* @param string $sBlogIdNew
|
||||
* @param int $sBlogId ID старого блога
|
||||
* @param int $sBlogIdNew ID нового блога
|
||||
* @return bool
|
||||
*/
|
||||
public function MoveTopicsTags($sBlogId,$sBlogIdNew) {
|
||||
|
@ -665,42 +804,38 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
blog_id= ?d
|
||||
WHERE
|
||||
blog_id = ?d
|
||||
";
|
||||
";
|
||||
if ($this->oDb->query($sql,$sBlogIdNew,$sBlogId)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Перемещает теги топиков в другой блог
|
||||
*
|
||||
* @param array $aTopics
|
||||
* @param string $sBlogId
|
||||
* @param array $aTopics Список ID топиков
|
||||
* @param int $sBlogId ID блога
|
||||
* @return bool
|
||||
*/
|
||||
public function MoveTopicsTagsByArrayId($aTopics,$sBlogId) {
|
||||
if(!is_array($aTopics)) $aTopics = array($aTopics);
|
||||
|
||||
|
||||
$sql = "UPDATE ".Config::Get('db.table.topic_tag')."
|
||||
SET
|
||||
blog_id= ?d
|
||||
WHERE
|
||||
topic_id IN(?a)
|
||||
";
|
||||
";
|
||||
if ($this->oDb->query($sql,$sBlogId,$aTopics)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Возвращает список фоток из фото-сета по списку id фоток
|
||||
* Возвращает список фотографий к топику-фотосет по списку id фоток
|
||||
*
|
||||
* @param unknown_type $aArrayId
|
||||
* @return unknown
|
||||
* @param array $aPhotoId Список ID фото
|
||||
* @return array
|
||||
*/
|
||||
public function GetTopicPhotosByArrayId($aArrayId) {
|
||||
if (!is_array($aArrayId) or count($aArrayId)==0) {
|
||||
|
@ -722,16 +857,15 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
}
|
||||
return $aReturn;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public function getPhotosByTopicId($iTopicId, $iFromId, $iCount)
|
||||
{
|
||||
/**
|
||||
* Получить список изображений из фотосета по id топика
|
||||
*
|
||||
* @param int $iTopicId ID топика
|
||||
* @param int|null $iFromId ID с которого начинать выборку
|
||||
* @param int|null $iCount Количество
|
||||
* @return array
|
||||
*/
|
||||
public function getPhotosByTopicId($iTopicId, $iFromId, $iCount) {
|
||||
$sql = 'SELECT * FROM ' . Config::Get('db.table.topic_photo') . ' WHERE topic_id = ?d {AND id > ?d LIMIT 0, ?d}';
|
||||
$aPhotos = $this->oDb->select($sql, $iTopicId, ($iFromId !== null) ? $iFromId : DBSIMPLE_SKIP, $iCount);
|
||||
$aReturn = array();
|
||||
|
@ -742,9 +876,13 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
}
|
||||
return $aReturn;
|
||||
}
|
||||
|
||||
public function getPhotosByTargetTmp($sTargetTmp)
|
||||
{
|
||||
/**
|
||||
* Получить список изображений из фотосета по временному коду
|
||||
*
|
||||
* @param string $sTargetTmp Временный ключ
|
||||
* @return array
|
||||
*/
|
||||
public function getPhotosByTargetTmp($sTargetTmp) {
|
||||
$sql = 'SELECT * FROM ' . Config::Get('db.table.topic_photo') . ' WHERE target_tmp = ?';
|
||||
$aPhotos = $this->oDb->select($sql, $sTargetTmp);
|
||||
$aReturn = array();
|
||||
|
@ -755,9 +893,13 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
}
|
||||
return $aReturn;
|
||||
}
|
||||
|
||||
public function getTopicPhotoById($iPhotoId)
|
||||
{
|
||||
/**
|
||||
* Получить изображение из фотосета по его id
|
||||
*
|
||||
* @param int $iPhotoId ID фото
|
||||
* @return ModuleTopic_EntityTopicPhoto|null
|
||||
*/
|
||||
public function getTopicPhotoById($iPhotoId) {
|
||||
$sql = 'SELECT * FROM ' . Config::Get('db.table.topic_photo') . ' WHERE id = ?d';
|
||||
$aPhoto = $this->oDb->selectRow($sql, $iPhotoId);
|
||||
if ($aPhoto) {
|
||||
|
@ -766,23 +908,35 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public function getCountPhotosByTopicId($iTopicId)
|
||||
{
|
||||
/**
|
||||
* Получить число изображений из фотосета по id топика
|
||||
*
|
||||
* @param int $iTopicId ID топика
|
||||
* @return int
|
||||
*/
|
||||
public function getCountPhotosByTopicId($iTopicId) {
|
||||
$sql = 'SELECT count(id) FROM ' . Config::Get('db.table.topic_photo') . ' WHERE topic_id = ?d';
|
||||
$aPhotosCount = $this->oDb->selectCol($sql, $iTopicId);
|
||||
return $aPhotosCount[0];
|
||||
}
|
||||
|
||||
public function getCountPhotosByTargetTmp($sTargetTmp)
|
||||
{
|
||||
/**
|
||||
* Получить число изображений из фотосета по id топика
|
||||
*
|
||||
* @param string $sTargetTmp Временный ключ
|
||||
* @return int
|
||||
*/
|
||||
public function getCountPhotosByTargetTmp($sTargetTmp) {
|
||||
$sql = 'SELECT count(id) FROM ' . Config::Get('db.table.topic_photo') . ' WHERE target_tmp = ?';
|
||||
$aPhotosCount = $this->oDb->selectCol($sql, $sTargetTmp);
|
||||
return $aPhotosCount[0];
|
||||
}
|
||||
|
||||
public function addTopicPhoto($oPhoto)
|
||||
{
|
||||
/**
|
||||
* Добавить к топику изображение
|
||||
*
|
||||
* @param ModuleTopic_EntityTopicPhoto $oPhoto Объект фото к топику-фотосету
|
||||
* @return bool
|
||||
*/
|
||||
public function addTopicPhoto($oPhoto) {
|
||||
if (!$oPhoto->getTopicId() && !$oPhoto->getTargetTmp()) return false;
|
||||
$sTargetType = ($oPhoto->getTopicId()) ? 'topic_id' : 'target_tmp';
|
||||
$iTargetId = ($sTargetType == 'topic_id') ? $oPhoto->getTopicId() : $oPhoto->getTargetTmp();
|
||||
|
@ -790,9 +944,12 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
path = ?, description = ?, ?# = ?';
|
||||
return $this->oDb->query($sql, $oPhoto->getPath(), $oPhoto->getDescription(), $sTargetType, $iTargetId);
|
||||
}
|
||||
|
||||
public function updateTopicPhoto($oPhoto)
|
||||
{
|
||||
/**
|
||||
* Обновить данные по изображению
|
||||
*
|
||||
* @param ModuleTopic_EntityTopicPhoto $oPhoto Объект фото
|
||||
*/
|
||||
public function updateTopicPhoto($oPhoto) {
|
||||
if (!$oPhoto->getTopicId() && !$oPhoto->getTargetTmp()) return false;
|
||||
if ($oPhoto->getTopicId()) {
|
||||
$oPhoto->setTargetTmp = null;
|
||||
|
@ -801,14 +958,21 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
path = ?, description = ?, topic_id = ?d, target_tmp=? WHERE id = ?d';
|
||||
$this->oDb->query($sql, $oPhoto->getPath(), $oPhoto->getDescription(), $oPhoto->getTopicId(), $oPhoto->getTargetTmp(), $oPhoto->getId());
|
||||
}
|
||||
|
||||
public function deleteTopicPhoto($iPhotoId)
|
||||
{
|
||||
/**
|
||||
* Удалить изображение
|
||||
*
|
||||
* @param int $iPhotoId ID фото
|
||||
*/
|
||||
public function deleteTopicPhoto($iPhotoId) {
|
||||
$sql = 'DELETE FROM '. Config::Get('db.table.topic_photo') . ' WHERE
|
||||
id= ?d';
|
||||
$this->oDb->query($sql, $iPhotoId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Пересчитывает счетчик избранных топиков
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function RecalculateFavourite() {
|
||||
$sql = "
|
||||
UPDATE ".Config::Get('db.table.topic')." t
|
||||
|
@ -828,7 +992,11 @@ class ModuleTopic_MapperTopic extends Mapper {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Пересчитывает счетчики голосований
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function RecalculateVote() {
|
||||
$sql = "
|
||||
UPDATE ".Config::Get('db.table.topic')." t
|
||||
|
|
|
@ -16,59 +16,75 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* Модуль пользовательских лент контента
|
||||
* Модуль пользовательских лент контента (топиков)
|
||||
*
|
||||
* @package modules.userfeed
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleUserfeed extends Module
|
||||
{
|
||||
const SUBSCRIBE_TYPE_BLOG = 1; // Подписки на топики по блогу
|
||||
const SUBSCRIBE_TYPE_USER = 2;// Подписки на топики по юзеру
|
||||
|
||||
class ModuleUserfeed extends Module {
|
||||
/**
|
||||
* Подписки на топики по блогу
|
||||
*/
|
||||
const SUBSCRIBE_TYPE_BLOG = 1;
|
||||
/**
|
||||
* Подписки на топики по юзеру
|
||||
*/
|
||||
const SUBSCRIBE_TYPE_USER = 2;
|
||||
/**
|
||||
* Объект маппера
|
||||
*
|
||||
* @var ModuleUserfeed_MapperUserfeed|null
|
||||
*/
|
||||
protected $oMapper = null;
|
||||
|
||||
/**
|
||||
* Инициализация модуля
|
||||
*/
|
||||
public function Init() {
|
||||
$this->oMapper=Engine::GetMapper(__CLASS__);
|
||||
}
|
||||
|
||||
/**
|
||||
* Подписать пользователя
|
||||
* @param type $iUserId Id подписываемого пользователя
|
||||
* @param type $iSubscribeType Тип подписки (см. константы класса)
|
||||
* @param type $iTargetId Id цели подписки
|
||||
*/
|
||||
* Подписать пользователя
|
||||
*
|
||||
* @param int $iUserId ID подписываемого пользователя
|
||||
* @param int $iSubscribeType Тип подписки (см. константы класса)
|
||||
* @param int $iTargetId ID цели подписки
|
||||
* @return bool
|
||||
*/
|
||||
public function subscribeUser($iUserId, $iSubscribeType, $iTargetId) {
|
||||
return $this->oMapper->subscribeUser($iUserId, $iSubscribeType, $iTargetId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Отписать пользователя
|
||||
* @param type $iUserId Id подписываемого пользователя
|
||||
* @param type $iSubscribeType Тип подписки (см. константы класса)
|
||||
* @param type $iTargetId Id цели подписки
|
||||
*/
|
||||
* Отписать пользователя
|
||||
*
|
||||
* @param int $iUserId ID подписываемого пользователя
|
||||
* @param int $iSubscribeType Тип подписки (см. константы класса)
|
||||
* @param int $iTargetId ID цели подписки
|
||||
* @return bool
|
||||
*/
|
||||
public function unsubscribeUser($iUserId, $iSubscribeType, $iTargetId) {
|
||||
return $this->oMapper->unsubscribeUser($iUserId, $iSubscribeType, $iTargetId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить ленту топиков по подписке
|
||||
* @param type $iUserId Id пользователя, для которого получаем ленту
|
||||
* @param type $iCount Число получаемых записей (если null, из конфига)
|
||||
* @param type $iFromId Получить записи, начиная с указанной
|
||||
* @return type
|
||||
*/
|
||||
* Получить ленту топиков по подписке
|
||||
*
|
||||
* @param int $iUserId ID пользователя, для которого получаем ленту
|
||||
* @param int $iCount Число получаемых записей (если null, из конфига)
|
||||
* @param int $iFromId Получить записи, начиная с указанной
|
||||
* @return array
|
||||
*/
|
||||
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
|
||||
*/
|
||||
* Получить список подписок пользователя
|
||||
*
|
||||
* @param int $iUserId ID пользователя, для которого загружаются подписки
|
||||
* @return array
|
||||
*/
|
||||
public function getUserSubscribes($iUserId) {
|
||||
$aUserSubscribes = $this->oMapper->getUserSubscribes($iUserId);
|
||||
$aResult = array('blogs' => array(), 'users' => array());
|
||||
|
|
|
@ -15,47 +15,78 @@
|
|||
---------------------------------------------------------
|
||||
*/
|
||||
|
||||
class ModuleUserfeed_MapperUserfeed extends Mapper
|
||||
{
|
||||
public function subscribeUser($iUserId, $iSubscribeType, $iTargetId)
|
||||
{
|
||||
$sql = 'SELECT * FROM ' . Config::Get('db.table.userfeed_subscribe') . ' WHERE
|
||||
/**
|
||||
* Маппер для работы с БД
|
||||
*
|
||||
* @package modules.userfeed
|
||||
* @since 1.0
|
||||
*/
|
||||
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
|
||||
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
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
public function unsubscribeUser($iUserId, $iSubscribeType, $iTargetId)
|
||||
{
|
||||
$sql = 'DELETE FROM ' . Config::Get('db.table.userfeed_subscribe') . ' WHERE
|
||||
$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
|
||||
user_id = ?d AND subscribe_type = ?d AND target_id = ?d';
|
||||
$this->oDb->query($sql, $iUserId, $iSubscribeType, $iTargetId);
|
||||
}
|
||||
$this->oDb->query($sql, $iUserId, $iSubscribeType, $iTargetId);
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* Получить список подписок пользователя
|
||||
*
|
||||
* @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());
|
||||
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
public function readFeed($aUserSubscribes, $iCount, $iFromId) {
|
||||
$sql = "
|
||||
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;
|
||||
}
|
||||
/**
|
||||
* Получить ленту топиков по подписке
|
||||
*
|
||||
* @param array $aUserSubscribes Список подписок пользователя
|
||||
* @param int $iCount Число получаемых записей (если null, из конфига)
|
||||
* @param int $iFromId Получить записи, начиная с указанной
|
||||
* @return array
|
||||
*/
|
||||
public function readFeed($aUserSubscribes, $iCount, $iFromId) {
|
||||
$sql = "
|
||||
SELECT
|
||||
t.topic_id
|
||||
FROM
|
||||
|
@ -70,12 +101,12 @@ class ModuleUserfeed_MapperUserfeed extends Mapper
|
|||
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;
|
||||
}
|
||||
$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;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue