Jump to content

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


Налик

Recommended Posts

Всем привет!

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

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

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

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

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

Link to comment
Share on other sites

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

 

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

 

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

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Ваша ссылка была автоматически строена.   Отображать как обычную ссылку

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...