2011-03-27 07:42:46 +00:00
|
|
|
<?php
|
2018-05-25 07:26:54 +00:00
|
|
|
|
2021-02-18 23:23:32 +00:00
|
|
|
namespace Resque;
|
|
|
|
|
2011-03-27 07:42:46 +00:00
|
|
|
/**
|
|
|
|
* Resque event/plugin system class
|
|
|
|
*
|
2018-05-25 07:26:54 +00:00
|
|
|
* @package Resque/Event
|
2021-02-18 23:23:32 +00:00
|
|
|
* @author Daniel Mason <daniel@m2.nz>
|
2018-05-25 07:26:54 +00:00
|
|
|
* @license http://www.opensource.org/licenses/mit-license.php
|
2011-03-27 07:42:46 +00:00
|
|
|
*/
|
2018-05-25 07:26:54 +00:00
|
|
|
|
2021-02-18 23:23:32 +00:00
|
|
|
class Event
|
2011-03-27 07:42:46 +00:00
|
|
|
{
|
2018-05-25 07:26:54 +00:00
|
|
|
/**
|
|
|
|
* @var array Array containing all registered callbacks, indexked by event name.
|
|
|
|
*/
|
|
|
|
private static $events = [];
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Raise a given event with the supplied data.
|
|
|
|
*
|
|
|
|
* @param string $event Name of event to be raised.
|
|
|
|
* @param mixed $data Optional, any data that should be passed to each callback.
|
|
|
|
* @return true
|
|
|
|
*/
|
|
|
|
public static function trigger($event, $data = null)
|
|
|
|
{
|
|
|
|
if (!is_array($data)) {
|
|
|
|
$data = [$data];
|
|
|
|
}
|
|
|
|
|
|
|
|
if (empty(self::$events[$event])) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach (self::$events[$event] as $callback) {
|
|
|
|
if (!is_callable($callback)) {
|
|
|
|
continue;
|
|
|
|
}
|
2021-02-18 23:23:32 +00:00
|
|
|
|
|
|
|
call_user_func_array($callback, array_values($data));
|
2018-05-25 07:26:54 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Listen in on a given event to have a specified callback fired.
|
|
|
|
*
|
|
|
|
* @param string $event Name of event to listen on.
|
|
|
|
* @param mixed $callback Any callback callable by call_user_func_array.
|
|
|
|
* @return true
|
|
|
|
*/
|
|
|
|
public static function listen($event, $callback)
|
|
|
|
{
|
|
|
|
if (!isset(self::$events[$event])) {
|
|
|
|
self::$events[$event] = [];
|
|
|
|
}
|
|
|
|
|
|
|
|
self::$events[$event][] = $callback;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Stop a given callback from listening on a specific event.
|
|
|
|
*
|
|
|
|
* @param string $event Name of event.
|
|
|
|
* @param mixed $callback The callback as defined when listen() was called.
|
|
|
|
* @return true
|
|
|
|
*/
|
|
|
|
public static function stopListening($event, $callback)
|
|
|
|
{
|
|
|
|
if (!isset(self::$events[$event])) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
$key = array_search($callback, self::$events[$event]);
|
|
|
|
if ($key !== false) {
|
|
|
|
unset(self::$events[$event][$key]);
|
|
|
|
}
|
2011-03-27 07:42:46 +00:00
|
|
|
|
2018-05-25 07:26:54 +00:00
|
|
|
return true;
|
|
|
|
}
|
2011-03-27 07:42:46 +00:00
|
|
|
|
2018-05-25 07:26:54 +00:00
|
|
|
/**
|
|
|
|
* Call all registered listeners.
|
|
|
|
*/
|
|
|
|
public static function clearListeners()
|
|
|
|
{
|
|
|
|
self::$events = [];
|
|
|
|
}
|
2012-04-03 22:23:25 +00:00
|
|
|
}
|