mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-05-19 09:18:18 +03:00
Документация классов
This commit is contained in:
parent
b44e685809
commit
d630dd12c7
|
@ -18,6 +18,8 @@
|
|||
/**
|
||||
* Модуль рассылок уведомлений пользователям
|
||||
*
|
||||
* @package modules.notify
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleNotify extends Module {
|
||||
/**
|
||||
|
@ -37,11 +39,12 @@ class ModuleNotify extends Module {
|
|||
*/
|
||||
protected $aTask=array();
|
||||
/**
|
||||
* Меппер
|
||||
* Объект маппера
|
||||
*
|
||||
* @var Mapper_Notify
|
||||
* @var ModuleNotify_MapperNotify
|
||||
*/
|
||||
protected $oMapper=null;
|
||||
|
||||
/**
|
||||
* Инициализация модуля
|
||||
* Создаём локальный экземпляр модуля Viewer
|
||||
|
@ -52,21 +55,21 @@ class ModuleNotify extends Module {
|
|||
$this->oViewerLocal=$this->Viewer_GetLocalViewer();
|
||||
$this->oMapper=Engine::GetMapper(__CLASS__);
|
||||
}
|
||||
|
||||
/**
|
||||
* Отправляет юзеру уведомление о новом комментарии в его топике
|
||||
*
|
||||
* @param ModuleUser_EntityUser $oUserTo
|
||||
* @param ModuleTopic_EntityTopic $oTopic
|
||||
* @param CommentEntity_TopicComment $oComment
|
||||
* @param ModuleUser_EntityUser $oUserComment
|
||||
* @param ModuleUser_EntityUser $oUserTo Объект пользователя кому отправляем
|
||||
* @param ModuleTopic_EntityTopic $oTopic Объект топика
|
||||
* @param ModuleComment_EntityComment $oComment Объект комментария
|
||||
* @param ModuleUser_EntityUser $oUserComment Объект пользователя, написавшего комментарий
|
||||
* @return bool
|
||||
*/
|
||||
public function SendCommentNewToAuthorTopic(ModuleUser_EntityUser $oUserTo, ModuleTopic_EntityTopic $oTopic, ModuleComment_EntityComment $oComment, ModuleUser_EntityUser $oUserComment) {
|
||||
/**
|
||||
* Проверяем можно ли юзеру рассылать уведомление
|
||||
*/
|
||||
if (!$oUserTo->getSettingsNoticeNewComment()) {
|
||||
return ;
|
||||
return false;
|
||||
}
|
||||
$this->Send(
|
||||
$oUserTo,
|
||||
|
@ -79,22 +82,23 @@ class ModuleNotify extends Module {
|
|||
'oUserComment' => $oUserComment,
|
||||
)
|
||||
);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Отправляет юзеру уведомление об ответе на его комментарий
|
||||
*
|
||||
* @param ModuleUser_EntityUser $oUserTo
|
||||
* @param ModuleTopic_EntityTopic $oTopic
|
||||
* @param CommentEntity_TopicComment $oComment
|
||||
* @param ModuleUser_EntityUser $oUserComment
|
||||
* @param ModuleUser_EntityUser $oUserTo Объект пользователя кому отправляем
|
||||
* @param ModuleTopic_EntityTopic $oTopic Объект топика
|
||||
* @param ModuleComment_EntityComment $oComment Объект комментария
|
||||
* @param ModuleUser_EntityUser $oUserComment Объект пользователя, написавшего комментарий
|
||||
* @return bool
|
||||
*/
|
||||
public function SendCommentReplyToAuthorParentComment(ModuleUser_EntityUser $oUserTo, ModuleTopic_EntityTopic $oTopic, ModuleComment_EntityComment $oComment, ModuleUser_EntityUser $oUserComment) {
|
||||
/**
|
||||
* Проверяем можно ли юзеру рассылать уведомление
|
||||
*/
|
||||
if (!$oUserTo->getSettingsNoticeReplyComment()) {
|
||||
return ;
|
||||
return false;
|
||||
}
|
||||
$this->Send(
|
||||
$oUserTo,
|
||||
|
@ -107,22 +111,23 @@ class ModuleNotify extends Module {
|
|||
'oUserComment' => $oUserComment,
|
||||
)
|
||||
);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Отправляет юзеру уведомление о новом топике в блоге, в котором он состоит
|
||||
*
|
||||
* @param ModuleUser_EntityUser $oUserTo
|
||||
* @param ModuleTopic_EntityTopic $oTopic
|
||||
* @param ModuleBlog_EntityBlog $oBlog
|
||||
* @param ModuleUser_EntityUser $oUserTopic
|
||||
* @param ModuleUser_EntityUser $oUserTo Объект пользователя кому отправляем
|
||||
* @param ModuleTopic_EntityTopic $oTopic Объект топика
|
||||
* @param ModuleBlog_EntityBlog $oBlog Объект блога
|
||||
* @param ModuleUser_EntityUser $oUserTopic Объект пользователя, написавшего топик
|
||||
* @return bool
|
||||
*/
|
||||
public function SendTopicNewToSubscribeBlog(ModuleUser_EntityUser $oUserTo, ModuleTopic_EntityTopic $oTopic, ModuleBlog_EntityBlog $oBlog, ModuleUser_EntityUser $oUserTopic) {
|
||||
/**
|
||||
* Проверяем можно ли юзеру рассылать уведомление
|
||||
*/
|
||||
if (!$oUserTo->getSettingsNoticeNewTopic()) {
|
||||
return ;
|
||||
return false;
|
||||
}
|
||||
$this->Send(
|
||||
$oUserTo,
|
||||
|
@ -135,11 +140,12 @@ class ModuleNotify extends Module {
|
|||
'oUserTopic' => $oUserTopic,
|
||||
)
|
||||
);
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* Отправляет уведомление с новым линком активации
|
||||
*
|
||||
* @param ModuleUser_EntityUser $oUser
|
||||
* @param ModuleUser_EntityUser $oUser Объект пользователя
|
||||
*/
|
||||
public function SendReactivationCode(ModuleUser_EntityUser $oUser) {
|
||||
$this->Send(
|
||||
|
@ -151,12 +157,11 @@ class ModuleNotify extends Module {
|
|||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Отправляет уведомление при регистрации с активацией
|
||||
*
|
||||
* @param ModuleUser_EntityUser $oUser
|
||||
* @param string $sPassword
|
||||
* @param ModuleUser_EntityUser $oUser Объект пользователя
|
||||
* @param string $sPassword Пароль пользователя
|
||||
*/
|
||||
public function SendRegistrationActivate(ModuleUser_EntityUser $oUser,$sPassword) {
|
||||
$this->Send(
|
||||
|
@ -169,12 +174,11 @@ class ModuleNotify extends Module {
|
|||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Отправляет уведомление о регистрации
|
||||
*
|
||||
* @param ModuleUser_EntityUser $oUser
|
||||
* @param string $sPassword
|
||||
* @param ModuleUser_EntityUser $oUser Объект пользователя
|
||||
* @param string $sPassword Пароль пользователя
|
||||
*/
|
||||
public function SendRegistration(ModuleUser_EntityUser $oUser,$sPassword) {
|
||||
$this->Send(
|
||||
|
@ -187,13 +191,12 @@ class ModuleNotify extends Module {
|
|||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Отправляет инвайт
|
||||
*
|
||||
* @param ModuleUser_EntityUser $oUserFrom
|
||||
* @param string $sMailTo
|
||||
* @param ModuleUser_EntityInvite $oInvite
|
||||
* @param ModuleUser_EntityUser $oUserFrom Пароль пользователя, который отправляет инвайт
|
||||
* @param string $sMailTo Емайл на который отправляем инвайт
|
||||
* @param ModuleUser_EntityInvite $oInvite Объект инвайта
|
||||
*/
|
||||
public function SendInvite(ModuleUser_EntityUser $oUserFrom,$sMailTo,ModuleUser_EntityInvite $oInvite) {
|
||||
$this->Send(
|
||||
|
@ -207,20 +210,20 @@ class ModuleNotify extends Module {
|
|||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Отправляет уведомление при новом личном сообщении
|
||||
*
|
||||
* @param ModuleUser_EntityUser $oUserTo
|
||||
* @param ModuleUser_EntityUser $oUserFrom
|
||||
* @param ModuleTalk_EntityTalk $oTalk
|
||||
* @param ModuleUser_EntityUser $oUserTo Объект пользователя, которому отправляем сообщение
|
||||
* @param ModuleUser_EntityUser $oUserFrom Объект пользователя, который отправляет сообщение
|
||||
* @param ModuleTalk_EntityTalk $oTalk Объект сообщения
|
||||
* @return bool
|
||||
*/
|
||||
public function SendTalkNew(ModuleUser_EntityUser $oUserTo,ModuleUser_EntityUser $oUserFrom,ModuleTalk_EntityTalk $oTalk) {
|
||||
/**
|
||||
* Проверяем можно ли юзеру рассылать уведомление
|
||||
*/
|
||||
if (!$oUserTo->getSettingsNoticeNewTalk()) {
|
||||
return ;
|
||||
return false;
|
||||
}
|
||||
$this->Send(
|
||||
$oUserTo,
|
||||
|
@ -232,14 +235,23 @@ class ModuleNotify extends Module {
|
|||
'oTalk' => $oTalk,
|
||||
)
|
||||
);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Отправляет уведомление о новом сообщение в личке
|
||||
*
|
||||
* @param ModuleUser_EntityUser $oUserTo Объект пользователя, которому отправляем уведомление
|
||||
* @param ModuleUser_EntityUser $oUserFrom Объект пользователя, которыф написал комментарий
|
||||
* @param ModuleTalk_EntityTalk $oTalk Объект сообщения
|
||||
* @param ModuleComment_EntityComment $oTalkComment Объект комментария
|
||||
* @return bool
|
||||
*/
|
||||
public function SendTalkCommentNew(ModuleUser_EntityUser $oUserTo,ModuleUser_EntityUser $oUserFrom,ModuleTalk_EntityTalk $oTalk,ModuleComment_EntityComment $oTalkComment) {
|
||||
/**
|
||||
* Проверяем можно ли юзеру рассылать уведомление
|
||||
*/
|
||||
if (!$oUserTo->getSettingsNoticeNewTalk()) {
|
||||
return ;
|
||||
return false;
|
||||
}
|
||||
$this->Send(
|
||||
$oUserTo,
|
||||
|
@ -252,20 +264,23 @@ class ModuleNotify extends Module {
|
|||
'oTalkComment' => $oTalkComment,
|
||||
)
|
||||
);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Отправляет пользователю сообщение о добавлении его в друзья
|
||||
*
|
||||
* @param ModuleUser_EntityUser $oUserTo
|
||||
* @param ModuleUser_EntityUser $oUserFrom
|
||||
* @param ModuleUser_EntityUser $oUserTo Объект пользователя
|
||||
* @param ModuleUser_EntityUser $oUserFrom Объект пользователя, которого добавляем в друзья
|
||||
* @param string $sText Текст сообщения
|
||||
* @param string $sPath URL для подтверждения дружбы
|
||||
* @return bool
|
||||
*/
|
||||
public function SendUserFriendNew(ModuleUser_EntityUser $oUserTo,ModuleUser_EntityUser $oUserFrom, $sText,$sPath) {
|
||||
/**
|
||||
* Проверяем можно ли юзеру рассылать уведомление
|
||||
*/
|
||||
if (!$oUserTo->getSettingsNoticeNewFriend()) {
|
||||
return ;
|
||||
return false;
|
||||
}
|
||||
$this->Send(
|
||||
$oUserTo,
|
||||
|
@ -278,13 +293,15 @@ class ModuleNotify extends Module {
|
|||
'sPath' => $sPath,
|
||||
)
|
||||
);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Отправляет пользователю сообщение о приглашение его в закрытый блог
|
||||
*
|
||||
* @param ModuleUser_EntityUser $oUserTo
|
||||
* @param ModuleUser_EntityUser $oUserFrom
|
||||
* @param ModuleUser_EntityUser $oUserTo Объект пользователя, который отправляет приглашение
|
||||
* @param ModuleUser_EntityUser $oUserFrom Объект пользователя, которого приглашаем
|
||||
* @param ModuleBlog_EntityBlog $oBlog Объект блога
|
||||
* @param $sPath
|
||||
*/
|
||||
public function SendBlogUserInvite(ModuleUser_EntityUser $oUserTo,ModuleUser_EntityUser $oUserFrom, ModuleBlog_EntityBlog $oBlog,$sPath) {
|
||||
$this->Send(
|
||||
|
@ -299,12 +316,11 @@ class ModuleNotify extends Module {
|
|||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Уведомление при восстановлении пароля
|
||||
*
|
||||
* @param ModuleUser_EntityUser $oUser
|
||||
* @param ModuleUser_EntityReminder $oReminder
|
||||
* @param ModuleUser_EntityUser $oUser Объект пользователя
|
||||
* @param ModuleUser_EntityReminder $oReminder объект напоминания пароля
|
||||
*/
|
||||
public function SendReminderCode(ModuleUser_EntityUser $oUser,ModuleUser_EntityReminder $oReminder) {
|
||||
$this->Send(
|
||||
|
@ -320,8 +336,8 @@ class ModuleNotify extends Module {
|
|||
/**
|
||||
* Уведомление с новым паролем после его восставновления
|
||||
*
|
||||
* @param ModuleUser_EntityUser $oUser
|
||||
* @param unknown_type $sNewPassword
|
||||
* @param ModuleUser_EntityUser $oUser Объект пользователя
|
||||
* @param string $sNewPassword Новый пароль
|
||||
*/
|
||||
public function SendReminderPassword(ModuleUser_EntityUser $oUser,$sNewPassword) {
|
||||
$this->Send(
|
||||
|
@ -334,13 +350,12 @@ class ModuleNotify extends Module {
|
|||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Уведомление при ответе на сообщение на стене
|
||||
*
|
||||
* @param ModuleWall_EntityWall $oWallParent
|
||||
* @param ModuleWall_EntityWall $oWall
|
||||
* @param ModuleUser_EntityUser $oUserWall
|
||||
* @param ModuleWall_EntityWall $oWallParent Объект сообщения на стене, на которое отвечаем
|
||||
* @param ModuleWall_EntityWall $oWall Объект нового сообщения на стене
|
||||
* @param ModuleUser_EntityUser $oUser Объект пользователя
|
||||
*/
|
||||
public function SendWallReply(ModuleWall_EntityWall $oWallParent, ModuleWall_EntityWall $oWall, ModuleUser_EntityUser $oUser) {
|
||||
$this->Send(
|
||||
|
@ -356,12 +371,11 @@ class ModuleNotify extends Module {
|
|||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Уведомление о новом сообщение на стене
|
||||
*
|
||||
* @param ModuleWall_EntityWall $oWall
|
||||
* @param ModuleUser_EntityUser $oUser
|
||||
* @param ModuleWall_EntityWall $oWall Объект нового сообщения на стене
|
||||
* @param ModuleUser_EntityUser $oUser Объект пользователя
|
||||
*/
|
||||
public function SendWallNew(ModuleWall_EntityWall $oWall, ModuleUser_EntityUser $oUser) {
|
||||
$this->Send(
|
||||
|
@ -376,15 +390,14 @@ class ModuleNotify extends Module {
|
|||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Универсальный метод отправки уведомлений на email
|
||||
*
|
||||
* @param ModuleUser_EntityUser | string $oUserTo - кому отправляем (пользователь или email)
|
||||
* @param unknown_type $sTemplate - шаблон для отправки
|
||||
* @param unknown_type $sSubject - тема письма
|
||||
* @param unknown_type $aAssign - ассоциативный массив для загрузки переменных в шаблон письма
|
||||
* @param unknown_type $sPluginName - плагин из которого происходит отправка
|
||||
* @param ModuleUser_EntityUser|string $oUserTo Кому отправляем (пользователь или email)
|
||||
* @param string $sTemplate Шаблон для отправки
|
||||
* @param string $sSubject Тема письма
|
||||
* @param array $aAssign Ассоциативный массив для загрузки переменных в шаблон письма
|
||||
* @param string|null $sPluginName Плагин из которого происходит отправка
|
||||
*/
|
||||
public function Send($oUserTo,$sTemplate,$sSubject,$aAssign=array(),$sPluginName=null) {
|
||||
if ($oUserTo instanceof ModuleUser_EntityUser) {
|
||||
|
@ -437,8 +450,6 @@ class ModuleNotify extends Module {
|
|||
$this->Mail_Send();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* При завершении работы модуля проверяем наличие
|
||||
* отложенных заданий в массиве и при необходимости
|
||||
|
@ -450,12 +461,10 @@ class ModuleNotify extends Module {
|
|||
$this->aTask=array();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Получает массив заданий на публикацию из базы
|
||||
* с указанным количественным ограничением (выборка FIFO)
|
||||
* Получает массив заданий на публикацию из базы с указанным количественным ограничением (выборка FIFO)
|
||||
*
|
||||
* @param int $iLimit
|
||||
* @param int $iLimit Количество
|
||||
* @return array
|
||||
*/
|
||||
public function GetTasksDelayed($iLimit=10) {
|
||||
|
@ -466,7 +475,7 @@ class ModuleNotify extends Module {
|
|||
/**
|
||||
* Отправляет на e-mail
|
||||
*
|
||||
* @param ModuleNotify_EntityTask $oTask
|
||||
* @param ModuleNotify_EntityTask $oTask Объект задания на отправку
|
||||
*/
|
||||
public function SendTask($oTask) {
|
||||
$this->Mail_SetAdress($oTask->getUserMail(),$oTask->getUserLogin());
|
||||
|
@ -478,7 +487,7 @@ class ModuleNotify extends Module {
|
|||
/**
|
||||
* Удаляет отложенное Notify-задание из базы
|
||||
*
|
||||
* @param ModuleNotify_EntityTask $oTask
|
||||
* @param ModuleNotify_EntityTask $oTask Объект задания на отправку
|
||||
* @return bool
|
||||
*/
|
||||
public function DeleteTask($oTask) {
|
||||
|
@ -487,18 +496,17 @@ class ModuleNotify extends Module {
|
|||
/**
|
||||
* Удаляет отложенные Notify-задания по списку идентификаторов
|
||||
*
|
||||
* @param array $aArrayId
|
||||
* @param array $aArrayId Список ID заданий на отправку
|
||||
* @return bool
|
||||
*/
|
||||
public function DeleteTaskByArrayId($aArrayId) {
|
||||
return $this->oMapper->DeleteTaskByArrayId($aArrayId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает путь к шаблону по переданному имени
|
||||
*
|
||||
* @param string $sName
|
||||
* @param string $sPluginName
|
||||
* @param string $sName Название шаблона
|
||||
* @param string $sPluginName Название или класс плагина
|
||||
* @return string
|
||||
*/
|
||||
public function GetTemplatePath($sName,$sPluginName=null) {
|
||||
|
|
|
@ -15,51 +15,126 @@
|
|||
---------------------------------------------------------
|
||||
*/
|
||||
|
||||
class ModuleNotify_EntityTask extends Entity
|
||||
{
|
||||
public function getTaskId() {
|
||||
return $this->_getDataOne('notify_task_id');
|
||||
}
|
||||
public function getUserMail() {
|
||||
return $this->_getDataOne('user_mail');
|
||||
}
|
||||
public function getUserLogin() {
|
||||
return $this->_getDataOne('user_login');
|
||||
}
|
||||
public function getNotifyText() {
|
||||
return $this->_getDataOne('notify_text');
|
||||
}
|
||||
public function getDateCreated() {
|
||||
return $this->_getDataOne('date_created');
|
||||
}
|
||||
public function getTaskStatus() {
|
||||
return $this->_getDataOne('notify_task_status');
|
||||
}
|
||||
public function getNotifySubject() {
|
||||
return $this->_getDataOne('notify_subject');
|
||||
}
|
||||
|
||||
|
||||
public function setTaskId($data) {
|
||||
$this->_aData['notify_task_id']=$data;
|
||||
}
|
||||
public function setUserMail($data) {
|
||||
$this->_aData['user_mail']=$data;
|
||||
}
|
||||
public function setUserLogin($data) {
|
||||
$this->_aData['user_login']=$data;
|
||||
}
|
||||
public function setNotifyText($data) {
|
||||
$this->_aData['notify_text']=$data;
|
||||
}
|
||||
public function setDateCreated($data) {
|
||||
$this->_aData['date_created']=$data;
|
||||
}
|
||||
public function setTaskStatus($data) {
|
||||
$this->_aData['notify_task_status']=$data;
|
||||
}
|
||||
public function setNotifySubject($data) {
|
||||
$this->_aData['notify_subject']=$data;
|
||||
}
|
||||
/**
|
||||
* Объект сущности задания на отправку емайла
|
||||
*
|
||||
* @package modules.notify
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleNotify_EntityTask extends Entity {
|
||||
/**
|
||||
* Возвращает ID задания
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getTaskId() {
|
||||
return $this->_getDataOne('notify_task_id');
|
||||
}
|
||||
/**
|
||||
* Возвращает емайл
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getUserMail() {
|
||||
return $this->_getDataOne('user_mail');
|
||||
}
|
||||
/**
|
||||
* Возвращает логин пользователя
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getUserLogin() {
|
||||
return $this->_getDataOne('user_login');
|
||||
}
|
||||
/**
|
||||
* Возвращает текст сообщения
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getNotifyText() {
|
||||
return $this->_getDataOne('notify_text');
|
||||
}
|
||||
/**
|
||||
* Возвращает дату создания сообщения
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getDateCreated() {
|
||||
return $this->_getDataOne('date_created');
|
||||
}
|
||||
/**
|
||||
* Возвращает статус отправки
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getTaskStatus() {
|
||||
return $this->_getDataOne('notify_task_status');
|
||||
}
|
||||
/**
|
||||
* Возвращает тему сообщения
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getNotifySubject() {
|
||||
return $this->_getDataOne('notify_subject');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Устанавливает ID задания
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setTaskId($data) {
|
||||
$this->_aData['notify_task_id']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает емайл
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setUserMail($data) {
|
||||
$this->_aData['user_mail']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает логин
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setUserLogin($data) {
|
||||
$this->_aData['user_login']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает текст уведомления
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setNotifyText($data) {
|
||||
$this->_aData['notify_text']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает дату создания задания
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setDateCreated($data) {
|
||||
$this->_aData['date_created']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает статус задания
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setTaskStatus($data) {
|
||||
$this->_aData['notify_task_status']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает тему сообщения
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setNotifySubject($data) {
|
||||
$this->_aData['notify_subject']=$data;
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -15,8 +15,19 @@
|
|||
---------------------------------------------------------
|
||||
*/
|
||||
|
||||
class ModuleNotify_MapperNotify extends Mapper {
|
||||
|
||||
/**
|
||||
* Маппер для работы с БД
|
||||
*
|
||||
* @package modules.notify
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleNotify_MapperNotify extends Mapper {
|
||||
/**
|
||||
* Добавляет задание
|
||||
*
|
||||
* @param ModuleNotify_EntityTask $oNotifyTask Объект задания
|
||||
* @return bool
|
||||
*/
|
||||
public function AddTask(ModuleNotify_EntityTask $oNotifyTask) {
|
||||
$sql = "
|
||||
INSERT INTO ".Config::Get('db.table.notify_task')."
|
||||
|
@ -24,7 +35,7 @@ class ModuleNotify_MapperNotify extends Mapper {
|
|||
VALUES
|
||||
( ?, ?, ?, ?, ?, ?d )
|
||||
";
|
||||
|
||||
|
||||
if ($this->oDb->query(
|
||||
$sql,
|
||||
$oNotifyTask->getUserLogin(),
|
||||
|
@ -32,64 +43,84 @@ class ModuleNotify_MapperNotify extends Mapper {
|
|||
$oNotifyTask->getNotifySubject(),
|
||||
$oNotifyTask->getNotifyText(),
|
||||
$oNotifyTask->getDateCreated(),
|
||||
$oNotifyTask->getTaskStatus()
|
||||
$oNotifyTask->getTaskStatus()
|
||||
)===0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет задания списком
|
||||
*
|
||||
* @param array $aTasks Список объектов заданий
|
||||
* @return bool
|
||||
*/
|
||||
public function AddTaskArray($aTasks) {
|
||||
if(!is_array($aTasks)&&count($aTasks)==0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$aValues=array();
|
||||
foreach ($aTasks as $oTask) {
|
||||
$aValues[]="(".implode(',',
|
||||
array(
|
||||
$this->oDb->escape($oTask->getUserLogin()),
|
||||
$this->oDb->escape($oTask->getUserMail()),
|
||||
$this->oDb->escape($oTask->getNotifySubject()),
|
||||
$this->oDb->escape($oTask->getNotifyText()),
|
||||
$this->oDb->escape($oTask->getDateCreated()),
|
||||
$this->oDb->escape($oTask->getTaskStatus())
|
||||
)
|
||||
$aValues[]="(".implode(',',
|
||||
array(
|
||||
$this->oDb->escape($oTask->getUserLogin()),
|
||||
$this->oDb->escape($oTask->getUserMail()),
|
||||
$this->oDb->escape($oTask->getNotifySubject()),
|
||||
$this->oDb->escape($oTask->getNotifyText()),
|
||||
$this->oDb->escape($oTask->getDateCreated()),
|
||||
$this->oDb->escape($oTask->getTaskStatus())
|
||||
)
|
||||
).")";
|
||||
}
|
||||
$sql = "
|
||||
INSERT INTO ".Config::Get('db.table.notify_task')."
|
||||
( user_login, user_mail, notify_subject, notify_text, date_created, notify_task_status )
|
||||
VALUES
|
||||
".implode(', ', $aValues);
|
||||
".implode(', ', $aValues);
|
||||
|
||||
return $this->oDb->query($sql);
|
||||
}
|
||||
|
||||
/**
|
||||
* Удаляет задание
|
||||
*
|
||||
* @param ModuleNotify_EntityTask $oNotifyTask Объект задания
|
||||
* @return bool
|
||||
*/
|
||||
public function DeleteTask(ModuleNotify_EntityTask $oNotifyTask) {
|
||||
$sql = "
|
||||
DELETE FROM ".Config::Get('db.table.notify_task')."
|
||||
WHERE
|
||||
notify_task_id = ?d
|
||||
";
|
||||
";
|
||||
if ($this->oDb->query($sql,$oNotifyTask->getTaskId())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Удаляет отложенные Notify-задания по списку идентификаторов
|
||||
*
|
||||
* @param array $aTaskId Список ID заданий на отправку
|
||||
* @return bool
|
||||
*/
|
||||
public function DeleteTaskByArrayId($aTaskId) {
|
||||
$sql = "
|
||||
DELETE FROM ".Config::Get('db.table.notify_task')."
|
||||
WHERE
|
||||
notify_task_id IN(?a)
|
||||
";
|
||||
";
|
||||
if ($this->oDb->query($sql,$aTaskId)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получает массив заданий на публикацию из базы с указанным количественным ограничением (выборка FIFO)
|
||||
*
|
||||
* @param int $iLimit Количество
|
||||
* @return array
|
||||
*/
|
||||
public function GetTasks($iLimit) {
|
||||
$sql = "SELECT *
|
||||
FROM ".Config::Get('db.table.notify_task')."
|
||||
|
@ -100,8 +131,8 @@ class ModuleNotify_MapperNotify extends Mapper {
|
|||
foreach ($aRows as $aTask) {
|
||||
$aTasks[]=Engine::GetEntity('Notify_Task',$aTask);
|
||||
}
|
||||
}
|
||||
return $aTasks;
|
||||
}
|
||||
return $aTasks;
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -16,8 +16,10 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* Модуль управления рейтингами и силой
|
||||
* Модуль управления рейтингами и силой
|
||||
*
|
||||
* @package modules.rating
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleRating extends Module {
|
||||
|
||||
|
@ -25,14 +27,16 @@ class ModuleRating extends Module {
|
|||
* Инициализация модуля
|
||||
*
|
||||
*/
|
||||
public function Init() {
|
||||
|
||||
public function Init() {
|
||||
|
||||
}
|
||||
/**
|
||||
* Расчет рейтинга при голосовании за комментарий
|
||||
*
|
||||
* @param ModuleUser_EntityUser $oUser
|
||||
* @param CommentEntity_TopicComment $oComment
|
||||
* @param ModuleUser_EntityUser $oUser Объект пользователя, который голосует
|
||||
* @param ModuleComment_EntityComment $oComment Объект комментария
|
||||
* @param int $iValue
|
||||
* @return int
|
||||
*/
|
||||
public function VoteComment(ModuleUser_EntityUser $oUser, ModuleComment_EntityComment $oComment, $iValue) {
|
||||
/**
|
||||
|
@ -41,7 +45,7 @@ class ModuleRating extends Module {
|
|||
$oComment->setRating($oComment->getRating()+$iValue);
|
||||
/**
|
||||
* Начисляем силу автору коммента, используя логарифмическое распределение
|
||||
*/
|
||||
*/
|
||||
$skill=$oUser->getSkill();
|
||||
$iMinSize=0.004;
|
||||
$iMaxSize=0.5;
|
||||
|
@ -51,7 +55,7 @@ class ModuleRating extends Module {
|
|||
$iCountRange=$iMaxCount-$iMinCount;
|
||||
if ($iCountRange==0) {
|
||||
$iCountRange=1;
|
||||
}
|
||||
}
|
||||
if ($skill>50 and $skill<200) {
|
||||
$skill_new=$skill/70;
|
||||
} elseif ($skill>=200) {
|
||||
|
@ -73,9 +77,10 @@ class ModuleRating extends Module {
|
|||
/**
|
||||
* Расчет рейтинга и силы при гоосовании за топик
|
||||
*
|
||||
* @param ModuleUser_EntityUser $oUser
|
||||
* @param ModuleTopic_EntityTopic $oTopic
|
||||
* @param unknown_type $iValue
|
||||
* @param ModuleUser_EntityUser $oUser Объект пользователя, который голосует
|
||||
* @param ModuleTopic_EntityTopic $oTopic Объект топика
|
||||
* @param int $iValue
|
||||
* @return int
|
||||
*/
|
||||
public function VoteTopic(ModuleUser_EntityUser $oUser, ModuleTopic_EntityTopic $oTopic, $iValue) {
|
||||
$skill=$oUser->getSkill();
|
||||
|
@ -93,7 +98,7 @@ class ModuleRating extends Module {
|
|||
$oTopic->setRating($oTopic->getRating()+$iDeltaRating);
|
||||
/**
|
||||
* Начисляем силу и рейтинг автору топика, используя логарифмическое распределение
|
||||
*/
|
||||
*/
|
||||
$iMinSize=0.1;
|
||||
$iMaxSize=8;
|
||||
$iSizeRange=$iMaxSize-$iMinSize;
|
||||
|
@ -102,7 +107,7 @@ class ModuleRating extends Module {
|
|||
$iCountRange=$iMaxCount-$iMinCount;
|
||||
if ($iCountRange==0) {
|
||||
$iCountRange=1;
|
||||
}
|
||||
}
|
||||
if ($skill>50 and $skill<200) {
|
||||
$skill_new=$skill/70;
|
||||
} elseif ($skill>=200) {
|
||||
|
@ -125,15 +130,16 @@ class ModuleRating extends Module {
|
|||
/**
|
||||
* Расчет рейтинга и силы при голосовании за блог
|
||||
*
|
||||
* @param ModuleUser_EntityUser $oUser
|
||||
* @param ModuleBlog_EntityBlog $oBlog
|
||||
* @param unknown_type $iValue
|
||||
* @param ModuleUser_EntityUser $oUser Объект пользователя, который голосует
|
||||
* @param ModuleBlog_EntityBlog $oBlog Объект блога
|
||||
* @param int $iValue
|
||||
* @return int
|
||||
*/
|
||||
public function VoteBlog(ModuleUser_EntityUser $oUser, ModuleBlog_EntityBlog $oBlog, $iValue) {
|
||||
public function VoteBlog(ModuleUser_EntityUser $oUser, ModuleBlog_EntityBlog $oBlog, $iValue) {
|
||||
/**
|
||||
* Устанавливаем рейтинг блога, используя логарифмическое распределение
|
||||
*/
|
||||
$skill=$oUser->getSkill();
|
||||
*/
|
||||
$skill=$oUser->getSkill();
|
||||
$iMinSize=1.13;
|
||||
$iMaxSize=15;
|
||||
$iSizeRange=$iMaxSize-$iMinSize;
|
||||
|
@ -142,7 +148,7 @@ class ModuleRating extends Module {
|
|||
$iCountRange=$iMaxCount-$iMinCount;
|
||||
if ($iCountRange==0) {
|
||||
$iCountRange=1;
|
||||
}
|
||||
}
|
||||
if ($skill>50 and $skill<200) {
|
||||
$skill_new=$skill/20;
|
||||
} elseif ($skill>=200) {
|
||||
|
@ -162,12 +168,13 @@ class ModuleRating extends Module {
|
|||
*
|
||||
* @param ModuleUser_EntityUser $oUser
|
||||
* @param ModuleUser_EntityUser $oUserTarget
|
||||
* @param unknown_type $iValue
|
||||
* @param int $iValue
|
||||
* @return float
|
||||
*/
|
||||
public function VoteUser(ModuleUser_EntityUser $oUser, ModuleUser_EntityUser $oUserTarget, $iValue) {
|
||||
public function VoteUser(ModuleUser_EntityUser $oUser, ModuleUser_EntityUser $oUserTarget, $iValue) {
|
||||
/**
|
||||
* Начисляем силу и рейтинг юзеру, используя логарифмическое распределение
|
||||
*/
|
||||
*/
|
||||
$skill=$oUser->getSkill();
|
||||
$iMinSize=0.42;
|
||||
$iMaxSize=3.2;
|
||||
|
@ -177,7 +184,7 @@ class ModuleRating extends Module {
|
|||
$iCountRange=$iMaxCount-$iMinCount;
|
||||
if ($iCountRange==0) {
|
||||
$iCountRange=1;
|
||||
}
|
||||
}
|
||||
if ($skill>50 and $skill<200) {
|
||||
$skill_new=$skill/40;
|
||||
} elseif ($skill>=200) {
|
||||
|
@ -187,14 +194,10 @@ class ModuleRating extends Module {
|
|||
}
|
||||
$iDelta=$iMinSize+(log($skill_new+1)-$iMinCount)*($iSizeRange/$iCountRange);
|
||||
/**
|
||||
* Сохраняем силу и рейтинг
|
||||
*/
|
||||
$iRatingNew=$oUserTarget->getRating()+$iValue*$iDelta;
|
||||
//$iSkillNew=$oUserTarget->getSkill()+$iValue*$iDelta/3.67;
|
||||
//$iSkillNew=($iSkillNew<0) ? 0 : $iSkillNew;
|
||||
//$oUserTarget->setSkill($iSkillNew);
|
||||
* Определяем новый рейтинг
|
||||
*/
|
||||
$iRatingNew=$oUserTarget->getRating()+$iValue*$iDelta;
|
||||
$oUserTarget->setRating($iRatingNew);
|
||||
///$this->User_Update($oUserTarget);
|
||||
return $iValue*$iDelta;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,18 +4,27 @@ require_once(Config::Get('path.root.engine').'/lib/external/Sphinx/sphinxapi.php
|
|||
/**
|
||||
* Модуль для работы с машиной полнотекстового поиска Sphinx
|
||||
*
|
||||
* @package modules.sphinx
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleSphinx extends Module {
|
||||
/**
|
||||
* Объект сфинкса
|
||||
*
|
||||
* @var SphinxClient|null
|
||||
*/
|
||||
protected $oSphinx = null;
|
||||
|
||||
|
||||
/**
|
||||
* Инициализация
|
||||
*
|
||||
*/
|
||||
public function Init() {
|
||||
public function Init() {
|
||||
$this->InitSphinx();
|
||||
}
|
||||
|
||||
/**
|
||||
* Инициализация сфинкса
|
||||
*/
|
||||
protected function InitSphinx() {
|
||||
/**
|
||||
* Получаем объект Сфинкса(из Сфинкс АПИ)
|
||||
|
@ -27,17 +36,13 @@ class ModuleSphinx extends Module {
|
|||
*/
|
||||
$this->oSphinx->SetSortMode(SPH_SORT_EXTENDED, "@weight DESC, @id DESc");
|
||||
}
|
||||
|
||||
public function Shutdown() {
|
||||
|
||||
}
|
||||
/**
|
||||
* Возвращает число найденых элементов в зависимоти от их типа
|
||||
*
|
||||
* @param unknown_type $sTerms
|
||||
* @param unknown_type $sObjType
|
||||
* @param unknown_type $aExtraFilters
|
||||
* @return unknown
|
||||
* @param string $sTerms Поисковый запрос
|
||||
* @param string $sObjType Тип поиска
|
||||
* @param array $aExtraFilters Список фильтров
|
||||
* @return int
|
||||
*/
|
||||
public function GetNumResultsByType($sTerms, $sObjType = 'topics', $aExtraFilters){
|
||||
$aResults = $this->FindContent($sTerms, $sObjType, 1, 1, $aExtraFilters);
|
||||
|
@ -46,25 +51,25 @@ class ModuleSphinx extends Module {
|
|||
/**
|
||||
* Непосредственно сам поиск
|
||||
*
|
||||
* @param unknown_type $sTerms
|
||||
* @param unknown_type $sObjType
|
||||
* @param unknown_type $iOffset
|
||||
* @param unknown_type $iLimit
|
||||
* @param unknown_type $aExtraFilters
|
||||
* @return unknown
|
||||
* @param string $sTerms Поисковый запрос
|
||||
* @param string $sObjType Тип поиска
|
||||
* @param int $iOffset Сдвиг элементов
|
||||
* @param int $iLimit Количество элементов
|
||||
* @param array $aExtraFilters Список фильтров
|
||||
* @return array
|
||||
*/
|
||||
public function FindContent($sTerms, $sObjType, $iOffset, $iLimit, $aExtraFilters){
|
||||
/**
|
||||
* используем кеширование при поиске
|
||||
*/
|
||||
$sExtraFilters = serialize($aExtraFilters);
|
||||
$cacheKey = Config::Get('module.search.entity_prefix')."searchResult_{$sObjType}_{$sTerms}_{$iOffset}_{$iLimit}_{$sExtraFilters}";
|
||||
$cacheKey = Config::Get('module.search.entity_prefix')."searchResult_{$sObjType}_{$sTerms}_{$iOffset}_{$iLimit}_{$sExtraFilters}";
|
||||
if (false === ($data = $this->Cache_Get($cacheKey))) {
|
||||
/**
|
||||
* Параметры поиска
|
||||
*/
|
||||
$this->oSphinx->SetMatchMode(SPH_MATCH_ALL);
|
||||
$this->oSphinx->SetLimits($iOffset, $iLimit);
|
||||
$this->oSphinx->SetLimits($iOffset, $iLimit);
|
||||
/**
|
||||
* Устанавливаем атрибуты поиска
|
||||
*/
|
||||
|
@ -72,7 +77,7 @@ class ModuleSphinx extends Module {
|
|||
if(!is_null($aExtraFilters)){
|
||||
foreach($aExtraFilters AS $sAttribName => $sAttribValue){
|
||||
$this->oSphinx->SetFilter(
|
||||
$sAttribName,
|
||||
$sAttribName,
|
||||
(is_array($sAttribValue)) ? $sAttribValue : array($sAttribValue)
|
||||
);
|
||||
}
|
||||
|
@ -82,7 +87,7 @@ class ModuleSphinx extends Module {
|
|||
*/
|
||||
if(!is_array($data = $this->oSphinx->Query($sTerms, Config::Get('module.search.entity_prefix').$sObjType.'Index'))) {
|
||||
return FALSE; // Скорее всего недоступен демон searchd
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Если результатов нет, то и в кеш писать не стоит...
|
||||
* хотя тут момент спорный
|
||||
|
@ -96,7 +101,7 @@ class ModuleSphinx extends Module {
|
|||
/**
|
||||
* Получить ошибку при последнем обращении к поиску
|
||||
*
|
||||
* @return unknown
|
||||
* @return string
|
||||
*/
|
||||
public function GetLastError(){
|
||||
return $this->oSphinx->GetLastError();
|
||||
|
@ -104,18 +109,18 @@ class ModuleSphinx extends Module {
|
|||
/**
|
||||
* Получаем сниппеты(превью найденых элементов)
|
||||
*
|
||||
* @param unknown_type $sText
|
||||
* @param unknown_type $sIndex
|
||||
* @param unknown_type $sTerms
|
||||
* @param unknown_type $before_match
|
||||
* @param unknown_type $after_match
|
||||
* @return unknown
|
||||
* @param string $sText Текст
|
||||
* @param string $sIndex Название индекса
|
||||
* @param string $sTerms Поисковый запрос
|
||||
* @param string $before_match Добавляемый текст перед ключом
|
||||
* @param string $after_match Добавляемый текст после ключа
|
||||
* @return array
|
||||
*/
|
||||
public function GetSnippet($sText, $sIndex, $sTerms, $before_match, $after_match){
|
||||
$aReturn = $this->oSphinx->BuildExcerpts(array($sText), Config::Get('module.search.entity_prefix').$sIndex.'Index', $sTerms, array(
|
||||
'before_match' => $before_match,
|
||||
'after_match' => $after_match,
|
||||
)
|
||||
'before_match' => $before_match,
|
||||
'after_match' => $after_match,
|
||||
)
|
||||
);
|
||||
return $aReturn[0];
|
||||
}
|
||||
|
|
|
@ -18,11 +18,16 @@
|
|||
/**
|
||||
* Модуль потока событий на сайте
|
||||
*
|
||||
* @package modules.stream
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleStream extends Module {
|
||||
|
||||
/**
|
||||
* Объект маппера
|
||||
*
|
||||
* @var ModuleStream_MapperStream
|
||||
*/
|
||||
protected $oMapper = null;
|
||||
|
||||
/**
|
||||
* Список дефолтных типов событий, они добавляются каждому пользователю при регистрации
|
||||
*
|
||||
|
@ -49,24 +54,25 @@ class ModuleStream extends Module {
|
|||
'join_blog' => array('related' => 'blog','unique_user'=>true)
|
||||
);
|
||||
|
||||
/**
|
||||
* Инициализация модуля
|
||||
*/
|
||||
public function Init() {
|
||||
$this->oMapper=Engine::GetMapper(__CLASS__);
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает все типы событий
|
||||
*
|
||||
* @return unknown
|
||||
* @return array
|
||||
*/
|
||||
public function getEventTypes() {
|
||||
return $this->aEventTypes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает типы событий с учетом фильтра(доступности)
|
||||
*
|
||||
* @param null $aTypes
|
||||
* @return null|unknown
|
||||
* @param array|null $aTypes Список типов
|
||||
* @return array
|
||||
*/
|
||||
public function getEventTypesFilter($aTypes=null) {
|
||||
if (is_null($aTypes)) {
|
||||
|
@ -84,9 +90,9 @@ class ModuleStream extends Module {
|
|||
/**
|
||||
* Добавляет новый тип события, метод для расширения списка событий плагинами
|
||||
*
|
||||
* @param unknown_type $sName
|
||||
* @param unknown_type $aParams
|
||||
* @return unknown
|
||||
* @param string $sName Название типа
|
||||
* @param array $aParams Параметры
|
||||
* @return bool
|
||||
*/
|
||||
public function AddEventType($sName,$aParams) {
|
||||
if (!array_key_exists($sName,$this->aEventTypes)) {
|
||||
|
@ -98,7 +104,8 @@ class ModuleStream extends Module {
|
|||
/**
|
||||
* Проверка допустимого типа событий
|
||||
*
|
||||
* @param string $sType
|
||||
* @param string $sType Тип
|
||||
* @return bool
|
||||
*/
|
||||
public function IsAllowEventType($sType) {
|
||||
return array_key_exists($sType,$this->aEventTypes);
|
||||
|
@ -106,8 +113,8 @@ class ModuleStream extends Module {
|
|||
/**
|
||||
* Добавление события в БД
|
||||
*
|
||||
* @param unknown_type $oObject
|
||||
* @return unknown
|
||||
* @param ModuleStream_EntityEvent $oObject Объект события
|
||||
* @return ModuleStream_EntityEvent|bool
|
||||
*/
|
||||
public function AddEvent($oObject) {
|
||||
if ($iId=$this->oMapper->AddEvent($oObject)) {
|
||||
|
@ -119,8 +126,8 @@ class ModuleStream extends Module {
|
|||
/**
|
||||
* Обновление события
|
||||
*
|
||||
* @param unknown_type $oObject
|
||||
* @return unknown
|
||||
* @param ModuleStream_EntityEvent $oObject Объект события
|
||||
* @return int
|
||||
*/
|
||||
public function UpdateEvent($oObject) {
|
||||
return $this->oMapper->UpdateEvent($oObject);
|
||||
|
@ -128,18 +135,22 @@ class ModuleStream extends Module {
|
|||
/**
|
||||
* Получает событие по типу и его ID
|
||||
*
|
||||
* @param unknown_type $sEventType
|
||||
* @param unknown_type $iTargetId
|
||||
* @return unknown
|
||||
* @param string $sEventType Тип
|
||||
* @param int $iTargetId ID владельца события
|
||||
* @param int|null $iUserId ID пользователя
|
||||
* @return ModuleStream_EntityEvent
|
||||
*/
|
||||
public function GetEventByTarget($sEventType, $iTargetId, $iUserId=null) {
|
||||
return $this->oMapper->GetEventByTarget($sEventType, $iTargetId, $iUserId);
|
||||
}
|
||||
/**
|
||||
* Запись события в ленту
|
||||
* @param type $oUser
|
||||
* @param type $iEventType
|
||||
* @param type $iTargetId
|
||||
*
|
||||
* @param int $iUserId ID пользователя
|
||||
* @param string $sEventType Тип события
|
||||
* @param int $iTargetId ID владельца
|
||||
* @param int $iPublish Статус
|
||||
* @return bool
|
||||
*/
|
||||
public function Write($iUserId, $sEventType, $iTargetId, $iPublish=1) {
|
||||
$iPublish=(int)$iPublish;
|
||||
|
@ -195,9 +206,9 @@ class ModuleStream extends Module {
|
|||
/**
|
||||
* Чтение потока пользователя
|
||||
*
|
||||
* @param int $iCount
|
||||
* @param int $iFromId
|
||||
* @param int $iUserId
|
||||
* @param int|null $iCount Количество
|
||||
* @param int|null $iFromId ID события с которого начинать выборку
|
||||
* @param int|null $iUserId ID пользователя
|
||||
* @return array
|
||||
*/
|
||||
public function Read($iCount=null,$iFromId=null,$iUserId=null) {
|
||||
|
@ -219,12 +230,11 @@ class ModuleStream extends Module {
|
|||
|
||||
return $this->ReadEvents($aEventTypes,$aUsersList,$iCount,$iFromId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Чтение всей активности на сайте
|
||||
*
|
||||
* @param int $iCount
|
||||
* @param int $iFromId
|
||||
* @param int|null $iCount Количество
|
||||
* @param int|null $iFromId ID события с которого начинать выборку
|
||||
* @return array
|
||||
*/
|
||||
public function ReadAll($iCount=null,$iFromId=null) {
|
||||
|
@ -238,8 +248,9 @@ class ModuleStream extends Module {
|
|||
/**
|
||||
* Чтение активности конкретного пользователя
|
||||
*
|
||||
* @param int $iCount
|
||||
* @param int $iUserId
|
||||
* @param int $iUserId ID пользователя
|
||||
* @param int|null $iCount Количество
|
||||
* @param int|null $iFromId ID события с которого начинать выборку
|
||||
* @return array
|
||||
*/
|
||||
public function ReadByUserId($iUserId,$iCount=null,$iFromId=null) {
|
||||
|
@ -254,11 +265,10 @@ class ModuleStream extends Module {
|
|||
|
||||
return $this->ReadEvents($aEventTypes,$aUsersList,$iCount,$iFromId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Количество событий конкретного пользователя
|
||||
*
|
||||
* @param $iUserId
|
||||
* @param int $iUserId ID пользователя
|
||||
* @return int
|
||||
*/
|
||||
public function GetCountByUserId($iUserId) {
|
||||
|
@ -270,11 +280,10 @@ class ModuleStream extends Module {
|
|||
|
||||
return $this->oMapper->GetCount($aEventTypes, $iUserId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Количество событий на которые подписан пользователь
|
||||
*
|
||||
* @param $iUserId
|
||||
* @param int $iUserId ID пользователя
|
||||
* @return int
|
||||
*/
|
||||
public function GetCountByReaderId($iUserId) {
|
||||
|
@ -290,7 +299,6 @@ class ModuleStream extends Module {
|
|||
|
||||
return $this->oMapper->GetCount($aEventTypes, $aUsersList);
|
||||
}
|
||||
|
||||
/**
|
||||
* Количество событий на всем сайте
|
||||
*
|
||||
|
@ -305,15 +313,23 @@ class ModuleStream extends Module {
|
|||
|
||||
return $this->oMapper->GetCount($aEventTypes, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Количество событий для пользователя
|
||||
*
|
||||
* @param array $aEventTypes Список типов событий
|
||||
* @param array|null $aUserId ID пользователя
|
||||
* @return int
|
||||
*/
|
||||
public function GetCount($aEventTypes, $aUserId=null) {
|
||||
return $this->oMapper->GetCount($aEventTypes, $aUserId);
|
||||
}
|
||||
/**
|
||||
* @param array $aEventTypes
|
||||
* @param array | null $aUsersList
|
||||
* @param int $iCount
|
||||
* @param int $iFromId
|
||||
* Чтение событий
|
||||
*
|
||||
* @param array $aEventTypes Список типов событий
|
||||
* @param array|null $aUsersList Список пользователей, чьи события читать
|
||||
* @param int $iCount Количество
|
||||
* @param int $iFromId ID события с которого начинать выборку
|
||||
* @return array
|
||||
*/
|
||||
public function ReadEvents($aEventTypes,$aUsersList,$iCount=null,$iFromId=null) {
|
||||
|
@ -324,7 +340,6 @@ class ModuleStream extends Module {
|
|||
|
||||
$aEventTypes=$this->getEventTypesFilter($aEventTypes);
|
||||
if (!count($aEventTypes)) return array();
|
||||
|
||||
/**
|
||||
* Получаем список событий
|
||||
*/
|
||||
|
@ -384,26 +399,29 @@ class ModuleStream extends Module {
|
|||
}
|
||||
return $aEvents;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получение типов событий, на которые подписан пользователь
|
||||
* @param type $iUserId
|
||||
* @return type
|
||||
*
|
||||
* @param int $iUserId ID пользователя
|
||||
* @return array
|
||||
*/
|
||||
public function getTypesList($iUserId) {
|
||||
return $this->oMapper->getTypesList($iUserId);
|
||||
}
|
||||
/**
|
||||
* Получение списка id пользователей, на которых подписан пользователь
|
||||
* @return type
|
||||
*
|
||||
* @param int $iUserId ID пользователя
|
||||
* @return array
|
||||
*/
|
||||
protected function getUsersList($iUserId) {
|
||||
return $this->oMapper->getUserSubscribes($iUserId);
|
||||
}
|
||||
/**
|
||||
* Получение списка пользователей, на которых подписан пользователь
|
||||
* @param type $iUserId
|
||||
* @return type
|
||||
*
|
||||
* @param int $iUserId ID пользователя
|
||||
* @return array
|
||||
*/
|
||||
public function getUserSubscribes($iUserId) {
|
||||
$aIds = $this->oMapper->getUserSubscribes($iUserId);
|
||||
|
@ -412,8 +430,8 @@ class ModuleStream extends Module {
|
|||
/**
|
||||
* Проверяет подписан ли пользователь на конкретного пользователя
|
||||
*
|
||||
* @param $iUserId
|
||||
* @param $iTargetUserId
|
||||
* @param $iUserId ID пользователя
|
||||
* @param $iTargetUserId ID пользователя на которого подписан
|
||||
* @return bool
|
||||
*/
|
||||
public function IsSubscribe($iUserId,$iTargetUserId) {
|
||||
|
@ -421,9 +439,10 @@ class ModuleStream extends Module {
|
|||
}
|
||||
/**
|
||||
* Редактирование списка событий, на которые подписан юзер
|
||||
* @param int $iUserId
|
||||
* @param string $sType
|
||||
* @return type
|
||||
*
|
||||
* @param int $iUserId ID пользователя
|
||||
* @param string $sType Тип
|
||||
* @return bool
|
||||
*/
|
||||
public function switchUserEventType($iUserId, $sType) {
|
||||
if ($this->IsAllowEventType($sType)) {
|
||||
|
@ -434,7 +453,7 @@ class ModuleStream extends Module {
|
|||
/**
|
||||
* Переключает дефолтный список типов событий у пользователя
|
||||
*
|
||||
* @param int $iUserId
|
||||
* @param int $iUserId ID пользователя
|
||||
*/
|
||||
public function switchUserEventDefaultTypes($iUserId) {
|
||||
foreach($this->aEventDefaultTypes as $sType) {
|
||||
|
@ -443,28 +462,27 @@ class ModuleStream extends Module {
|
|||
}
|
||||
/**
|
||||
* Подписать пользователя
|
||||
* @param type $iUserId Id подписываемого пользователя
|
||||
* @param type $iSubscribeType Тип подписки (см. константы класса)
|
||||
* @param type $iTargetId Id цели подписки
|
||||
*
|
||||
* @param int $iUserId ID пользователя
|
||||
* @param int $iTargetUserId ID пользователя на которого подписываем
|
||||
*/
|
||||
public function subscribeUser($iUserId, $iTargetUserId) {
|
||||
return $this->oMapper->subscribeUser($iUserId, $iTargetUserId);
|
||||
$this->oMapper->subscribeUser($iUserId, $iTargetUserId);
|
||||
}
|
||||
/**
|
||||
* Отписать пользователя
|
||||
* @param type $iUserId Id подписываемого пользователя
|
||||
* @param type $iSubscribeType Тип подписки (см. константы класса)
|
||||
* @param type $iTargetId Id цели подписки
|
||||
*
|
||||
* @param int $iUserId ID пользователя
|
||||
* @param int $iTargetUserId ID пользователя на которого подписываем
|
||||
*/
|
||||
public function unsubscribeUser($iUserId, $iTargetUserId) {
|
||||
return $this->oMapper->unsubscribeUser($iUserId, $iTargetUserId);
|
||||
$this->oMapper->unsubscribeUser($iUserId, $iTargetUserId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Получает список записей на стене
|
||||
*
|
||||
* @param unknown_type $aIds
|
||||
* @return unknown
|
||||
* @param array $aIds Список ID записей на стене
|
||||
* @return array
|
||||
*/
|
||||
protected function loadRelatedWall($aIds) {
|
||||
return $this->Wall_GetWallAdditionalData($aIds);
|
||||
|
@ -472,8 +490,8 @@ class ModuleStream extends Module {
|
|||
/**
|
||||
* Получает список топиков
|
||||
*
|
||||
* @param unknown_type $aIds
|
||||
* @return unknown
|
||||
* @param array $aIds Список ID топиков
|
||||
* @return array
|
||||
*/
|
||||
protected function loadRelatedTopic($aIds) {
|
||||
return $this->Topic_GetTopicsAdditionalData($aIds);
|
||||
|
@ -481,8 +499,8 @@ class ModuleStream extends Module {
|
|||
/**
|
||||
* Получает список блогов
|
||||
*
|
||||
* @param unknown_type $aIds
|
||||
* @return unknown
|
||||
* @param array $aIds Список ID блогов
|
||||
* @return array
|
||||
*/
|
||||
protected function loadRelatedBlog($aIds) {
|
||||
return $this->Blog_GetBlogsAdditionalData($aIds);
|
||||
|
@ -490,8 +508,8 @@ class ModuleStream extends Module {
|
|||
/**
|
||||
* Получает список комментариев
|
||||
*
|
||||
* @param unknown_type $aIds
|
||||
* @return unknown
|
||||
* @param array $aIds Список ID комментариев
|
||||
* @return array
|
||||
*/
|
||||
protected function loadRelatedComment($aIds) {
|
||||
return $this->Comment_GetCommentsAdditionalData($aIds);
|
||||
|
@ -500,8 +518,8 @@ class ModuleStream extends Module {
|
|||
/**
|
||||
* Получает список пользователей
|
||||
*
|
||||
* @param unknown_type $aIds
|
||||
* @return unknown
|
||||
* @param array $aIds Список ID пользователей
|
||||
* @return array
|
||||
*/
|
||||
protected function loadRelatedUser($aIds) {
|
||||
return $this->User_GetUsersAdditionalData($aIds);
|
||||
|
|
|
@ -15,6 +15,13 @@
|
|||
---------------------------------------------------------
|
||||
*/
|
||||
|
||||
/**
|
||||
* Объект сущности события в активности
|
||||
*
|
||||
* @package modules.stream
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleStream_EntityEvent extends Entity {
|
||||
|
||||
}
|
||||
?>
|
|
@ -15,8 +15,19 @@
|
|||
---------------------------------------------------------
|
||||
*/
|
||||
|
||||
/**
|
||||
* Объект маппера для работы с БД
|
||||
*
|
||||
* @package modules.stream
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleStream_MapperStream extends Mapper {
|
||||
|
||||
/**
|
||||
* Добавление события в БД
|
||||
*
|
||||
* @param ModuleStream_EntityEvent $oObject
|
||||
* @return int|bool
|
||||
*/
|
||||
public function AddEvent($oObject) {
|
||||
$sql = "INSERT INTO ".Config::Get('db.table.stream_event')." SET ?a ";
|
||||
if ($iId=$this->oDb->query($sql,$oObject->_getData())) {
|
||||
|
@ -24,7 +35,14 @@ class ModuleStream_MapperStream extends Mapper {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получает событие по типу и его ID
|
||||
*
|
||||
* @param string $sEventType Тип
|
||||
* @param int $iTargetId ID владельца события
|
||||
* @param int|null $iUserId ID пользователя
|
||||
* @return ModuleStream_EntityEvent
|
||||
*/
|
||||
public function GetEventByTarget($sEventType, $iTargetId, $iUserId=null) {
|
||||
$sql = "SELECT * FROM
|
||||
".Config::Get('db.table.stream_event')."
|
||||
|
@ -34,24 +52,46 @@ class ModuleStream_MapperStream extends Mapper {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Обновление события
|
||||
*
|
||||
* @param ModuleStream_EntityEvent $oObject Объект события
|
||||
* @return int
|
||||
*/
|
||||
public function UpdateEvent($oObject) {
|
||||
$sql = "UPDATE ".Config::Get('db.table.stream_event')." SET ?a WHERE id = ?d ";
|
||||
return $this->oDb->query($sql,$oObject->_getData(array('publish')),$oObject->getId());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Получение типов событий, на которые подписан пользователь
|
||||
*
|
||||
* @param int $iUserId ID пользователя
|
||||
* @return array
|
||||
*/
|
||||
public function getTypesList($iUserId) {
|
||||
$sql = 'SELECT event_type FROM ' . Config::Get('db.table.stream_user_type') . ' WHERE user_id = ?d';
|
||||
$aRet = $this->oDb->selectCol($sql, $iUserId);
|
||||
return $aRet;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получение списка пользователей, на которых подписан пользователь
|
||||
*
|
||||
* @param int $iUserId ID пользователя
|
||||
* @return array
|
||||
*/
|
||||
public function getUserSubscribes($iUserId) {
|
||||
$sql = 'SELECT target_user_id FROM ' . Config::Get('db.table.stream_subscribe') . ' WHERE user_id = ?d';
|
||||
return $this->oDb->selectCol($sql, $iUserId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Чтение событий
|
||||
*
|
||||
* @param array $aEventTypes Список типов событий
|
||||
* @param array|null $aUsersList Список пользователей, чьи события читать
|
||||
* @param int $iCount Количество
|
||||
* @param int $iFromId ID события с которого начинать выборку
|
||||
* @return array
|
||||
*/
|
||||
public function Read($aEventTypes, $aUsersList, $iCount, $iFromId) {
|
||||
$sql = 'SELECT * FROM ' . Config::Get('db.table.stream_event'). '
|
||||
WHERE
|
||||
|
@ -70,7 +110,13 @@ class ModuleStream_MapperStream extends Mapper {
|
|||
}
|
||||
return $aReturn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Количество событий для пользователя
|
||||
*
|
||||
* @param array $aEventTypes Список типов событий
|
||||
* @param array|null $aUserId ID пользователя
|
||||
* @return int
|
||||
*/
|
||||
public function GetCount($aEventTypes, $aUserId) {
|
||||
if (!is_null($aUserId) and !is_array($aUserId)) {
|
||||
$aUserId=array($aUserId);
|
||||
|
@ -85,7 +131,13 @@ class ModuleStream_MapperStream extends Mapper {
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Редактирование списка событий, на которые подписан юзер
|
||||
*
|
||||
* @param int $iUserId ID пользователя
|
||||
* @param string $sEventType Тип
|
||||
* @return bool
|
||||
*/
|
||||
public function switchUserEventType($iUserId, $sEventType) {
|
||||
$sql = 'SELECT * FROM ' . Config::Get('db.table.stream_user_type') . ' WHERE user_id = ?d AND event_type = ?';
|
||||
if ($this->oDb->select($sql, $iUserId, $sEventType)) {
|
||||
|
@ -95,7 +147,12 @@ class ModuleStream_MapperStream extends Mapper {
|
|||
}
|
||||
$this->oDb->query($sql, $iUserId, $sEventType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Подписать пользователя
|
||||
*
|
||||
* @param int $iUserId ID пользователя
|
||||
* @param int $iTargetUserId ID пользователя на которого подписываем
|
||||
*/
|
||||
public function subscribeUser($iUserId, $iTargetUserId) {
|
||||
$sql = 'SELECT * FROM ' . Config::Get('db.table.stream_subscribe') . ' WHERE
|
||||
user_id = ?d AND target_user_id = ?d';
|
||||
|
@ -105,13 +162,24 @@ class ModuleStream_MapperStream extends Mapper {
|
|||
$this->oDb->query($sql, $iUserId, $iTargetUserId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Отписать пользователя
|
||||
*
|
||||
* @param int $iUserId ID пользователя
|
||||
* @param int $iTargetUserId ID пользователя на которого подписываем
|
||||
*/
|
||||
public function unsubscribeUser($iUserId, $iTargetUserId) {
|
||||
$sql = 'DELETE FROM ' . Config::Get('db.table.stream_subscribe') . ' WHERE
|
||||
user_id = ?d AND target_user_id = ?d';
|
||||
$this->oDb->query($sql, $iUserId, $iTargetUserId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет подписан ли пользователь на конкретного пользователя
|
||||
*
|
||||
* @param $iUserId ID пользователя
|
||||
* @param $iTargetUserId ID пользователя на которого подписан
|
||||
* @return bool
|
||||
*/
|
||||
public function IsSubscribe($iUserId,$iTargetUserId) {
|
||||
$sql = 'SELECT * FROM ' . Config::Get('db.table.stream_subscribe') . ' WHERE
|
||||
user_id = ?d AND target_user_id = ?d LIMIT 0,1';
|
||||
|
@ -120,5 +188,4 @@ class ModuleStream_MapperStream extends Mapper {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
|
@ -18,10 +18,21 @@
|
|||
/**
|
||||
* Модуль Subscribe - подписки пользователей
|
||||
*
|
||||
* @package modules.subscribe
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleSubscribe extends Module {
|
||||
|
||||
class ModuleSubscribe extends Module {
|
||||
/**
|
||||
* Объект маппера
|
||||
*
|
||||
* @var ModuleSubscribe_MapperSubscribe
|
||||
*/
|
||||
protected $oMapper;
|
||||
/**
|
||||
* Объект текущего пользователя
|
||||
*
|
||||
* @var ModuleUser_EntityUser|null
|
||||
*/
|
||||
protected $oUserCurrent;
|
||||
/**
|
||||
* Список доступных объектов подписок с параметрами
|
||||
|
@ -32,26 +43,29 @@ class ModuleSubscribe extends Module {
|
|||
protected $aTargetTypes=array(
|
||||
'topic_new_comment' => array(),
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
* Инициализация
|
||||
*
|
||||
*/
|
||||
public function Init() {
|
||||
public function Init() {
|
||||
$this->oMapper=Engine::GetMapper(__CLASS__);
|
||||
$this->oUserCurrent=$this->User_GetUserCurrent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает список типов объектов для облаты
|
||||
* Возвращает список типов объектов
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function GetTargetTypes() {
|
||||
return $this->aTargetTypes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет в разрешенные новый тип
|
||||
* @param unknown_type $sTargetType
|
||||
*
|
||||
* @param string $sTargetType Тип
|
||||
* @param array $aParams Параметры
|
||||
* @return bool
|
||||
*/
|
||||
public function AddTargetType($sTargetType,$aParams=array()) {
|
||||
if (!array_key_exists($sTargetType,$this->aTargetTypes)) {
|
||||
|
@ -60,23 +74,22 @@ class ModuleSubscribe extends Module {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет разрешен ли данный тип в подписке
|
||||
*
|
||||
* @param $sTargetType
|
||||
* @param string $sTargetType Тип
|
||||
* @return bool
|
||||
*/
|
||||
public function IsAllowTargetType($sTargetType) {
|
||||
return in_array($sTargetType,array_keys($this->aTargetTypes));
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверка объекта подписки
|
||||
*
|
||||
* @param string $sTargetType
|
||||
* @param int $iTargetId
|
||||
* @param int $iCheckType
|
||||
* @param string $sTargetType Тип
|
||||
* @param int $iTargetId ID владельца
|
||||
* @param int $iStatus Статус подписки
|
||||
* @return bool
|
||||
*/
|
||||
public function CheckTarget($sTargetType,$iTargetId,$iStatus=null) {
|
||||
$sMethod = 'CheckTarget'.func_camelize($sTargetType);
|
||||
|
@ -85,13 +98,13 @@ class ModuleSubscribe extends Module {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает URL страницы с объектом подписки
|
||||
* Актуально при переходе по ссылки с отпиской от рассылки и последующим редиректом
|
||||
*
|
||||
* @param string $sTargetType
|
||||
* @param int $iTargetId
|
||||
* @param string $sTargetType Тип
|
||||
* @param int $iTargetId ID владельца
|
||||
* @return bool
|
||||
*/
|
||||
public function GetUrlTarget($sTargetType,$iTargetId) {
|
||||
$sMethod = 'GetUrlTarget'.func_camelize($sTargetType);
|
||||
|
@ -100,11 +113,10 @@ class ModuleSubscribe extends Module {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверка на подписку для гостей
|
||||
*
|
||||
* @param $sTargetType
|
||||
* @param string $sTargetType Тип
|
||||
* @return bool
|
||||
*/
|
||||
public function IsAllowTargetForGuest($sTargetType) {
|
||||
|
@ -115,12 +127,11 @@ class ModuleSubscribe extends Module {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет подписку в БД
|
||||
*
|
||||
* @param $oSubscribe
|
||||
* @return ModuleSubscribe_EntitySubscribe | bool
|
||||
* @param ModuleSubscribe_EntitySubscribe $oSubscribe Объект подписки
|
||||
* @return ModuleSubscribe_EntitySubscribe|bool
|
||||
*/
|
||||
public function AddSubscribe($oSubscribe) {
|
||||
if ($sId=$this->oMapper->AddSubscribe($oSubscribe)) {
|
||||
|
@ -129,13 +140,12 @@ class ModuleSubscribe extends Module {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Создает подписку, если уже есть, то возвращает существующую
|
||||
*
|
||||
* @param $sTargetType
|
||||
* @param $sTargetId
|
||||
* @param $sMail
|
||||
* @param string $sTargetType Тип
|
||||
* @param string $sTargetId ID владельца
|
||||
* @param string $sMail Емайл
|
||||
* @return ModuleSubscribe_EntitySubscribe
|
||||
*/
|
||||
public function AddSubscribeSimple($sTargetType,$sTargetId,$sMail) {
|
||||
|
@ -152,31 +162,34 @@ class ModuleSubscribe extends Module {
|
|||
}
|
||||
return $oSubscribe;
|
||||
}
|
||||
|
||||
/**
|
||||
* Обновление подписки
|
||||
*
|
||||
* @param ModuleSubscribe_EntitySubscribe $oSubscribe
|
||||
* @return int
|
||||
*/
|
||||
public function UpdateSubscribe($oSubscribe) {
|
||||
return $this->oMapper->UpdateSubscribe($oSubscribe);
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает список подписок по фильтру
|
||||
*
|
||||
* @param $aFilter
|
||||
* @param $aOrder
|
||||
* @param $iCurrPage
|
||||
* @param $iPerPage
|
||||
* @return array
|
||||
* @param array $aFilter Фильтр
|
||||
* @param array $aOrder Сортировка
|
||||
* @param int $iCurrPage Номер страницы
|
||||
* @param int $iPerPage Количество элементов на страницу
|
||||
* @return array('collection'=>array,'count'=>int)
|
||||
*/
|
||||
public function GetSubscribes($aFilter,$aOrder,$iCurrPage,$iPerPage) {
|
||||
return array('collection'=>$this->oMapper->GetSubscribes($aFilter,$aOrder,$iCount,$iCurrPage,$iPerPage),'count'=>$iCount);
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает подписку по объекту подписки и емайлу
|
||||
*
|
||||
* @param $sTargetType
|
||||
* @param $iTargetId
|
||||
* @param $sMail
|
||||
* @return ModuleSubscribe_EntitySubscribe
|
||||
* @param string $sTargetType Тип
|
||||
* @param int $iTargetId ID владельца
|
||||
* @param string $sMail Емайл
|
||||
* @return ModuleSubscribe_EntitySubscribe|null
|
||||
*/
|
||||
public function GetSubscribeByTargetAndMail($sTargetType,$iTargetId,$sMail) {
|
||||
$aRes=$this->GetSubscribes(array('target_type'=>$sTargetType,'target_id'=>$iTargetId,'mail'=>$sMail),array(),1,1);
|
||||
|
@ -185,12 +198,11 @@ class ModuleSubscribe extends Module {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает подписку по ключу
|
||||
*
|
||||
* @param $sKey
|
||||
* @return ModuleSubscribe_EntitySubscribe
|
||||
* @param string $sKey Ключ
|
||||
* @return ModuleSubscribe_EntitySubscribe|null
|
||||
*/
|
||||
public function GetSubscribeByKey($sKey) {
|
||||
$aRes=$this->GetSubscribes(array('key'=>$sKey),array(),1,1);
|
||||
|
@ -199,17 +211,16 @@ class ModuleSubscribe extends Module {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Производит отправку писем по подписчикам подписки
|
||||
*
|
||||
* @param $sTargetType Тип объекта подписки
|
||||
* @param $iTargetId ID объекта подписки
|
||||
* @param $sTemplate Имя шаблона письма, например, notify.mail.tpl
|
||||
* @param $sTitle Заголовок письма
|
||||
* @param int $sTargetType Тип объекта подписки
|
||||
* @param int $iTargetId ID объекта подписки
|
||||
* @param string $sTemplate Имя шаблона письма, например, notify.mail.tpl
|
||||
* @param string $sTitle Заголовок письма
|
||||
* @param array $aParams Параметра для передачи в шаблон письма
|
||||
* @param array $aExcludeMail Список емайлов на которые НЕ нужно отправлять
|
||||
* @param string $sPluginName Название или класс плагина для корректной отправки
|
||||
*/
|
||||
public function Send($sTargetType,$iTargetId,$sTemplate,$sTitle,$aParams=array(),$aExcludeMail=array(),$sPluginName=null) {
|
||||
$iPage=1;
|
||||
|
@ -229,14 +240,13 @@ class ModuleSubscribe extends Module {
|
|||
$aSubscribes=$this->Subscribe_GetSubscribes(array('target_type'=>$sTargetType,'target_id'=>$iTargetId,'status'=>1),array(),$iPage,20);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Проверка объекта подписки с типом "topic_new_comment"
|
||||
* Название метода формируется автоматически
|
||||
*
|
||||
* @param int $iTargetId
|
||||
* @param int $iStatus
|
||||
* @param int $iTargetId ID владельца
|
||||
* @param int $iStatus Статус
|
||||
* @return bool
|
||||
*/
|
||||
public function CheckTargetTopicNewComment($iTargetId,$iStatus) {
|
||||
if ($oTopic=$this->Topic_GetTopicById($iTargetId)) {
|
||||
|
@ -253,13 +263,12 @@ class ModuleSubscribe extends Module {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает URL на страницы объекта подписки с типом "topic_new_comment"
|
||||
* Название метода формируется автоматически
|
||||
*
|
||||
* @param $iTargetId
|
||||
* @return bool
|
||||
* @param int $iTargetId ID топика
|
||||
* @return string|bool
|
||||
*/
|
||||
public function GetUrlTargetTopicNewComment($iTargetId) {
|
||||
if ($oTopic=$this->Topic_GetTopicById($iTargetId) and $oTopic->getPublish()) {
|
||||
|
|
|
@ -15,7 +15,13 @@
|
|||
---------------------------------------------------------
|
||||
*/
|
||||
|
||||
class ModuleSubscribe_EntitySubscribe extends Entity {
|
||||
|
||||
/**
|
||||
* Объект сущности подписки
|
||||
*
|
||||
* @package modules.subscribe
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleSubscribe_EntitySubscribe extends Entity {
|
||||
|
||||
}
|
||||
?>
|
|
@ -15,17 +15,33 @@
|
|||
---------------------------------------------------------
|
||||
*/
|
||||
|
||||
class ModuleSubscribe_MapperSubscribe extends Mapper {
|
||||
|
||||
/**
|
||||
* Объект маппера для работы с БД
|
||||
*
|
||||
* @package modules.subscribe
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleSubscribe_MapperSubscribe extends Mapper {
|
||||
/**
|
||||
* Добавляет подписку в БД
|
||||
*
|
||||
* @param ModuleSubscribe_EntitySubscribe $oSubscribe Объект подписки
|
||||
* @return int|bool
|
||||
*/
|
||||
public function AddSubscribe($oSubscribe) {
|
||||
$sql = "INSERT INTO ".Config::Get('db.table.subscribe')." SET ?a ";
|
||||
$sql = "INSERT INTO ".Config::Get('db.table.subscribe')." SET ?a ";
|
||||
if ($iId=$this->oDb->query($sql,$oSubscribe->_getData())) {
|
||||
return $iId;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Получение подписки по типы и емайлу
|
||||
*
|
||||
* @param string $sType Тип
|
||||
* @param string $sMail Емайл
|
||||
* @return ModuleSubscribe_EntitySubscribe|null
|
||||
*/
|
||||
public function GetSubscribeByTypeAndMail($sType,$sMail) {
|
||||
$sql = "SELECT * FROM ".Config::Get('db.table.subscribe')." WHERE target_type = ? and mail = ?";
|
||||
if ($aRow=$this->oDb->selectRow($sql,$sType,$sMail)) {
|
||||
|
@ -33,21 +49,33 @@ class ModuleSubscribe_MapperSubscribe extends Mapper {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Обновление подписки
|
||||
*
|
||||
* @param ModuleSubscribe_EntitySubscribe $oSubscribe
|
||||
* @return int
|
||||
*/
|
||||
public function UpdateSubscribe($oSubscribe) {
|
||||
$sql = "UPDATE ".Config::Get('db.table.subscribe')."
|
||||
SET
|
||||
status = ?,
|
||||
date_remove = ?
|
||||
WHERE id = ?d
|
||||
";
|
||||
";
|
||||
return $this->oDb->query($sql,$oSubscribe->getStatus(),
|
||||
$oSubscribe->getDateRemove(),
|
||||
$oSubscribe->getId());
|
||||
$oSubscribe->getDateRemove(),
|
||||
$oSubscribe->getId());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Возвращает список подписок по фильтру
|
||||
*
|
||||
* @param array $aFilter Фильтр
|
||||
* @param array $aOrder Сортировка
|
||||
* @param int $iCount Возвращает общее количество элементов
|
||||
* @param int $iCurrPage Номер страницы
|
||||
* @param int $iPerPage Количество элементов на страницу
|
||||
* @return array
|
||||
*/
|
||||
public function GetSubscribes($aFilter,$aOrder,&$iCount,$iCurrPage,$iPerPage) {
|
||||
$aOrderAllow=array('id','date_add','status');
|
||||
$sOrder='';
|
||||
|
|
Loading…
Reference in a new issue