Describe all "users" app related events in Events class

This commit is contained in:
Dmitriy Simushev 2014-10-20 10:12:55 +00:00
parent 55b1476139
commit d05fe335b8
2 changed files with 88 additions and 33 deletions

View File

@ -164,6 +164,83 @@ final class Events
*/ */
const RESOURCE_NOT_FOUND = 'resourceNotFound'; const RESOURCE_NOT_FOUND = 'resourceNotFound';
/**
* Threads list is ready to be sent to client.
*
* This event is triggered before the threads list is sent to the "users"
* client side application. It provide an ability to alter the list. A
* plugin can attach some fields to each thread or completeley replace the
* whole list. An associative array with the following items is passed to
* the event handlers:
* - "threads": array of threads data arrays.
*/
const USERS_UPDATE_THREADS_ALTER = 'usersUpdateThreadsAlter';
/**
* Load custom on site visitors list.
*
* This event is triggered before the list of on site visitors is loaded for
* sending to the "users" client side application. It provide an ability for
* plugins to load, sort and limit visitors list. An associative array with
* the following items is passed to the event handlers:
* - "visitors": array of visitors data arrays. Each visitor array must
* contain at least the following keys: "id", "userName", "userAgent",
* "userIp", "remote", "firstTime", "lastTime", "invitations",
* "chats", "invitationInfo". If there are no visitors an empty array
* should be used.
*
* If the "visitors" item was not set by a plugin the default system loader
* will be used.
*/
const USERS_UPDATE_VISITORS_LOAD = 'usersUpdateVisitorsLoad';
/**
* On site visitors list is ready to be sent to client.
*
* This event is triggered before the on site visitors list is sent to the
* "users" client application. It provide an ability to alter the list.
* A plugin can attach some fields to each visitor or completeley replace
* the whole list. An associative array with the following items is passed
* to the event handlers:
* - "visitors": array of visitors data arrays.
*/
const USERS_UPDATE_VISITORS_ALTER = 'usersUpdateVisitorsAlter';
/**
* A function was called at client side "users" application.
*
* This event is triggered when an API a function is called at client side
* in the "users" application, but the system is not aware of this function.
*
* Plugins can implement custom API functions by attaching handlers to the
* event. If a plugin wants to return some results, it should use "results"
* element of the event arguments array (see below).
*
* An associative array with the following items is passed to the event
* handlers:
* - "function": string, name of the function that was called.
* - "arguments": associative array of arguments that was passed to the
* function.
* - "results": array, list of function results.
*
* Here is an example of the event handler:
* <code>
* public function callHandler(&$function)
* {
* // Check that the function we want to implement is called.
* if ($function['function'] == 'microtime') {
* // Check some function's arguments.
* $as_float = empty($function['arguments']['as_float'])
* ? false
* : $function['arguments']['as_float'];
* // Invoke the function and return the results.
* $function['results']['time'] = microtime($as_float);
* }
* }
* </code>
*/
const USERS_FUNCTION_CALL = 'usersFunctionCall';
/** /**
* Visitor is created. * Visitor is created.
* *

View File

@ -24,24 +24,14 @@ use Mibew\Authentication\AuthenticationManagerAwareInterface;
use Mibew\Authentication\AuthenticationManagerInterface; use Mibew\Authentication\AuthenticationManagerInterface;
use Mibew\Database; use Mibew\Database;
use Mibew\EventDispatcher\EventDispatcher; use Mibew\EventDispatcher\EventDispatcher;
use Mibew\EventDispatcher\Events;
use Mibew\Settings; use Mibew\Settings;
use Mibew\Thread; use Mibew\Thread;
use Mibew\API\API as MibewAPI; use Mibew\API\API as MibewAPI;
use Mibew\RequestProcessor\Exception\UsersProcessorException; use Mibew\RequestProcessor\Exception\UsersProcessorException;
/** /**
* Incapsulates awaiting users list api related functions. * Incapsulates awaiting users list API related functions.
*
* Events triggered by the class (see description of the RequestProcessor class
* for details):
* - usersRequestReceived
* - usersReceiveRequestError
* - usersCallError
* - usersFunctionCall
*
* Also triggers follow events (see description of apiUpdateVisitors method):
* - usersUpdateVisitorsLoad
* - usersUpdateVisitorsAlter
*/ */
class UsersProcessor extends ClientSideProcessor implements AuthenticationManagerAwareInterface class UsersProcessor extends ClientSideProcessor implements AuthenticationManagerAwareInterface
{ {
@ -181,11 +171,8 @@ class UsersProcessor extends ClientSideProcessor implements AuthenticationManage
/** /**
* Return updated threads list. API function * Return updated threads list. API function
* *
* Triggers the following events: * Triggers
* 1. 'usersUpdateThreadsAlter': provide the ability to alter threads * {@link \Mibew\EventDispatcher\Events::USERS_UPDATE_THREADS_ALTER} event.
* list. Associative array is passed to event lister. It has the
* following keys:
* - 'threads': array of threads arrays.
* *
* @param array $args Associative array of arguments. It must contains the * @param array $args Associative array of arguments. It must contains the
* following keys: * following keys:
@ -356,7 +343,7 @@ class UsersProcessor extends ClientSideProcessor implements AuthenticationManage
'threads' => $threads, 'threads' => $threads,
); );
$dispatcher = EventDispatcher::getInstance(); $dispatcher = EventDispatcher::getInstance();
$dispatcher->triggerEvent('usersUpdateThreadsAlter', $arguments); $dispatcher->triggerEvent(Events::USERS_UPDATE_THREADS_ALTER, $arguments);
// Send results back to the client. "array_values" function should be // Send results back to the client. "array_values" function should be
// used to avoid problems with JSON conversion. If there will be gaps in // used to avoid problems with JSON conversion. If there will be gaps in
@ -371,19 +358,10 @@ class UsersProcessor extends ClientSideProcessor implements AuthenticationManage
/** /**
* Return updated visitors list. API function. * Return updated visitors list. API function.
* *
* Triggers following events: * Triggers
* 1. 'usersUpdateVisitorsLoad': provide the ability to plugins to load, * {@link \Mibew\EventDispatcher\Events::USERS_UPDATE_VISITORS_LOAD} and
* sort and limiting visitors list. Associative array pass to event * {@link \Mibew\EventDispatcher\Events::USERS_UPDATE_VISITORS_ALTER}
* lister have following keys: * events.
* - 'visitors': array of visitors arrays. Each visitor array must
* contain at least following keys: 'id', 'userName', 'userAgent',
* 'userIp', 'remote', 'firstTime', 'lastTime', 'invitations',
* 'chats', 'invitationInfo'. If there are no visitors an empty array
* should be used.
*
* 2. 'usersUpdateVisitorsAlter': provide the ability to alter visitors
* list. Associative array pass to event lister have following keys:
* - 'visitors': array of visitors arrays.
* *
* @param array $args Associative array of arguments. It must contains the * @param array $args Associative array of arguments. It must contains the
* following keys: * following keys:
@ -410,7 +388,7 @@ class UsersProcessor extends ClientSideProcessor implements AuthenticationManage
$arguments = array( $arguments = array(
'visitors' => false 'visitors' => false
); );
$dispatcher->triggerEvent('usersUpdateVisitorsLoad', $arguments); $dispatcher->triggerEvent(Events::USERS_UPDATE_VISITORS_LOAD, $arguments);
// Check if visiors list loaded by plugins // Check if visiors list loaded by plugins
if (!is_array($arguments['visitors'])) { if (!is_array($arguments['visitors'])) {
@ -502,7 +480,7 @@ class UsersProcessor extends ClientSideProcessor implements AuthenticationManage
$arguments = array( $arguments = array(
'visitors' => $visitors, 'visitors' => $visitors,
); );
$dispatcher->triggerEvent('usersUpdateVisitorsAlter', $arguments); $dispatcher->triggerEvent(Events::USERS_UPDATE_VISITORS_ALTER, $arguments);
// Send results back to the client. "array_values" function should be // Send results back to the client. "array_values" function should be
// used to avoid problems with JSON conversion. If there will be gaps in // used to avoid problems with JSON conversion. If there will be gaps in