ModuleNotify
Package | modules.notify |
---|---|
Inheritance | class ModuleNotify » Module » LsObject |
Since | 1.0 |
Source Code | /classes/modules/notify/Notify.class.php |
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
aTask | array | Массив заданий на удаленную публикацию | ModuleNotify |
bIsInit | bool | Указывает на то, была ли проведенна инициализация модуля | Module |
oEngine | Engine | Объект ядра | Module |
oMapper | ModuleNotify_MapperNotify | Объект маппера | ModuleNotify |
oViewerLocal | ModuleViewer | Объект локального вьювера для рендеринга сообщений | ModuleNotify |
Public Methods
Method | Description | Defined By |
---|---|---|
DeleteTask() | Удаляет отложенное Notify-задание из базы | ModuleNotify |
DeleteTaskByArrayId() | Удаляет отложенные Notify-задания по списку идентификаторов | ModuleNotify |
GetTasksDelayed() | Получает массив заданий на публикацию из базы с указанным количественным ограничением (выборка FIFO) | ModuleNotify |
GetTemplatePath() | Возвращает путь к шаблону по переданному имени | ModuleNotify |
Init() | Инициализация модуля | ModuleNotify |
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 |
SendUserFriendNew() | Отправляет пользователю сообщение о добавлении его в друзья | ModuleNotify |
SendWallNew() | Уведомление о новом сообщение на стене | ModuleNotify |
SendWallReply() | Уведомление при ответе на сообщение на стене | ModuleNotify |
SetInit() | Помечает модуль как инициализированный | Module |
Shutdown() | При завершении работы модуля проверяем наличие | ModuleNotify |
__call() | Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля | Module |
__construct() | При создании модуля передаем объект ядра | Module |
isInit() | Возвращает значение флага инициализации модуля | Module |
Protected Methods
Method | Description | Defined By |
---|---|---|
__clone() | Блокируем копирование/клонирование объекта | Module |
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);
$sLangDir=Plugin::GetTemplatePath($sPluginName).'notify/'.$this->Lang_GetLang();
if(is_dir($sLangDir)) {
return $sLangDir.'/'.$sName;
}
return Plugin::GetTemplatePath($sPluginName).'notify/'.$this->Lang_GetLangDefault().'/'.$sName;
} else {
$sLangDir = 'notify/'.$this->Lang_GetLang();
/**
* Если директория с сообщениями на текущем языке отсутствует,
* используем язык по умолчанию
*/
if(is_dir(rtrim(Config::Get('path.smarty.template'),'/').'/'.$sLangDir)) {
return $sLangDir.'/'.$sName;
}
return 'notify/'.$this->Lang_GetLangDefault().'/'.$sName;
}
}
Возвращает путь к шаблону по переданному имени
public void Init()
|
public function Init() {
$this->oViewerLocal=$this->Viewer_GetLocalViewer();
$this->oMapper=Engine::GetMapper(__CLASS__);
}
Инициализация модуля Создаём локальный экземпляр модуля Viewer Момент довольно спорный, но позволяет избавить основной шаблон от мусора уведомлений
public void Send(ModuleUser_EntityUser|string $oUserTo, string $sTemplate, string $sSubject, array $aAssign=array (
), string|null $sPluginName=NULL)
| ||
$oUserTo | ModuleUser_EntityUser|string | Кому отправляем (пользователь или email) |
$sTemplate | string | Шаблон для отправки |
$sSubject | string | Тема письма |
$aAssign | array | Ассоциативный массив для загрузки переменных в шаблон письма |
$sPluginName | string|null | Плагин из которого происходит отправка |
public function Send($oUserTo,$sTemplate,$sSubject,$aAssign=array(),$sPluginName=null) {
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')) {
$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,
'notify.blog_invite_new.tpl',
$this->Lang_Get('notify_subject_blog_invite_new'),
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,
'notify.comment_new.tpl',
$this->Lang_Get('notify_subject_comment_new'),
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,
'notify.comment_reply.tpl',
$this->Lang_Get('notify_subject_comment_reply'),
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,
'notify.invite.tpl',
$this->Lang_Get('notify_subject_invite'),
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,
'notify.reactivation.tpl',
$this->Lang_Get('notify_subject_reactvation'),
array(
'oUser' => $oUser,
)
);
}
Отправляет уведомление с новым линком активации
public void SendRegistration(ModuleUser_EntityUser $oUser, string $sPassword)
| ||
$oUser | ModuleUser_EntityUser | Объект пользователя |
$sPassword | string | Пароль пользователя |
public function SendRegistration(ModuleUser_EntityUser $oUser,$sPassword) {
$this->Send(
$oUser,
'notify.registration.tpl',
$this->Lang_Get('notify_subject_registration'),
array(
'oUser' => $oUser,
'sPassword' => $sPassword,
)
);
}
Отправляет уведомление о регистрации
public void SendRegistrationActivate(ModuleUser_EntityUser $oUser, string $sPassword)
| ||
$oUser | ModuleUser_EntityUser | Объект пользователя |
$sPassword | string | Пароль пользователя |
public function SendRegistrationActivate(ModuleUser_EntityUser $oUser,$sPassword) {
$this->Send(
$oUser,
'notify.registration_activate.tpl',
$this->Lang_Get('notify_subject_registration_activate'),
array(
'oUser' => $oUser,
'sPassword' => $sPassword,
)
);
}
Отправляет уведомление при регистрации с активацией
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,
'notify.reminder_code.tpl',
$this->Lang_Get('notify_subject_reminder_code'),
array(
'oUser' => $oUser,
'oReminder' => $oReminder,
)
);
}
Уведомление при восстановлении пароля
public void SendReminderPassword(ModuleUser_EntityUser $oUser, string $sNewPassword)
| ||
$oUser | ModuleUser_EntityUser | Объект пользователя |
$sNewPassword | string | Новый пароль |
public function SendReminderPassword(ModuleUser_EntityUser $oUser,$sNewPassword) {
$this->Send(
$oUser,
'notify.reminder_password.tpl',
$this->Lang_Get('notify_subject_reminder_password'),
array(
'oUser' => $oUser,
'sNewPassword' => $sNewPassword,
)
);
}
Уведомление с новым паролем после его восставновления
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,
'notify.talk_comment_new.tpl',
$this->Lang_Get('notify_subject_talk_comment_new'),
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,
'notify.talk_new.tpl',
$this->Lang_Get('notify_subject_talk_new'),
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,
'notify.topic_new.tpl',
$this->Lang_Get('notify_subject_topic_new').' «'.htmlspecialchars($oBlog->getTitle()).'»',
array(
'oUserTo' => $oUserTo,
'oTopic' => $oTopic,
'oBlog' => $oBlog,
'oUserTopic' => $oUserTopic,
)
);
return true;
}
Отправляет юзеру уведомление о новом топике в блоге, в котором он состоит
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,
'notify.user_friend_new.tpl',
$this->Lang_Get('notify_subject_user_friend_new'),
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(),
'notify.wall.new.tpl',
$this->Lang_Get('notify_subject_wall_new'),
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(),
'notify.wall.reply.tpl',
$this->Lang_Get('notify_subject_wall_reply'),
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();
}
}
При завершении работы модуля проверяем наличие отложенных заданий в массиве и при необходимости передаем их в меппер