Jump to content

Отправка системного сообщения

Featured Replies

Posted
comment_115615

Всем привет!

Установлен IPS Community site 4.1.15

Как кодом можно отправить пользователю системное сообщение?

Вот так я получаю информацию о пользователе:

$member = \IPS\Member::loggedIn();

Теперь этому пользователю нужно отправить личное сообщение.  Как это можно сделать?

comment_115631
28 минут назад, Silence сказал:

 

извините, но я вам понимаю неправильно

 

Человек хочет отправлять личные сообщения пользователю $member.

  • Author
comment_115675
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();
	}

 

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.


Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.