Налик Posted November 9, 2016 Share Posted November 9, 2016 Всем привет! Установлен IPS Community site 4.1.15 Как кодом можно отправить пользователю системное сообщение? Вот так я получаю информацию о пользователе: $member = \IPS\Member::loggedIn(); Теперь этому пользователю нужно отправить личное сообщение. Как это можно сделать? Quote Link to comment Share on other sites More sharing options...
Silence Posted November 9, 2016 Share Posted November 9, 2016 Upgrade 4.1.16.1: Quote Link to comment Share on other sites More sharing options...
Silence Posted November 9, 2016 Share Posted November 9, 2016 извините, но я вам понимаю неправильно $member = \IPS\Member::loggedIn()->member_id; попробуй Quote Link to comment Share on other sites More sharing options...
ram108 Posted November 9, 2016 Share Posted November 9, 2016 28 минут назад, Silence сказал: извините, но я вам понимаю неправильно Человек хочет отправлять личные сообщения пользователю $member. Silence 1 Quote Link to comment Share on other sites More sharing options...
Налик Posted November 10, 2016 Author Share Posted November 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(); } Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.