Налик Опубликовано 9 ноября, 2016 Поделиться Опубликовано 9 ноября, 2016 Всем привет! Установлен IPS Community site 4.1.15 Как кодом можно отправить пользователю системное сообщение? Вот так я получаю информацию о пользователе: $member = \IPS\Member::loggedIn(); Теперь этому пользователю нужно отправить личное сообщение. Как это можно сделать? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Silence Опубликовано 9 ноября, 2016 Поделиться Опубликовано 9 ноября, 2016 Upgrade 4.1.16.1: Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Silence Опубликовано 9 ноября, 2016 Поделиться Опубликовано 9 ноября, 2016 извините, но я вам понимаю неправильно $member = \IPS\Member::loggedIn()->member_id; попробуй Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
ram108 Опубликовано 9 ноября, 2016 Поделиться Опубликовано 9 ноября, 2016 28 минут назад, Silence сказал: извините, но я вам понимаю неправильно Человек хочет отправлять личные сообщения пользователю $member. Silence 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Налик Опубликовано 10 ноября, 2016 Автор Поделиться Опубликовано 10 ноября, 2016 14 часов назад, ram108 сказал: Человек хочет отправлять личные сообщения пользователю $member. Именно. Задачу решил, сообщения отправляются, но возникли проблемы: 1. Сообщение не помечается как "новое", а выглядит будто уже было прочитано. 2. Не приходит уведомление о том, что пришло новое сообщение. 3. На иконке (конвертике) сообщений нет оповещение о том, что пришло новое сообщение. Вот код: // загрузить информацию о текущем пользователе $member = \IPS\Member::loggedIn(); _sendPM($member, "Тема сообщения","Содержание сообщения"); function _sendPM( $member, $title, $message ) { /* Setup pm title and msg */ $msgTitle = \IPS\Member::loggedIn()->language()->addToStack( $title ); $msgPost = \IPS\Member::loggedIn()->language()->addToStack( $message ); \IPS\Member::loggedIn()->language()->parseOutputForDisplay( $msgTitle ); \IPS\Member::loggedIn()->language()->parseOutputForDisplay( $msgPost ); /* Отправитель */ try { $admin = \IPS\Member::load( 1 ); $pmSender = $admin; } catch( \OutOfRangeException $ex ) { return; } /* Проверка существования отправителя */ if( !$pmSender->member_id ) { return; } /* Создать разговор */ $conversation = \IPS\core\Messenger\Conversation::createItem( $member, $member->ip_address, \IPS\DateTime::ts( time() ) ); $conversation->title = $msgTitle; $conversation->is_system = TRUE; $conversation->save(); /* Авторизация админа */ $c_members[] = $member->member_id; $c_members[] = $pmSender->member_id; $conversation->authorize( $c_members ); /* Добавить сообщение в БД */ $message = \IPS\core\Messenger\Message::create( $conversation, $msgPost, TRUE, NULL, NULL, $pmSender ); $conversation->first_msg_id = $message->id; $conversation->save(); /* Отправить уведомление */ $notification = new \IPS\Notification( \IPS\Application::load('core'), 'private_message_added', $conversation, array( $conversation, \IPS\Member::loggedIn() ) ); $notification->send(); } Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.