ModuleNotify
Package | application.modules.notify |
---|---|
Inheritance | class ModuleNotify » Module » LsObject |
Since | 1.0 |
Source Code | /application/classes/modules/notify/Notify.class.php |
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
_aBehaviors | Список поведений в виде готовых объектов, формируется автоматически | LsObject | |
aBehaviors | array | Список поведений | LsObject |
aTask | array | Массив заданий на удаленную публикацию | ModuleNotify |
bIsInit | bool | Указывает на то, была ли проведенна инициализация модуля | Module |
oMapper | ModuleNotify_MapperNotify | Объект маппера | ModuleNotify |
oViewerLocal | ModuleViewer | Объект локального вьювера для рендеринга сообщений | ModuleNotify |
sDir | string | Название директории с шаблономи | ModuleNotify |
sPrefix | string | Префикс шаблонов | ModuleNotify |
Public Methods
Method | Description | Defined By |
---|---|---|
AddBehaviorHook() | Добавляет хук поведения | LsObject |
AttachBehavior() | Присоединяет поведение к объекту | LsObject |
DeleteTask() | Удаляет отложенное Notify-задание из базы | ModuleNotify |
DeleteTaskByArrayId() | Удаляет отложенные Notify-задания по списку идентификаторов | ModuleNotify |
DetachBehavior() | Отсоединяет поведение от объекта | LsObject |
GetBehavior() | Возвращает объект поведения по его имени | LsObject |
GetBehaviors() | Возвращает все объекты поведения | LsObject |
GetTasksDelayed() | Получает массив заданий на публикацию из базы с указанным количественным ограничением (выборка FIFO) | ModuleNotify |
GetTemplatePath() | Возвращает путь к шаблону по переданному имени | ModuleNotify |
Init() | Инициализация модуля | ModuleNotify |
RemoveBehaviorHook() | Удаляет хук поведения | LsObject |
RunBehaviorHook() | Запускает хук поведения на выполнение | LsObject |
Send() | Универсальный метод отправки уведомлений на email | ModuleNotify |
SendBlogUserInvite() | Отправляет пользователю сообщение о приглашение его в закрытый блог | ModuleNotify |
SendCommentNewToAuthorTopic() | Отправляет юзеру уведомление о новом комментарии в его топике | ModuleNotify |
SendCommentReplyToAuthorParentComment() | Отправляет юзеру уведомление об ответе на его комментарий | ModuleNotify |
SendInvite() | Отправляет инвайт | ModuleNotify |
SendReactivationCode() | Отправляет уведомление с новым линком активации | ModuleNotify |
SendRegistration() | Отправляет уведомление о регистрации | ModuleNotify |
SendRegistrationActivate() | Отправляет уведомление при регистрации с активацией | ModuleNotify |
SendReminderCode() | Уведомление при восстановлении пароля | ModuleNotify |
SendReminderPassword() | Уведомление с новым паролем после его восставновления | ModuleNotify |
SendTalkCommentNew() | Отправляет уведомление о новом сообщение в личке | ModuleNotify |
SendTalkNew() | Отправляет уведомление при новом личном сообщении | ModuleNotify |
SendTask() | Отправляет на e-mail | ModuleNotify |
SendTopicNewToSubscribeBlog() | Отправляет юзеру уведомление о новом топике в блоге, в котором он состоит | ModuleNotify |
SendUserComplaint() | Уведомление администрации о новой жалобе | ModuleNotify |
SendUserFriendNew() | Отправляет пользователю сообщение о добавлении его в друзья | ModuleNotify |
SendWallNew() | Уведомление о новом сообщение на стене | ModuleNotify |
SendWallReply() | Уведомление при ответе на сообщение на стене | ModuleNotify |
SetInit() | Помечает модуль как инициализированный | Module |
Shutdown() | При завершении работы модуля проверяем наличие | ModuleNotify |
__call() | Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля | LsObject |
__clone() | Блокируем копирование/клонирование объекта | Module |
__construct() | Конструктор, запускается автоматически при создании объекта | LsObject |
__get() | Обработка доступа к объекты поведения | LsObject |
isInit() | Возвращает значение флага инициализации модуля | Module |
Protected Methods
Method | Description | Defined By |
---|---|---|
PrepareBehaviors() | Инициализация поведений | LsObject |
Property Details
Массив заданий на удаленную публикацию
Объект маппера
Объект локального вьювера для рендеринга сообщений
Название директории с шаблономи
Префикс шаблонов
Method Details
public bool DeleteTask(ModuleNotify_EntityTask $oTask)
| ||
$oTask | ModuleNotify_EntityTask | Объект задания на отправку |
{return} | bool |
public function DeleteTask($oTask)
{
return $this->oMapper->DeleteTask($oTask);
}
Удаляет отложенное Notify-задание из базы
public bool DeleteTaskByArrayId(array $aArrayId)
| ||
$aArrayId | array | Список ID заданий на отправку |
{return} | bool |
public function DeleteTaskByArrayId($aArrayId)
{
return $this->oMapper->DeleteTaskByArrayId($aArrayId);
}
Удаляет отложенные Notify-задания по списку идентификаторов
public array GetTasksDelayed(int $iLimit=10)
| ||
$iLimit | int | Количество |
{return} | array |
public function GetTasksDelayed($iLimit = 10)
{
return ($aResult = $this->oMapper->GetTasks($iLimit))
? $aResult
: array();
}
Получает массив заданий на публикацию из базы с указанным количественным ограничением (выборка FIFO)
public string GetTemplatePath(string $sName, string $sPluginName=NULL)
| ||
$sName | string | Название шаблона |
$sPluginName | string | Название или класс плагина |
{return} | string |
public function GetTemplatePath($sName, $sPluginName = null)
{
if ($sPluginName) {
$sPluginName = preg_match('/^Plugin([\w]+)(_[\w]+)?$/Ui', $sPluginName, $aMatches)
? strtolower($aMatches[1])
: strtolower($sPluginName);
return Plugin::GetTemplatePath($sPluginName) . $this->sDir . '/' . $sName;
} else {
return $this->sDir . '/' . $sName;
}
}
Возвращает путь к шаблону по переданному имени
public void Init()
|
public function Init()
{
$this->oViewerLocal = $this->Viewer_GetLocalViewer();
$this->oMapper = Engine::GetMapper(__CLASS__);
$this->sDir = Config::Get('module.notify.dir');
$this->sPrefix = Config::Get('module.notify.prefix');
}
Инициализация модуля Создаём локальный экземпляр модуля Viewer Момент довольно спорный, но позволяет избавить основной шаблон от мусора уведомлений
public void Send(ModuleUser_EntityUser|string $oUserTo, string $sTemplate, string $sSubject, array $aAssign=array (
), string|null $sPluginName=NULL, bool $bForceSend=false)
| ||
$oUserTo | ModuleUser_EntityUser|string | Кому отправляем (пользователь или email) |
$sTemplate | string | Шаблон для отправки |
$sSubject | string | Тема письма |
$aAssign | array | Ассоциативный массив для загрузки переменных в шаблон письма |
$sPluginName | string|null | Плагин из которого происходит отправка |
$bForceSend | bool | Отправлять сразу, даже при опции module.notify.delayed = true |
public function Send($oUserTo, $sTemplate, $sSubject, $aAssign = array(), $sPluginName = null, $bForceSend = false)
{
if ($oUserTo instanceof ModuleUser_EntityUser) {
$sMail = $oUserTo->getMail();
$sName = $oUserTo->getLogin();
} else {
$sMail = $oUserTo;
$sName = '';
}
/**
* Передаём в шаблон переменные
*/
foreach ($aAssign as $k => $v) {
$this->oViewerLocal->Assign($k, $v);
}
/**
* Формируем шаблон
*/
$sBody = $this->oViewerLocal->Fetch($this->GetTemplatePath($sTemplate, $sPluginName));
/**
* Если в конфигураторе указан отложенный метод отправки,
* то добавляем задание в массив. В противном случае,
* сразу отсылаем на email
*/
if (Config::Get('module.notify.delayed') and !$bForceSend) {
$oNotifyTask = Engine::GetEntity(
'Notify_Task',
array(
'user_mail' => $sMail,
'user_login' => $sName,
'notify_text' => $sBody,
'notify_subject' => $sSubject,
'date_created' => date("Y-m-d H:i:s"),
'notify_task_status' => self::NOTIFY_TASK_STATUS_NULL,
)
);
if (Config::Get('module.notify.insert_single')) {
$this->aTask[] = $oNotifyTask;
} else {
$this->oMapper->AddTask($oNotifyTask);
}
} else {
/**
* Отправляем мыло
*/
$this->Mail_SetAdress($sMail, $sName);
$this->Mail_SetSubject($sSubject);
$this->Mail_SetBody($sBody);
$this->Mail_setHTML();
$this->Mail_Send();
}
}
Универсальный метод отправки уведомлений на email
public void SendBlogUserInvite(ModuleUser_EntityUser $oUserTo, ModuleUser_EntityUser $oUserFrom, ModuleBlog_EntityBlog $oBlog, $sPath $sPath)
| ||
$oUserTo | ModuleUser_EntityUser | Объект пользователя, который отправляет приглашение |
$oUserFrom | ModuleUser_EntityUser | Объект пользователя, которого приглашаем |
$oBlog | ModuleBlog_EntityBlog | Объект блога |
$sPath | $sPath |
public function SendBlogUserInvite(
ModuleUser_EntityUser $oUserTo,
ModuleUser_EntityUser $oUserFrom,
ModuleBlog_EntityBlog $oBlog,
$sPath
) {
$this->Send(
$oUserTo,
$this->sPrefix . '.blog_invite_new.tpl',
$this->Lang_Get('emails.blog_invite_new.subject'),
array(
'oUserTo' => $oUserTo,
'oUserFrom' => $oUserFrom,
'oBlog' => $oBlog,
'sPath' => $sPath,
)
);
}
Отправляет пользователю сообщение о приглашение его в закрытый блог
public bool SendCommentNewToAuthorTopic(ModuleUser_EntityUser $oUserTo, ModuleTopic_EntityTopic $oTopic, ModuleComment_EntityComment $oComment, ModuleUser_EntityUser $oUserComment)
| ||
$oUserTo | ModuleUser_EntityUser | Объект пользователя кому отправляем |
$oTopic | ModuleTopic_EntityTopic | Объект топика |
$oComment | ModuleComment_EntityComment | Объект комментария |
$oUserComment | ModuleUser_EntityUser | Объект пользователя, написавшего комментарий |
{return} | bool |
public function SendCommentNewToAuthorTopic(
ModuleUser_EntityUser $oUserTo,
ModuleTopic_EntityTopic $oTopic,
ModuleComment_EntityComment $oComment,
ModuleUser_EntityUser $oUserComment
) {
/**
* Проверяем можно ли юзеру рассылать уведомление
*/
if (!$oUserTo->getSettingsNoticeNewComment()) {
return false;
}
$this->Send(
$oUserTo,
$this->sPrefix . '.comment_new.tpl',
$this->Lang_Get('emails.comment_new.subject'),
array(
'oUserTo' => $oUserTo,
'oTopic' => $oTopic,
'oComment' => $oComment,
'oUserComment' => $oUserComment,
)
);
return true;
}
Отправляет юзеру уведомление о новом комментарии в его топике
public bool SendCommentReplyToAuthorParentComment(ModuleUser_EntityUser $oUserTo, ModuleTopic_EntityTopic $oTopic, ModuleComment_EntityComment $oComment, ModuleUser_EntityUser $oUserComment)
| ||
$oUserTo | ModuleUser_EntityUser | Объект пользователя кому отправляем |
$oTopic | ModuleTopic_EntityTopic | Объект топика |
$oComment | ModuleComment_EntityComment | Объект комментария |
$oUserComment | ModuleUser_EntityUser | Объект пользователя, написавшего комментарий |
{return} | bool |
public function SendCommentReplyToAuthorParentComment(
ModuleUser_EntityUser $oUserTo,
ModuleTopic_EntityTopic $oTopic,
ModuleComment_EntityComment $oComment,
ModuleUser_EntityUser $oUserComment
) {
/**
* Проверяем можно ли юзеру рассылать уведомление
*/
if (!$oUserTo->getSettingsNoticeReplyComment()) {
return false;
}
$this->Send(
$oUserTo,
$this->sPrefix . '.comment_reply.tpl',
$this->Lang_Get('emails.comment_reply.subject'),
array(
'oUserTo' => $oUserTo,
'oTopic' => $oTopic,
'oComment' => $oComment,
'oUserComment' => $oUserComment,
)
);
return true;
}
Отправляет юзеру уведомление об ответе на его комментарий
public void SendInvite(ModuleUser_EntityUser $oUserFrom, string $sMailTo, ModuleUser_EntityInvite $oInvite)
| ||
$oUserFrom | ModuleUser_EntityUser | Пароль пользователя, который отправляет инвайт |
$sMailTo | string | Емайл на который отправляем инвайт |
$oInvite | ModuleUser_EntityInvite | Объект инвайта |
public function SendInvite(ModuleUser_EntityUser $oUserFrom, $sMailTo, ModuleUser_EntityInvite $oInvite)
{
$this->Send(
$sMailTo,
$this->sPrefix . '.invite.tpl',
$this->Lang_Get('emails.invite.subject'),
array(
'sMailTo' => $sMailTo,
'oUserFrom' => $oUserFrom,
'oInvite' => $oInvite,
)
);
}
Отправляет инвайт
public void SendReactivationCode(ModuleUser_EntityUser $oUser)
| ||
$oUser | ModuleUser_EntityUser | Объект пользователя |
public function SendReactivationCode(ModuleUser_EntityUser $oUser)
{
$this->Send(
$oUser,
$this->sPrefix . '.reactivation.tpl',
$this->Lang_Get('emails.reactivation.subject'),
array(
'oUser' => $oUser,
), null, true
);
}
Отправляет уведомление с новым линком активации
public void SendRegistration(ModuleUser_EntityUser $oUser, string $sPassword)
| ||
$oUser | ModuleUser_EntityUser | Объект пользователя |
$sPassword | string | Пароль пользователя |
public function SendRegistration(ModuleUser_EntityUser $oUser, $sPassword)
{
$this->Send(
$oUser,
$this->sPrefix . '.registration.tpl',
$this->Lang_Get('emails.registration.subject'),
array(
'oUser' => $oUser,
'sPassword' => $sPassword,
), null, true
);
}
Отправляет уведомление о регистрации
public void SendRegistrationActivate(ModuleUser_EntityUser $oUser, string $sPassword)
| ||
$oUser | ModuleUser_EntityUser | Объект пользователя |
$sPassword | string | Пароль пользователя |
public function SendRegistrationActivate(ModuleUser_EntityUser $oUser, $sPassword)
{
$this->Send(
$oUser,
$this->sPrefix . '.registration_activate.tpl',
$this->Lang_Get('emails.registration_activate.subject'),
array(
'oUser' => $oUser,
'sPassword' => $sPassword,
), null, true
);
}
Отправляет уведомление при регистрации с активацией
public void SendReminderCode(ModuleUser_EntityUser $oUser, ModuleUser_EntityReminder $oReminder)
| ||
$oUser | ModuleUser_EntityUser | Объект пользователя |
$oReminder | ModuleUser_EntityReminder | объект напоминания пароля |
public function SendReminderCode(ModuleUser_EntityUser $oUser, ModuleUser_EntityReminder $oReminder)
{
$this->Send(
$oUser,
$this->sPrefix . '.reminder_code.tpl',
$this->Lang_Get('emails.reminder_code.subject'),
array(
'oUser' => $oUser,
'oReminder' => $oReminder,
), null, true
);
}
Уведомление при восстановлении пароля
public void SendReminderPassword(ModuleUser_EntityUser $oUser, string $sNewPassword)
| ||
$oUser | ModuleUser_EntityUser | Объект пользователя |
$sNewPassword | string | Новый пароль |
public function SendReminderPassword(ModuleUser_EntityUser $oUser, $sNewPassword)
{
$this->Send(
$oUser,
$this->sPrefix . '.reminder_password.tpl',
$this->Lang_Get('emails.reminder_password.subject'),
array(
'oUser' => $oUser,
'sNewPassword' => $sNewPassword,
), null, true
);
}
Уведомление с новым паролем после его восставновления
public bool SendTalkCommentNew(ModuleUser_EntityUser $oUserTo, ModuleUser_EntityUser $oUserFrom, ModuleTalk_EntityTalk $oTalk, ModuleComment_EntityComment $oTalkComment)
| ||
$oUserTo | ModuleUser_EntityUser | Объект пользователя, которому отправляем уведомление |
$oUserFrom | ModuleUser_EntityUser | Объект пользователя, которыф написал комментарий |
$oTalk | ModuleTalk_EntityTalk | Объект сообщения |
$oTalkComment | ModuleComment_EntityComment | Объект комментария |
{return} | bool |
public function SendTalkCommentNew(
ModuleUser_EntityUser $oUserTo,
ModuleUser_EntityUser $oUserFrom,
ModuleTalk_EntityTalk $oTalk,
ModuleComment_EntityComment $oTalkComment
) {
/**
* Проверяем можно ли юзеру рассылать уведомление
*/
if (!$oUserTo->getSettingsNoticeNewTalk()) {
return false;
}
$this->Send(
$oUserTo,
$this->sPrefix . '.talk_comment_new.tpl',
$this->Lang_Get('emails.talk_comment_new.subject'),
array(
'oUserTo' => $oUserTo,
'oUserFrom' => $oUserFrom,
'oTalk' => $oTalk,
'oTalkComment' => $oTalkComment,
)
);
return true;
}
Отправляет уведомление о новом сообщение в личке
public bool SendTalkNew(ModuleUser_EntityUser $oUserTo, ModuleUser_EntityUser $oUserFrom, ModuleTalk_EntityTalk $oTalk)
| ||
$oUserTo | ModuleUser_EntityUser | Объект пользователя, которому отправляем сообщение |
$oUserFrom | ModuleUser_EntityUser | Объект пользователя, который отправляет сообщение |
$oTalk | ModuleTalk_EntityTalk | Объект сообщения |
{return} | bool |
public function SendTalkNew(
ModuleUser_EntityUser $oUserTo,
ModuleUser_EntityUser $oUserFrom,
ModuleTalk_EntityTalk $oTalk
) {
/**
* Проверяем можно ли юзеру рассылать уведомление
*/
if (!$oUserTo->getSettingsNoticeNewTalk()) {
return false;
}
$this->Send(
$oUserTo,
$this->sPrefix . '.talk_new.tpl',
$this->Lang_Get('emails.talk_new.subject'),
array(
'oUserTo' => $oUserTo,
'oUserFrom' => $oUserFrom,
'oTalk' => $oTalk,
)
);
return true;
}
Отправляет уведомление при новом личном сообщении
public void SendTask(ModuleNotify_EntityTask $oTask)
| ||
$oTask | ModuleNotify_EntityTask | Объект задания на отправку |
public function SendTask($oTask)
{
$this->Mail_SetAdress($oTask->getUserMail(), $oTask->getUserLogin());
$this->Mail_SetSubject($oTask->getNotifySubject());
$this->Mail_SetBody($oTask->getNotifyText());
$this->Mail_setHTML();
$this->Mail_Send();
}
Отправляет на e-mail
public bool SendTopicNewToSubscribeBlog(ModuleUser_EntityUser $oUserTo, ModuleTopic_EntityTopic $oTopic, ModuleBlog_EntityBlog $oBlog, ModuleUser_EntityUser $oUserTopic)
| ||
$oUserTo | ModuleUser_EntityUser | Объект пользователя кому отправляем |
$oTopic | ModuleTopic_EntityTopic | Объект топика |
$oBlog | ModuleBlog_EntityBlog | Объект блога |
$oUserTopic | ModuleUser_EntityUser | Объект пользователя, написавшего топик |
{return} | bool |
public function SendTopicNewToSubscribeBlog(
ModuleUser_EntityUser $oUserTo,
ModuleTopic_EntityTopic $oTopic,
ModuleBlog_EntityBlog $oBlog,
ModuleUser_EntityUser $oUserTopic
) {
/**
* Проверяем можно ли юзеру рассылать уведомление
*/
if (!$oUserTo->getSettingsNoticeNewTopic()) {
return false;
}
$this->Send(
$oUserTo,
$this->sPrefix . '.topic_new.tpl',
$this->Lang_Get('emails.topic_new.subject') . ' «' . htmlspecialchars($oBlog->getTitle()) . '»',
array(
'oUserTo' => $oUserTo,
'oTopic' => $oTopic,
'oBlog' => $oBlog,
'oUserTopic' => $oUserTopic,
)
);
return true;
}
Отправляет юзеру уведомление о новом топике в блоге, в котором он состоит
public void SendUserComplaint($oComplaint $oComplaint)
| ||
$oComplaint | $oComplaint |
public function SendUserComplaint($oComplaint)
{
$this->Send(
Config::Get('general.admin_mail'),
$this->sPrefix . '.user_complaint.tpl',
$this->Lang_Get('emails.user_complaint.subject'),
array(
'oUserTarget' => $oComplaint->getTargetUser(),
'oUserFrom' => $oComplaint->getUser(),
'oComplaint' => $oComplaint,
)
);
}
Уведомление администрации о новой жалобе
public bool SendUserFriendNew(ModuleUser_EntityUser $oUserTo, ModuleUser_EntityUser $oUserFrom, string $sText, string $sPath)
| ||
$oUserTo | ModuleUser_EntityUser | Объект пользователя |
$oUserFrom | ModuleUser_EntityUser | Объект пользователя, которого добавляем в друзья |
$sText | string | Текст сообщения |
$sPath | string | URL для подтверждения дружбы |
{return} | bool |
public function SendUserFriendNew(ModuleUser_EntityUser $oUserTo, ModuleUser_EntityUser $oUserFrom, $sText, $sPath)
{
/**
* Проверяем можно ли юзеру рассылать уведомление
*/
if (!$oUserTo->getSettingsNoticeNewFriend()) {
return false;
}
$this->Send(
$oUserTo,
$this->sPrefix . '.user_friend_new.tpl',
$this->Lang_Get('emails.user_friend_new.subject'),
array(
'oUserTo' => $oUserTo,
'oUserFrom' => $oUserFrom,
'sText' => $sText,
'sPath' => $sPath,
)
);
return true;
}
Отправляет пользователю сообщение о добавлении его в друзья
public void SendWallNew(ModuleWall_EntityWall $oWall, ModuleUser_EntityUser $oUser)
| ||
$oWall | ModuleWall_EntityWall | Объект нового сообщения на стене |
$oUser | ModuleUser_EntityUser | Объект пользователя |
public function SendWallNew(ModuleWall_EntityWall $oWall, ModuleUser_EntityUser $oUser)
{
$this->Send(
$oWall->getWallUser(),
$this->sPrefix . '.wall.new.tpl',
$this->Lang_Get('emails.wall_new.subject'),
array(
'oUserTo' => $oWall->getWallUser(),
'oWall' => $oWall,
'oUser' => $oUser,
'oUserWall' => $oWall->getWallUser(), // кому принадлежит стена
)
);
}
Уведомление о новом сообщение на стене
public void SendWallReply(ModuleWall_EntityWall $oWallParent, ModuleWall_EntityWall $oWall, ModuleUser_EntityUser $oUser)
| ||
$oWallParent | ModuleWall_EntityWall | Объект сообщения на стене, на которое отвечаем |
$oWall | ModuleWall_EntityWall | Объект нового сообщения на стене |
$oUser | ModuleUser_EntityUser | Объект пользователя |
public function SendWallReply(
ModuleWall_EntityWall $oWallParent,
ModuleWall_EntityWall $oWall,
ModuleUser_EntityUser $oUser
) {
$this->Send(
$oWallParent->getUser(),
$this->sPrefix . '.wall.reply.tpl',
$this->Lang_Get('emails.wall_reply.subject'),
array(
'oWallParent' => $oWallParent,
'oUserTo' => $oWallParent->getUser(),
'oWall' => $oWall,
'oUser' => $oUser,
'oUserWall' => $oWall->getWallUser(), // кому принадлежит стена
)
);
}
Уведомление при ответе на сообщение на стене
public void Shutdown()
|
public function Shutdown()
{
if (!empty($this->aTask) && Config::Get('module.notify.delayed')) {
$this->oMapper->AddTaskArray($this->aTask);
$this->aTask = array();
}
}
При завершении работы модуля проверяем наличие отложенных заданий в массиве и при необходимости передаем их в меппер