Как работает sendNoticePM?

#1 10 сентября 2020 в 22:56
Не могу понять, как работает sendNoticePM? С sendEmail понятно, к примеру
$messenger->sendEmail($to, $letter);
$to — кому отправляем
$letter — массив с письмом.

А как отправить через sendNoticePM конкретному пользователю. Взять например, как это в группах работает
$messenger->sendNoticePM($notice, 'groups_invite');
$notice — массив с сообщением
'groups_invite' — непонятно

Да и не понятно, как кому-то конкретно отправить?
#2 11 сентября 2020 в 07:59

А как отправить через sendNoticePM конкретному пользователю

Vladimir

Добавить получателя перед отправкой. Пример отправки уведомления при добавлении в друзья:

  1. public function sendNoticeAccepted($friend){
  2.  
  3. $messenger = cmsCore::getController('messages');
  4.  
  5. $messenger->addRecipient($friend['id']);
  6.  
  7. $sender_link = '<a href="'.href_to($this->name, $this->cms_user->id).'">'.$this->cms_user->nickname.'</a>';
  8.  
  9. $notice = array(
  10. 'content' => sprintf(LANG_USERS_FRIENDS_DONE, $sender_link),
  11. );
  12.  
  13. $messenger->sendNoticePM($notice, 'users_friend_accept');
  14.  
  15. }
#3 11 сентября 2020 в 08:03
Спасибо!
#4 11 сентября 2020 в 08:06

'users_friend_accept'

Ris
Этот параметр непонятен.
#5 11 сентября 2020 в 08:16
У меня ещё есть задача, нужно через стандартные уведомления сделать запрос в друзья, в контроллере users в экшене friend_add не совсем понятно, потому-что там отправка идёт через ajax, и отправка выглядит так:
  1. return $this->cms_template->renderAsset('ui/confirm', array(
  2. 'confirm_title' => sprintf(LANG_USERS_FRIENDS_CONFIRM, $friend['nickname']),
  3. 'confirm_action' => $this->cms_template->href_to('friend_add', $friend['id'])
  4. ), $this->request);
может это сделать как-то из параметра подтверждения запроса в друзья, который так же в экшене friend_add, сообщение так выглядит:
  1.  
  2. $notice = array(
  3. 'content' => sprintf(LANG_USERS_FRIENDS_NOTICE, $sender_link),
  4. 'options' => array(
  5. 'is_closeable' => false
  6. ),
  7. 'actions' => array(
  8. 'accept' => array(
  9. 'title' => LANG_ACCEPT,
  10. 'controller' => $this->name,
  11. 'action' => 'friend_add',
  12. 'params' => array($this->cms_user->id)
  13. ),
  14. .........
  15.  
Но не знаю как обратиться из своего компонента к экшену friend_add, пробовал так:
  1.  
  2. ....
  3. 'accept' => array(
  4. 'title' => LANG_ACCEPT,
  5. 'controller' => cmsCore::getController('content', $this->name),
  6. 'action' => 'friend_add',
  7. 'params' => $mail['friend_link']
  8. ),
  9. ....
  10.  
Не работает, ошибки
#6 11 сентября 2020 в 08:32

'users_friend_accept'
Этот параметр непонятен.

Vladimir
В настройках профиля каждого юзера есть вкладка "уведомления", где юзер выбирает, какие уведомления получать. Это пишется в таблицу cms_users.
Если есть у юзера желание получать уведомления о подтверждении дружбы (у него выбран тип уведомлений 'users_friend_accept') — он их получит.

У меня ещё есть задача, нужно через стандартные уведомления сделать запрос в друзья

Vladimir
Вот это не понял.
#7 11 сентября 2020 в 08:51

Вот это не понял.

Ris
Когда пользователь 1, заходит к пользователю 2 в профиль и нажимает "Добавить в друзья", появляется ajax окно с запросом о добавлении в друзья, оно не связано с уведомлениями, более того, по прямой ссылке мойсайт.ру/users/friend_add/2, отрисованно не корректно. Ещё раз за окно о добавлении в друзья, я думаю отвечает этот код
return $this->cms_template->renderAsset('ui/confirm', array(
'confirm_title' => sprintf(LANG_USERS_FRIENDS_CONFIRM, $friend['nickname']),
'confirm_action' => $this->cms_template->href_to('friend_add', $friend['id'])
), $this->request);
Когда пользователь 1 отправил пользователю 2 запрос, пользователь 2 получает уведомление о подтверждении, но уже в раздел с уведомлениями, за это отвечает эта часть кода


$notice = array(
'content' => sprintf(LANG_USERS_FRIENDS_NOTICE, $sender_link),
'options' => array(
'is_closeable' => false
),
'actions' => array(
'accept' => array(
'title' => LANG_ACCEPT,
'controller' => $this->name,
'action' => 'friend_add',
'params' => array($this->cms_user->id)
),
.........

Мой компонент должен рассылать предложения о добавлении в друзья в уведомления, я думаю, можно использовать вышеуказанный код для "подтверждения добавления в друзья". Но я не знаю как обратиться из своего компонента к экшену friend_add, пробовал так, как писал ранее:
....
'accept' => array(
'title' => LANG_ACCEPT,
'controller' => cmsCore::getController('content', $this->name),
'action' => 'friend_add',
'params' => $mail['friend_link']
),
....
Но не получилось, возникают ошибки.
#8 11 сентября 2020 в 09:11
Vladimir,
Теперь еще сильнее не понял.
Система и так рассылает уведомления о предложении дружбы.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.