Add "threadPostMessage" event

This commit is contained in:
Dmitriy Simushev 2014-10-27 13:18:12 +00:00
parent 30da4ae75e
commit 3f27aea2ea
2 changed files with 30 additions and 2 deletions

View File

@ -305,6 +305,21 @@ final class Events
*/
const THREAD_CLOSE = 'threadClose';
/**
* A message is posted.
*
* This event is triggered before a message has been posted to thread. It
* provides an ability for plugins to alter message, its kind or options. An
* associative array with the following items is passed to the event
* handlers:
* - "thread": an instance of {@link \Mibew\Thread}.
* - "message_kind": int, message kind.
* - "message_body": string, message body.
* - "message_options": associative array, list of options passed to
* {@link \Mibew\Thread::postMessage()} method as the third argument.
*/
const THREAD_POST_MESSAGE = 'threadPostMessage';
/**
* Threads list is ready to be sent to client.
*

View File

@ -808,6 +808,9 @@ class Thread
* One can also set plugin item of the $options array to indicate that
* message was sent by a plugin.
*
* Triggers {@link \Mibew\EventDispatcher\Events::THREAD_POST_MESSAGE}
* event.
*
* @param int $kind Message kind. One of the Thread::KIND_*
* @param string $message Message body
* @param array $options List of additional options. It may contain
@ -837,10 +840,20 @@ class Thread
*/
public function postMessage($kind, $message, $options = array())
{
$options = is_array($options) ? $options : array();
$event_args = array(
'thread' => $this,
'message_kind' => $kind,
'message_body' => $message,
'message_options' => (is_array($options) ? $options : array()),
);
EventDispatcher::getInstance()->triggerEvent(Events::THREAD_POST_MESSAGE, $event_args);
// Send message
return $this->saveMessage($kind, $message, $options);
return $this->saveMessage(
$event_args['message_kind'],
$event_args['message_body'],
$event_args['message_options']
);
}
/**