1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-05-19 09:18:18 +03:00

Документация классов

This commit is contained in:
Mzhelskiy Maxim 2012-06-24 17:32:29 +04:00
parent d630dd12c7
commit ecef3721a0
7 changed files with 638 additions and 335 deletions

View file

@ -165,7 +165,7 @@ class ModuleSubscribe extends Module {
/**
* Обновление подписки
*
* @param ModuleSubscribe_EntitySubscribe $oSubscribe
* @param ModuleSubscribe_EntitySubscribe $oSubscribe Объект подписки
* @return int
*/
public function UpdateSubscribe($oSubscribe) {

View file

@ -52,7 +52,7 @@ class ModuleSubscribe_MapperSubscribe extends Mapper {
/**
* Обновление подписки
*
* @param ModuleSubscribe_EntitySubscribe $oSubscribe
* @param ModuleSubscribe_EntitySubscribe $oSubscribe Объект подписки
* @return int
*/
public function UpdateSubscribe($oSubscribe) {

View file

@ -18,16 +18,35 @@
/**
* Модуль разговоров(почта)
*
* @package modules.talk
* @since 1.0
*/
class ModuleTalk extends Module {
/**
* Статус TalkUser в базе данных
* Пользователь активен в разговоре
*/
const TALK_USER_ACTIVE = 1;
/**
* Пользователь удалил разговор
*/
const TALK_USER_DELETE_BY_SELF = 2;
/**
* Пользователя удалил из разговора автор письма
*/
const TALK_USER_DELETE_BY_AUTHOR = 4;
/**
* Объект маппера
*
* @var ModuleTalk_MapperTalk
*/
protected $oMapper;
/**
* Объект текущего пользователя
*
* @var ModuleUser_EntityUser|null
*/
protected $oUserCurrent=null;
/**
@ -41,11 +60,13 @@ class ModuleTalk extends Module {
/**
* Формирует и отправляет личное сообщение
*
* @param string $sTitle
* @param string $sText
* @param int | ModuleUser_EntityUser $oUserFrom
* @param array | int | ModuleUser_EntityUser $aUserTo
* @param bool $bSendNotify
* @param string $sTitle Заголовок сообщения
* @param string $sText Текст сообщения
* @param int|ModuleUser_EntityUser $oUserFrom Пользователь от которого отправляем
* @param array|int|ModuleUser_EntityUser $aUserTo Пользователь которому отправляем
* @param bool $bSendNotify Отправлять или нет уведомление на емайл
* @param bool $bUseBlacklist Исклюать или нет пользователей из блэклиста
* @return ModuleTalk_EntityTalk|bool
*/
public function SendTalk($sTitle,$sText,$oUserFrom,$aUserTo,$bSendNotify=true,$bUseBlacklist=true) {
$iUserIdFrom=$oUserFrom instanceof ModuleUser_EntityUser ? $oUserFrom->getId() : (int)$oUserFrom;
@ -101,8 +122,8 @@ class ModuleTalk extends Module {
/**
* Добавляет новую тему разговора
*
* @param ModuleTopic_EntityTopic $oTalk
* @return unknown
* @param ModuleTalk_EntityTalk $oTalk Объект сообщения
* @return ModuleTalk_EntityTalk|bool
*/
public function AddTalk(ModuleTalk_EntityTalk $oTalk) {
if ($sId=$this->oMapper->AddTalk($oTalk)) {
@ -116,17 +137,19 @@ class ModuleTalk extends Module {
/**
* Обновление разговора
*
* @param ModuleTalk_EntityTalk $oTalk
* @param ModuleTalk_EntityTalk $oTalk Объект сообщения
* @return int
*/
public function UpdateTalk(ModuleTalk_EntityTalk $oTalk) {
$this->Cache_Delete("talk_{$oTalk->getId()}");
return $this->oMapper->UpdateTalk($oTalk);
}
/**
* Получает дополнительные данные(объекты) для разговоров по их ID
*
* @param array $aTalkId Список ID сообщений
* @param array|null $aAllowData Список дополнительных типов подгружаемых в объект
* @return array
*/
public function GetTalksAdditionalData($aTalkId,$aAllowData=null) {
if (is_null($aAllowData)) {
@ -205,7 +228,8 @@ class ModuleTalk extends Module {
/**
* Получить список разговоров по списку айдишников
*
* @param unknown_type $aTalkId
* @param array $aTalkId Список ID сообщений
* @return array
*/
public function GetTalksByArrayId($aTalkId) {
if (Config::Get('sys.cache.solid')) {
@ -263,6 +287,12 @@ class ModuleTalk extends Module {
$aTalks=func_array_sort_by_keys($aTalks,$aTalkId);
return $aTalks;
}
/**
* Получить список разговоров по списку айдишников, используя общий кеш
*
* @param array $aTalkId Список ID сообщений
* @return array
*/
public function GetTalksByArrayIdSolid($aTalkId) {
if (!is_array($aTalkId)) {
$aTalkId=array($aTalkId);
@ -283,7 +313,9 @@ class ModuleTalk extends Module {
/**
* Получить список отношений разговор-юзер по списку айдишников
*
* @param unknown_type $aTalkId
* @param array $aTalkId Список ID сообщений
* @param int $sUserId ID пользователя
* @return array
*/
public function GetTalkUsersByArray($aTalkId,$sUserId) {
if (!is_array($aTalkId)) {
@ -341,8 +373,8 @@ class ModuleTalk extends Module {
/**
* Получает тему разговора по айдишнику
*
* @param unknown_type $sId
* @return unknown
* @param int $sId ID сообщения
* @return ModuleTalk_EntityTalk|null
*/
public function GetTalkById($sId) {
$aTalks=$this->GetTalksAdditionalData($sId);
@ -359,8 +391,8 @@ class ModuleTalk extends Module {
/**
* Добавляет юзера к разговору(теме)
*
* @param ModuleTalk_EntityTalkUser $oTalkUser
* @return unknown
* @param ModuleTalk_EntityTalkUser $oTalkUser Объект связи пользователя и сообщения(разговора)
* @return bool
*/
public function AddTalkUser(ModuleTalk_EntityTalkUser $oTalkUser) {
$this->Cache_Delete("talk_{$oTalkUser->getTalkId()}");
@ -375,8 +407,8 @@ class ModuleTalk extends Module {
/**
* Помечает разговоры как прочитанные
*
* @param $aTalkId
* @param $iUserId
* @param array $aTalkId Список ID сообщений
* @param int $iUserId ID пользователя
*/
public function MarkReadTalkUserByArray($aTalkId,$iUserId) {
if(!is_array($aTalkId)){
@ -398,10 +430,12 @@ class ModuleTalk extends Module {
/**
* Удаляет юзера из разговора
*
* @param ModuleTalk_EntityTalkUser $oTalkUser
* @return unknown
* @param array $aTalkId Список ID сообщений
* @param int $sUserId ID пользователя
* @param int $iActive Статус связи
* @return bool
*/
public function DeleteTalkUserByArray($aTalkId,$sUserId,$iAcitve=self::TALK_USER_DELETE_BY_SELF) {
public function DeleteTalkUserByArray($aTalkId,$sUserId,$iActive=self::TALK_USER_DELETE_BY_SELF) {
if(!is_array($aTalkId)){
$aTalkId=array($aTalkId);
}
@ -425,7 +459,7 @@ class ModuleTalk extends Module {
);
}
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("update_talk_user"));
$ret = $this->oMapper->DeleteTalkUserByArray($aTalkId,$sUserId,$iAcitve);
$ret = $this->oMapper->DeleteTalkUserByArray($aTalkId,$sUserId,$iActive);
// Удаляем пустые беседы, если в них нет пользователей
foreach ($aTalkId as $sTalkId) {
@ -438,9 +472,9 @@ class ModuleTalk extends Module {
/**
* Есть ли юзер в этом разговоре
*
* @param unknown_type $sTalkId
* @param unknown_type $sUserId
* @return unknown
* @param int $sTalkId ID разговора
* @param int $sUserId ID пользователя
* @return ModuleTalk_EntityTalkUser|null
*/
public function GetTalkUser($sTalkId,$sUserId) {
$aTalkUser=$this->GetTalkUsersByArray($sTalkId,$sUserId);
@ -452,10 +486,10 @@ class ModuleTalk extends Module {
/**
* Получить все темы разговора где есть юзер
*
* @param string $sUserId
* @param int $iPage
* @param int $iPerPage
* @return array
* @param int $sUserId ID пользователя
* @param int $iPage Номер страницы
* @param int $iPerPage Количество элементов на страницу
* @return array('collection'=>array,'count'=>int)
*/
public function GetTalksByUserId($sUserId,$iPage,$iPerPage) {
$data=array(
@ -463,7 +497,6 @@ class ModuleTalk extends Module {
'count'=>$iCount
);
$aTalks=$this->GetTalksAdditionalData($data['collection']);
/**
* Добавляем данные об участниках разговора
*/
@ -477,14 +510,13 @@ class ModuleTalk extends Module {
$data['collection']=$aTalks;
return $data;
}
/**
* Получить все темы разговора по фильтру
*
* @param array $aFilter
* @param int $iPage
* @param int $iPerPage
* @return array
* @param array $aFilter Фильтр
* @param int $iPage Номер страницы
* @param int $iPerPage Количество элементов на страницу
* @return array('collection'=>array,'count'=>int)
*/
public function GetTalksByFilter($aFilter,$iPage,$iPerPage) {
$data=array(
@ -506,12 +538,11 @@ class ModuleTalk extends Module {
$data['collection']=$aTalks;
return $data;
}
/**
* Обновляет связку разговор-юзер
*
* @param ModuleTalk_EntityTalkUser $oTalkUser
* @return unknown
* @param ModuleTalk_EntityTalkUser $oTalkUser Объект связи пользователя с разговором
* @return bool
*/
public function UpdateTalkUser(ModuleTalk_EntityTalkUser $oTalkUser) {
//чистим зависимые кеши
@ -519,12 +550,11 @@ class ModuleTalk extends Module {
$this->Cache_Delete("talk_user_{$oTalkUser->getTalkId()}_{$oTalkUser->getUserId()}");
return $this->oMapper->UpdateTalkUser($oTalkUser);
}
/**
* Получает число новых тем и комментов где есть юзер
*
* @param unknown_type $sUserId
* @return unknown
* @param int $sUserId ID пользователя
* @return int
*/
public function GetCountTalkNew($sUserId) {
if (false === ($data = $this->Cache_Get("talk_count_all_new_user_{$sUserId}"))) {
@ -533,13 +563,11 @@ class ModuleTalk extends Module {
}
return $data;
}
/**
* Получает список юзеров в теме разговора
*
* @param string $sTalkId
* @param array $aActive
* @param int $sTalkId ID разговора
* @param array $aActive Список статусов
* @return array
*/
public function GetUsersTalk($sTalkId,$aActive=array()) {
@ -548,11 +576,10 @@ class ModuleTalk extends Module {
$data=$this->oMapper->GetUsersTalk($sTalkId,$aActive);
return $this->User_GetUsersAdditionalData($data);
}
/**
* Возвращает массив пользователей, участвующих в разговоре
*
* @param string $sTalkId
* @param int $sTalkId ID разговора
* @return array
*/
public function GetTalkUsersByTalkId($sTalkId) {
@ -578,59 +605,55 @@ class ModuleTalk extends Module {
}
return $aTalkUsers;
}
/**
* Увеличивает число новых комментов у юзеров
*
* @param unknown_type $sTalkId
* @param unknown_type $aExcludeId
* @return unknown
* @param int $sTalkId ID разговора
* @param array $aExcludeId Список ID пользователей для исключения
* @return int
*/
public function increaseCountCommentNew($sTalkId,$aExcludeId=null) {
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("update_talk_user_{$sTalkId}"));
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("update_talk_user"));
return $this->oMapper->increaseCountCommentNew($sTalkId,$aExcludeId);
}
/**
* Получает привязку письма к ибранному(добавлено ли письмо в избранное у юзера)
*
* @param string $sTalkId
* @param string $sUserId
* @param int $sTalkId ID разговора
* @param int $sUserId ID пользователя
* @return ModuleFavourite_EntityFavourite|null
*/
public function GetFavouriteTalk($sTalkId,$sUserId) {
return $this->Favourite_GetFavourite($sTalkId,'talk',$sUserId);
}
/**
* Получить список избранного по списку айдишников
*
* @param array $aTalkId
* @param array $aTalkId Список ID разговоров
* @param int $sUserId ID пользователя
* @return array
*/
public function GetFavouriteTalkByArray($aTalkId,$sUserId) {
return $this->Favourite_GetFavouritesByArray($aTalkId,'talk',$sUserId);
}
/**
* Получить список избранного по списку айдишников, но используя единый кеш
*
* @param array $aTalkId
* @param int $sUserId
* @param array $aTalkId Список ID разговоров
* @param int $sUserId ID пользователя
* @return array
*/
public function GetFavouriteTalksByArraySolid($aTalkId,$sUserId) {
return $this->Favourite_GetFavouritesByArraySolid($aTalkId,'talk',$sUserId);
}
/**
* Получает список писем из избранного пользователя
*
* @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 GetTalksFavouriteByUserId($sUserId,$iCurrPage,$iPerPage) {
// Получаем список идентификаторов избранных комментов
@ -655,7 +678,7 @@ class ModuleTalk extends Module {
/**
* Возвращает число писем в избранном
*
* @param string $sUserId
* @param int $sUserId ID пользователя
* @return int
*/
public function GetCountTalksFavouriteByUserId($sUserId) {
@ -664,7 +687,7 @@ class ModuleTalk extends Module {
/**
* Добавляет письмо в избранное
*
* @param ModuleFavourite_EntityFavourite $oFavourite
* @param ModuleFavourite_EntityFavourite $oFavourite Объект избранного
* @return bool
*/
public function AddFavouriteTalk(ModuleFavourite_EntityFavourite $oFavourite) {
@ -675,7 +698,7 @@ class ModuleTalk extends Module {
/**
* Удаляет письмо из избранного
*
* @param ModuleFavourite_EntityFavourite $oFavourite
* @param ModuleFavourite_EntityFavourite $oFavourite Объект избранного
* @return bool
*/
public function DeleteFavouriteTalk(ModuleFavourite_EntityFavourite $oFavourite) {
@ -686,29 +709,27 @@ class ModuleTalk extends Module {
/**
* Получает информацию о пользователях, занесенных в блеклист
*
* @param string $sUserId
* @param int $sUserId ID пользователя
* @return array
*/
public function GetBlacklistByUserId($sUserId) {
$data=$this->oMapper->GetBlacklistByUserId($sUserId);
return $this->User_GetUsersAdditionalData($data);
}
/**
* Возвращает пользователей, у которых данный занесен в Blacklist
*
* @param string $sUserId
* @param int $sUserId ID пользователя
* @return array
*/
public function GetBlacklistByTargetId($sUserId) {
return $this->oMapper->GetBlacklistByTargetId($sUserId);
}
/**
* Добавление пользователя в блеклист по переданному идентификатору
*
* @param string $sTargetId
* @param string $sUserId
* @param int $sTargetId ID пользователя, которого добавляем в блэклист
* @param int $sUserId ID пользователя
* @return bool
*/
public function AddUserToBlacklist($sTargetId, $sUserId) {
@ -717,8 +738,8 @@ class ModuleTalk extends Module {
/**
* Добавление пользователя в блеклист по списку идентификаторов
*
* @param array $aTargetId
* @param string $sUserId
* @param array $aTargetId Список ID пользователей, которых добавляем в блэклист
* @param int $sUserId ID пользователя
* @return bool
*/
public function AddUserArrayToBlacklist($aTargetId, $sUserId) {
@ -730,21 +751,20 @@ class ModuleTalk extends Module {
/**
* Удаляем пользователя из блеклиста
*
* @param string $sTargetId
* @param string $sUserId
* @param int $sTargetId ID пользователя, которого удаляем из блэклиста
* @param int $sUserId ID пользователя
* @return bool
*/
public function DeleteUserFromBlacklist($sTargetId, $sUserId) {
return $this->oMapper->DeleteUserFromBlacklist($sTargetId, $sUserId);
}
/**
* Возвращает список последних инбоксов пользователя,
* отправленных не более чем $iTimeLimit секунд назад
*
* @param string $sUserId
* @param int $iTimeLimit
* @param int $iCountLimit
* @param int $sUserId ID пользователя
* @param int $iTimeLimit Количество секунд
* @param int $iCountLimit Количество
* @return array
*/
public function GetLastTalksByUserId($sUserId,$iTimeLimit,$iCountLimit=1) {
@ -756,11 +776,10 @@ class ModuleTalk extends Module {
return $aTalks;
}
/**
* Удаление письма из БД
*
* @param unknown_type $iTalkId
* @param int $iTalkId ID разговора
*/
public function DeleteTalk($iTalkId) {
$this->oMapper->deleteTalk($iTalkId);

View file

@ -15,40 +15,95 @@
---------------------------------------------------------
*/
class ModuleTalk_EntityTalk extends Entity
{
public function getId() {
return $this->_getDataOne('talk_id');
}
public function getUserId() {
return $this->_getDataOne('user_id');
}
public function getTitle() {
return $this->_getDataOne('talk_title');
}
public function getText() {
return $this->_getDataOne('talk_text');
}
public function getDate() {
return $this->_getDataOne('talk_date');
}
public function getDateLast() {
return $this->_getDataOne('talk_date_last');
}
/**
* Объект сущности сообщения
*
* @package modules.talk
* @since 1.0
*/
class ModuleTalk_EntityTalk extends Entity {
/**
* Возвращает ID сообщения
*
* @return int|null
*/
public function getId() {
return $this->_getDataOne('talk_id');
}
/**
* Возвращает ID пользователя
*
* @return int|null
*/
public function getUserId() {
return $this->_getDataOne('user_id');
}
/**
* Вовзращает заголовок сообщения
*
* @return string|null
*/
public function getTitle() {
return $this->_getDataOne('talk_title');
}
/**
* Возвращает текст сообщения
*
* @return string|null
*/
public function getText() {
return $this->_getDataOne('talk_text');
}
/**
* Возвращает дату сообщения
*
* @return string|null
*/
public function getDate() {
return $this->_getDataOne('talk_date');
}
/**
* Возвращает дату последнего сообщения
*
* @return string|null
*/
public function getDateLast() {
return $this->_getDataOne('talk_date_last');
}
/**
* Возвращает ID последнего пользователя
*
* @return int|null
*/
public function getUserIdLast() {
return $this->_getDataOne('talk_user_id_last');
}
public function getUserIp() {
return $this->_getDataOne('talk_user_ip');
}
/**
* Вовзращает IP пользователя
*
* @return string|null
*/
public function getUserIp() {
return $this->_getDataOne('talk_user_ip');
}
/**
* Возвращает ID последнего комментария
*
* @return int|null
*/
public function getCommentIdLast() {
return $this->_getDataOne('talk_comment_id_last');
}
public function getCountComment() {
return $this->_getDataOne('talk_count_comment');
}
/**
* Возвращает количество комментариев
*
* @return int|null
*/
public function getCountComment() {
return $this->_getDataOne('talk_count_comment');
}
/**
* Возвращает последний текст(коммент) из письма, если комментов нет, то текст исходного сообщения
*
@ -60,80 +115,168 @@ class ModuleTalk_EntityTalk extends Entity
}
return $this->getText();
}
public function getUsers() {
return $this->_getDataOne('users');
}
public function getUser() {
return $this->_getDataOne('user');
}
public function getTalkUser() {
return $this->_getDataOne('talk_user');
}
/**
* Возращает true, если разговор занесен в избранное
*
* @return bool
*/
public function getIsFavourite() {
return $this->_getDataOne('talk_is_favourite');
}
/**
* Получает пользователей разговора
* Возвращает список пользователей
*
* @return array|null
*/
public function getUsers() {
return $this->_getDataOne('users');
}
/**
* Возвращает объект пользователя
*
* @return ModuleUser_EntityUser|null
*/
public function getUser() {
return $this->_getDataOne('user');
}
/**
* Возвращает объект связи пользователя с сообщением
*
* @return ModuleTalk_EntityTalkUser|null
*/
public function getTalkUser() {
return $this->_getDataOne('talk_user');
}
/**
* Возращает true, если разговор занесен в избранное
*
* @return bool
*/
public function getIsFavourite() {
return $this->_getDataOne('talk_is_favourite');
}
/**
* Возращает пользователей разговора
*
* @return array
*/
public function getTalkUsers() {
return $this->_getDataOne('talk_users');
}
public function getTalkUsers() {
return $this->_getDataOne('talk_users');
}
/**
* Устанавливает ID сообщения
*
* @param int $data
*/
public function setId($data) {
$this->_aData['talk_id']=$data;
}
public function setUserId($data) {
$this->_aData['user_id']=$data;
}
public function setTitle($data) {
$this->_aData['talk_title']=$data;
}
public function setText($data) {
$this->_aData['talk_text']=$data;
}
public function setDate($data) {
$this->_aData['talk_date']=$data;
}
public function setDateLast($data) {
$this->_aData['talk_date_last']=$data;
}
$this->_aData['talk_id']=$data;
}
/**
* Устанавливает ID пользователя
*
* @param int $data
*/
public function setUserId($data) {
$this->_aData['user_id']=$data;
}
/**
* Устанавливает заголовок сообщения
*
* @param string $data
*/
public function setTitle($data) {
$this->_aData['talk_title']=$data;
}
/**
* Устанавливает текст сообщения
*
* @param string $data
*/
public function setText($data) {
$this->_aData['talk_text']=$data;
}
/**
* Устанавливает дату разговора
*
* @param string $data
*/
public function setDate($data) {
$this->_aData['talk_date']=$data;
}
/**
* Устанавливает дату последнего сообщения в разговоре
*
* @param string $data
*/
public function setDateLast($data) {
$this->_aData['talk_date_last']=$data;
}
/**
* Устанавливает ID последнего пользователя
*
* @param int $data
*/
public function setUserIdLast($data) {
$this->_aData['talk_user_id_last']=$data;
}
public function setUserIp($data) {
$this->_aData['talk_user_ip']=$data;
}
/**
* Устанавливает IP пользователя
*
* @param string $data
*/
public function setUserIp($data) {
$this->_aData['talk_user_ip']=$data;
}
/**
* Устанавливает ID последнего комментария
*
* @param string $data
*/
public function setCommentIdLast($data) {
$this->_aData['talk_comment_id_last']=$data;
}
public function setCountComment($data) {
$this->_aData['talk_count_comment']=$data;
}
public function setUsers($data) {
$this->_aData['users']=$data;
}
public function setUser($data) {
$this->_aData['user']=$data;
}
public function setTalkUser($data) {
$this->_aData['talk_user']=$data;
}
public function setIsFavourite($data) {
$this->_aData['talk_is_favourite']=$data;
}
public function setTalkUsers($data) {
$this->_aData['talk_users']=$data;
}
/**
* Устанавливает количество комментариев
*
* @param int $data
*/
public function setCountComment($data) {
$this->_aData['talk_count_comment']=$data;
}
/**
* Устанавливает список пользователей
*
* @param array $data
*/
public function setUsers($data) {
$this->_aData['users']=$data;
}
/**
* Устанавливает объект пользователя
*
* @param ModuleUser_EntityUser $data
*/
public function setUser($data) {
$this->_aData['user']=$data;
}
/**
* Устанавливает объект связи
*
* @param ModuleTalk_EntityTalkUser $data
*/
public function setTalkUser($data) {
$this->_aData['talk_user']=$data;
}
/**
* Устанавливает факт налиция разговора в избранном текущего пользователя
*
* @param bool $data
*/
public function setIsFavourite($data) {
$this->_aData['talk_is_favourite']=$data;
}
/**
* Устанавливает список связей
*
* @param array $data
*/
public function setTalkUsers($data) {
$this->_aData['talk_users']=$data;
}
}
?>

View file

@ -15,63 +15,127 @@
---------------------------------------------------------
*/
class ModuleTalk_EntityTalkUser extends Entity
{
public function getTalkId() {
return $this->_getDataOne('talk_id');
}
public function getUserId() {
return $this->_getDataOne('user_id');
}
public function getDateLast() {
return $this->_getDataOne('date_last');
}
public function getCommentIdLast() {
return $this->_getDataOne('comment_id_last');
}
public function getCommentCountNew() {
return $this->_getDataOne('comment_count_new');
}
/**
* Возвращает статус активности пользователя
*
* @return int
*/
public function getUserActive(){
/**
* Объект связи пользователя с разовором
*
* @package modules.talk
* @since 1.0
*/
class ModuleTalk_EntityTalkUser extends Entity {
/**
* Возвращает ID разговора
*
* @return int|null
*/
public function getTalkId() {
return $this->_getDataOne('talk_id');
}
/**
* Возвращает ID пользователя
*
* @return int|null
*/
public function getUserId() {
return $this->_getDataOne('user_id');
}
/**
* Возвращает дату последнего сообщения
*
* @return string|null
*/
public function getDateLast() {
return $this->_getDataOne('date_last');
}
/**
* Возвращает ID последнего комментария
*
* @return int|null
*/
public function getCommentIdLast() {
return $this->_getDataOne('comment_id_last');
}
/**
* Возвращает количество новых сообщений
*
* @return int|null
*/
public function getCommentCountNew() {
return $this->_getDataOne('comment_count_new');
}
/**
* Возвращает статус активности пользователя
*
* @return int
*/
public function getUserActive(){
return $this->_getDataOne('talk_user_active') ? $this->_getDataOne('talk_user_active') : ModuleTalk::TALK_USER_ACTIVE;
}
/**
* Возвращает соответствующий пользователю объект UserEntity
*
* @return UserEntity | null
*/
public function getUser() {
return $this->_getDataOne('user');
}
}
/**
* Возвращает соответствующий пользователю объект
*
* @return ModuleUser_EntityUser | null
*/
public function getUser() {
return $this->_getDataOne('user');
}
/**
* Устанавливает ID разговора
*
* @param int $data
*/
public function setTalkId($data) {
$this->_aData['talk_id']=$data;
}
public function setUserId($data) {
$this->_aData['user_id']=$data;
}
public function setDateLast($data) {
$this->_aData['date_last']=$data;
}
public function setCommentIdLast($data) {
$this->_aData['comment_id_last']=$data;
}
public function setCommentCountNew($data) {
$this->_aData['comment_count_new']=$data;
}
public function setUserActive($data) {
$this->_aData['talk_user_active']=$data;
}
public function setUser($data) {
$this->_aData['user']=$data;
}
$this->_aData['talk_id']=$data;
}
/**
* Устанавливает ID пользователя
*
* @param int $data
*/
public function setUserId($data) {
$this->_aData['user_id']=$data;
}
/**
* Устанавливает последнюю дату
*
* @param string $data
*/
public function setDateLast($data) {
$this->_aData['date_last']=$data;
}
/**
* Устанавливает ID последнее комментария
*
* @param int $data
*/
public function setCommentIdLast($data) {
$this->_aData['comment_id_last']=$data;
}
/**
* Устанавливает количество новых комментариев
*
* @param int $data
*/
public function setCommentCountNew($data) {
$this->_aData['comment_count_new']=$data;
}
/**
* Устанавливает статус связи
*
* @param int $data
*/
public function setUserActive($data) {
$this->_aData['talk_user_active']=$data;
}
/**
* Устанавливает объект пользователя
*
* @param ModuleUser_EntityUser $data
*/
public function setUser($data) {
$this->_aData['user']=$data;
}
}
?>

View file

@ -15,7 +15,19 @@
---------------------------------------------------------
*/
class ModuleTalk_MapperTalk extends Mapper {
/**
* Объект маппера для работы с БД
*
* @package modules.talk
* @since 1.0
*/
class ModuleTalk_MapperTalk extends Mapper {
/**
* Добавляет новую тему разговора
*
* @param ModuleTalk_EntityTalk $oTalk Объект сообщения
* @return int|bool
*/
public function AddTalk(ModuleTalk_EntityTalk $oTalk) {
$sql = "INSERT INTO ".Config::Get('db.table.talk')."
(user_id,
@ -27,14 +39,18 @@ class ModuleTalk_MapperTalk extends Mapper {
talk_user_ip
)
VALUES(?d, ?, ?, ?, ?, ?, ?)
";
";
if ($iId=$this->oDb->query($sql,$oTalk->getUserId(),$oTalk->getTitle(),$oTalk->getText(),$oTalk->getDate(),$oTalk->getDateLast(),$oTalk->getUserIdLast(),$oTalk->getUserIp()))
{
return $iId;
}
}
return false;
}
/**
* Удаление письма из БД
*
* @param int $iTalkId ID разговора
*/
public function DeleteTalk($iTalkId) {
// Удаление беседы
$sql = 'DELETE FROM '.Config::Get('db.table.talk').' WHERE talk_id = ?d';
@ -43,7 +59,12 @@ class ModuleTalk_MapperTalk extends Mapper {
$sql = 'DELETE FROM '.Config::Get('db.table.talk_user').' WHERE talk_id = ?d';
$this->oDb->query($sql,$iTalkId);
}
/**
* Обновление разговора
*
* @param ModuleTalk_EntityTalk $oTalk Объект сообщения
* @return int
*/
public function UpdateTalk(ModuleTalk_EntityTalk $oTalk) {
$sql = "UPDATE ".Config::Get('db.table.talk')." SET
talk_date_last = ? ,
@ -52,15 +73,20 @@ class ModuleTalk_MapperTalk extends Mapper {
talk_count_comment = ?
WHERE
talk_id = ?d
";
";
return $this->oDb->query($sql,$oTalk->getDateLast(),$oTalk->getUserIdLast(),$oTalk->getCommentIdLast(),$oTalk->getCountComment(),$oTalk->getId());
}
/**
* Получить список разговоров по списку айдишников
*
* @param array $aArrayId Список ID сообщений
* @return array
*/
public function GetTalksByArrayId($aArrayId) {
if (!is_array($aArrayId) or count($aArrayId)==0) {
return array();
}
$sql = "SELECT
t.*
FROM
@ -73,15 +99,21 @@ class ModuleTalk_MapperTalk extends Mapper {
foreach ($aRows as $aRow) {
$aTalks[]=Engine::GetEntity('Talk',$aRow);
}
}
}
return $aTalks;
}
/**
* Получить список отношений разговор-юзер по списку айдишников
*
* @param array $aArrayId Список ID сообщений
* @param int $sUserId ID пользователя
* @return array
*/
public function GetTalkUserByArray($aArrayId,$sUserId) {
if (!is_array($aArrayId) or count($aArrayId)==0) {
return array();
}
$sql = "SELECT
t.*
FROM
@ -99,8 +131,13 @@ class ModuleTalk_MapperTalk extends Mapper {
}
return $aTalkUsers;
}
public function GetTalkById($sId) {
/**
* Получает тему разговора по айдишнику
*
* @param int $sId ID сообщения
* @return ModuleTalk_EntityTalk|null
*/
public function GetTalkById($sId) {
$sql = "SELECT
t.*,
@ -113,14 +150,18 @@ class ModuleTalk_MapperTalk extends Mapper {
AND
t.user_id=u.user_id
";
if ($aRow=$this->oDb->selectRow($sql,$sId)) {
return Engine::GetEntity('Talk',$aRow);
}
return null;
}
/**
* Добавляет юзера к разговору(теме)
*
* @param ModuleTalk_EntityTalkUser $oTalkUser Объект связи пользователя и сообщения(разговора)
* @return bool
*/
public function AddTalkUser(ModuleTalk_EntityTalkUser $oTalkUser) {
$sql = "INSERT INTO ".Config::Get('db.table.talk_user')."
(talk_id,
@ -131,20 +172,25 @@ class ModuleTalk_MapperTalk extends Mapper {
VALUES(?d, ?d, ?, ?d)
ON DUPLICATE KEY
UPDATE talk_user_active = ?d
";
";
if ($this->oDb->query($sql,
$oTalkUser->getTalkId(),
$oTalkUser->getUserId(),
$oTalkUser->getDateLast(),
$oTalkUser->getUserActive(),
$oTalkUser->getUserActive()
$oTalkUser->getTalkId(),
$oTalkUser->getUserId(),
$oTalkUser->getDateLast(),
$oTalkUser->getUserActive(),
$oTalkUser->getUserActive()
)===0) {
return true;
}
}
return false;
}
public function UpdateTalkUser(ModuleTalk_EntityTalkUser $oTalkUser) {
/**
* Обновляет связку разговор-юзер
*
* @param ModuleTalk_EntityTalkUser $oTalkUser Объект связи пользователя с разговором
* @return bool
*/
public function UpdateTalkUser(ModuleTalk_EntityTalkUser $oTalkUser) {
$sql = "UPDATE ".Config::Get('db.table.talk_user')."
SET
date_last = ?,
@ -155,8 +201,8 @@ class ModuleTalk_MapperTalk extends Mapper {
talk_id = ?d
AND
user_id = ?d
";
";
if (
$this->oDb->query(
$sql,
@ -169,15 +215,21 @@ class ModuleTalk_MapperTalk extends Mapper {
)
) {
return true;
}
}
return false;
}
/**
* Удаляет юзера из разговора
*
* @param array $aTalkId Список ID сообщений
* @param int $sUserId ID пользователя
* @param int $iActive Статус связи
* @return bool
*/
public function DeleteTalkUserByArray($aTalkId,$sUserId,$iActive) {
if (!is_array($aTalkId)) {
$aTalkId=array($aTalkId);
}
}
$sql = "
UPDATE ".Config::Get('db.table.talk_user')."
SET
@ -186,16 +238,19 @@ class ModuleTalk_MapperTalk extends Mapper {
talk_id IN (?a)
AND
user_id = ?d
";
if ($this->oDb->query($sql,$iActive,$aTalkId,$sUserId))
";
if ($this->oDb->query($sql,$iActive,$aTalkId,$sUserId))
{
return true;
}
}
return false;
}
/**
* Возвращает количество новых комментариев
*
* @param $sUserId
* @return bool
*/
public function GetCountCommentNew($sUserId) {
$sql = "
SELECT
@ -212,7 +267,12 @@ class ModuleTalk_MapperTalk extends Mapper {
}
return false;
}
/**
* Получает число новых тем и комментов где есть юзер
*
* @param int $sUserId ID пользователя
* @return int
*/
public function GetCountTalkNew($sUserId) {
$sql = "
SELECT
@ -231,8 +291,16 @@ class ModuleTalk_MapperTalk extends Mapper {
}
return false;
}
public function GetTalksByUserId($sUserId,&$iCount,$iCurrPage,$iPerPage) {
/**
* Получить все темы разговора где есть юзер
*
* @param int $sUserId ID пользователя
* @param int $iCount Возвращает общее количество элементов
* @param int $iCurrPage Номер страницы
* @param int $iPerPage Количество элементов на страницу
* @return array
*/
public function GetTalksByUserId($sUserId,&$iCount,$iCurrPage,$iPerPage) {
$sql = "SELECT
tu.talk_id
FROM
@ -247,7 +315,7 @@ class ModuleTalk_MapperTalk extends Mapper {
ORDER BY t.talk_date_last desc, t.talk_date desc
LIMIT ?d, ?d
";
$aTalks=array();
if ($aRows=$this->oDb->selectPage($iCount,$sql,$sUserId,ModuleTalk::TALK_USER_ACTIVE,($iCurrPage-1)*$iPerPage, $iPerPage)) {
foreach ($aRows as $aRow) {
@ -255,9 +323,14 @@ class ModuleTalk_MapperTalk extends Mapper {
}
}
return $aTalks;
}
}
/**
* Получает список юзеров в теме разговора
*
* @param int $sTalkId ID разговора
* @param array $aUserActive Список статусов
* @return array
*/
public function GetUsersTalk($sTalkId,$aUserActive=array()) {
$sql = "
SELECT
@ -267,9 +340,9 @@ class ModuleTalk_MapperTalk extends Mapper {
WHERE
talk_id = ?
{ AND talk_user_active IN(?a) }
";
";
$aReturn=array();
if ($aRows=$this->oDb->select($sql,$sTalkId,
if ($aRows=$this->oDb->select($sql,$sTalkId,
(count($aUserActive) ? $aUserActive : DBSIMPLE_SKIP )
)) {
foreach ($aRows as $aRow) {
@ -279,25 +352,30 @@ class ModuleTalk_MapperTalk extends Mapper {
return $aReturn;
}
/**
* Увеличивает число новых комментов у юзеров
*
* @param int $sTalkId ID разговора
* @param array $aExcludeId Список ID пользователей для исключения
* @return int
*/
public function increaseCountCommentNew($sTalkId,$aExcludeId) {
if (!is_null($aExcludeId) and !is_array($aExcludeId)) {
$aExcludeId=array($aExcludeId);
}
$sql = "UPDATE
".Config::Get('db.table.talk_user')."
SET comment_count_new=comment_count_new+1
WHERE
talk_id = ?
{ AND user_id NOT IN (?a) }";
{ AND user_id NOT IN (?a) }";
return $this->oDb->select($sql,$sTalkId,!is_null($aExcludeId) ? $aExcludeId : DBSIMPLE_SKIP);
}
/**
* Возвращает массив участников разговора
* Возвращает массив пользователей, участвующих в разговоре
*
* @param string $sTalkId
* @param int $sTalkId ID разговора
* @return array
*/
public function GetTalkUsers($sTalkId) {
@ -309,7 +387,7 @@ class ModuleTalk_MapperTalk extends Mapper {
WHERE
talk_id = ?
";
";
$aReturn=array();
if ($aRows=$this->oDb->select($sql,$sTalkId)) {
foreach ($aRows as $aRow) {
@ -317,16 +395,16 @@ class ModuleTalk_MapperTalk extends Mapper {
}
}
return $aReturn;
return $aReturn;
}
/**
* Возвращает список идентификаторов писем, удовлетворяющих условию фильтра
* Получить все темы разговора по фильтру
*
* @param array $aFilter
* @param int $iCount
* @param int $iCurrPage
* @param int $iPerPage
* @return array
* @param array $aFilter Фильтр
* @param int $iCount Возвращает общее количество элементов
* @param int $iCurrPage Номер страницы
* @param int $iPerPage Количество элементов на страницу
* @return array('collection'=>array,'count'=>int)
*/
public function GetTalksByFilter($aFilter,&$iCount,$iCurrPage,$iPerPage) {
if (isset($aFilter['id']) and !is_array($aFilter['id'])) {
@ -354,7 +432,7 @@ class ModuleTalk_MapperTalk extends Mapper {
ORDER BY t.talk_date_last desc, t.talk_date desc
LIMIT ?d, ?d
";
$aTalks=array();
if (
$aRows=$this->oDb->selectPage(
@ -380,57 +458,53 @@ class ModuleTalk_MapperTalk extends Mapper {
}
return $aTalks;
}
/**
* Возвращает идентификаторы пользователей, добавленых в блеклист
* Получает информацию о пользователях, занесенных в блеклист
*
* @param string $sUserId
* @param int $sUserId ID пользователя
* @return array
*/
public function GetBlacklistByUserId($sUserId) {
public function GetBlacklistByUserId($sUserId) {
$sql = "SELECT
tb.user_target_id
FROM
".Config::Get('db.table.talk_blacklist')." as tb
WHERE
tb.user_id = ?d";
tb.user_id = ?d";
$aTargetId=array();
if ($aRows=$this->oDb->select($sql,$sUserId)) {
foreach ($aRows as $aRow) {
$aTargetId[]=$aRow['user_target_id'];
}
}
}
return $aTargetId;
}
}
/**
* Получает идентификаторы пользователей, у которых текущей
* занесен в блеклист
* Возвращает пользователей, у которых данный занесен в Blacklist
*
* @param string $sUserId
* @param int $sUserId ID пользователя
* @return array
*/
public function GetBlacklistByTargetId($sUserId) {
public function GetBlacklistByTargetId($sUserId) {
$sql = "SELECT
tb.user_id
FROM
".Config::Get('db.table.talk_blacklist')." as tb
WHERE
tb.user_target_id = ?d";
tb.user_target_id = ?d";
$aUserId=array();
if ($aRows=$this->oDb->select($sql,$sUserId)) {
foreach ($aRows as $aRow) {
$aUserId[]=$aRow['user_id'];
}
}
}
return $aUserId;
}
/**
* Добавление пользователя в блеклист
* Добавление пользователя в блеклист по переданному идентификатору
*
* @param string $sTargetId
* @param string $sUserId
* @param int $sTargetId ID пользователя, которого добавляем в блэклист
* @param int $sUserId ID пользователя
* @return bool
*/
public function AddUserToBlacklist($sTargetId, $sUserId) {
@ -439,53 +513,51 @@ class ModuleTalk_MapperTalk extends Mapper {
( user_id, user_target_id )
VALUES
(?d, ?d)
";
";
if ($this->oDb->query($sql,$sUserId,$sTargetId)===0) {
return true;
}
return false;
}
return false;
}
/**
* Удаление пользователя из блеклиста
* Удаляем пользователя из блеклиста
*
* @param string $sTargetId
* @param stringe $sUserId
* @param int $sTargetId ID пользователя, которого удаляем из блэклиста
* @param int $sUserId ID пользователя
* @return bool
*/
public function DeleteUserFromBlacklist($sTargetId, $sUserId) {
public function DeleteUserFromBlacklist($sTargetId, $sUserId) {
$sql = "
DELETE FROM ".Config::Get('db.table.talk_blacklist')."
WHERE
user_id = ?d
AND
user_target_id = ?d
";
";
if ($this->oDb->query($sql,$sUserId,$sTargetId)) {
return true;
}
return false;
}
return false;
}
/**
* Добавление пользователей в блеклист по массиву переданных идентификаторов
* Добавление пользователя в блеклист по списку идентификаторов
*
* @param array $aTargetId
* @param string $sUserId
* @param array $aTargetId Список ID пользователей, которых добавляем в блэклист
* @param int $sUserId ID пользователя
* @return bool
*/
public function AddUserArrayToBlacklist($aTargetId, $sUserId) {
public function AddUserArrayToBlacklist($aTargetId, $sUserId) {
$sql = "
INSERT INTO ".Config::Get('db.table.talk_blacklist')."
( user_id, user_target_id )
VALUES
(?d, ?d)
";
$bOk=true;
";
$bOk=true;
foreach ($aTargetId as $sTarget) {
$bOk = $bOk && $this->oDb->query($sql, $sUserId, $sTarget);
}
return $bOk;
}
return $bOk;
}
}
?>

View file

@ -18,21 +18,26 @@
/**
* Модуль Tools - различные вспомогательные методы
*
* @package modules.tools
* @since 1.0
*/
class ModuleTools extends Module {
/**
* Инициализация
*
*/
public function Init() {
}
/**
* Строит логарифмическое облако - расчитывает значение size в зависимости от count
* У объектов в коллекции обязательно должны быть методы getCount() и setSize()
*
* @param array $aCollection
* @param aray $aCollection Список тегов
* @param int $iMinSize Минимальный размер
* @param int $iMaxSize Максимальный размер
* @return array
*/
public function MakeCloud($aCollection,$iMinSize=1,$iMaxSize=10) {
if (count($aCollection)) {