Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bareos/bareos-webui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/zendframework/zend-eventmanager/src/EventManager.php')
-rw-r--r--vendor/zendframework/zend-eventmanager/src/EventManager.php526
1 files changed, 0 insertions, 526 deletions
diff --git a/vendor/zendframework/zend-eventmanager/src/EventManager.php b/vendor/zendframework/zend-eventmanager/src/EventManager.php
deleted file mode 100644
index aab67ee..0000000
--- a/vendor/zendframework/zend-eventmanager/src/EventManager.php
+++ /dev/null
@@ -1,526 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\EventManager;
-
-use ArrayAccess;
-use ArrayObject;
-use Traversable;
-use Zend\Stdlib\CallbackHandler;
-use Zend\Stdlib\PriorityQueue;
-
-/**
- * Event manager: notification system
- *
- * Use the EventManager when you want to create a per-instance notification
- * system for your objects.
- */
-class EventManager implements EventManagerInterface
-{
- /**
- * Subscribed events and their listeners
- * @var array Array of PriorityQueue objects
- */
- protected $events = array();
-
- /**
- * @var string Class representing the event being emitted
- */
- protected $eventClass = 'Zend\EventManager\Event';
-
- /**
- * Identifiers, used to pull shared signals from SharedEventManagerInterface instance
- * @var array
- */
- protected $identifiers = array();
-
- /**
- * Shared event manager
- * @var false|null|SharedEventManagerInterface
- */
- protected $sharedManager = null;
-
- /**
- * Constructor
- *
- * Allows optionally specifying identifier(s) to use to pull signals from a
- * SharedEventManagerInterface.
- *
- * @param null|string|int|array|Traversable $identifiers
- */
- public function __construct($identifiers = null)
- {
- $this->setIdentifiers($identifiers);
- }
-
- /**
- * Set the event class to utilize
- *
- * @param string $class
- * @return EventManager
- */
- public function setEventClass($class)
- {
- $this->eventClass = $class;
- return $this;
- }
-
- /**
- * Set shared event manager
- *
- * @param SharedEventManagerInterface $sharedEventManager
- * @return EventManager
- */
- public function setSharedManager(SharedEventManagerInterface $sharedEventManager)
- {
- $this->sharedManager = $sharedEventManager;
- StaticEventManager::setInstance($sharedEventManager);
- return $this;
- }
-
- /**
- * Remove any shared event manager currently attached
- *
- * @return void
- */
- public function unsetSharedManager()
- {
- $this->sharedManager = false;
- }
-
- /**
- * Get shared event manager
- *
- * If one is not defined, but we have a static instance in
- * StaticEventManager, that one will be used and set in this instance.
- *
- * If none is available in the StaticEventManager, a boolean false is
- * returned.
- *
- * @return false|SharedEventManagerInterface
- */
- public function getSharedManager()
- {
- // "false" means "I do not want a shared manager; don't try and fetch one"
- if (false === $this->sharedManager
- || $this->sharedManager instanceof SharedEventManagerInterface
- ) {
- return $this->sharedManager;
- }
-
- if (!StaticEventManager::hasInstance()) {
- return false;
- }
-
- $this->sharedManager = StaticEventManager::getInstance();
- return $this->sharedManager;
- }
-
- /**
- * Get the identifier(s) for this EventManager
- *
- * @return array
- */
- public function getIdentifiers()
- {
- return $this->identifiers;
- }
-
- /**
- * Set the identifiers (overrides any currently set identifiers)
- *
- * @param string|int|array|Traversable $identifiers
- * @return EventManager Provides a fluent interface
- */
- public function setIdentifiers($identifiers)
- {
- if (is_array($identifiers) || $identifiers instanceof Traversable) {
- $this->identifiers = array_unique((array) $identifiers);
- } elseif ($identifiers !== null) {
- $this->identifiers = array($identifiers);
- }
- return $this;
- }
-
- /**
- * Add some identifier(s) (appends to any currently set identifiers)
- *
- * @param string|int|array|Traversable $identifiers
- * @return EventManager Provides a fluent interface
- */
- public function addIdentifiers($identifiers)
- {
- if (is_array($identifiers) || $identifiers instanceof Traversable) {
- $this->identifiers = array_unique(array_merge($this->identifiers, (array) $identifiers));
- } elseif ($identifiers !== null) {
- $this->identifiers = array_unique(array_merge($this->identifiers, array($identifiers)));
- }
- return $this;
- }
-
- /**
- * Trigger all listeners for a given event
- *
- * @param string|EventInterface $event
- * @param string|object $target Object calling emit, or symbol describing target (such as static method name)
- * @param array|ArrayAccess $argv Array of arguments; typically, should be associative
- * @param null|callable $callback Trigger listeners until return value of this callback evaluate to true
- * @return ResponseCollection All listener return values
- * @throws Exception\InvalidCallbackException
- */
- public function trigger($event, $target = null, $argv = array(), $callback = null)
- {
- if ($event instanceof EventInterface) {
- $e = $event;
- $event = $e->getName();
- $callback = $target;
- } elseif ($target instanceof EventInterface) {
- $e = $target;
- $e->setName($event);
- $callback = $argv;
- } elseif ($argv instanceof EventInterface) {
- $e = $argv;
- $e->setName($event);
- $e->setTarget($target);
- } else {
- $e = new $this->eventClass();
- $e->setName($event);
- $e->setTarget($target);
- $e->setParams($argv);
- }
-
- if ($callback && !is_callable($callback)) {
- throw new Exception\InvalidCallbackException('Invalid callback provided');
- }
-
- // Initial value of stop propagation flag should be false
- $e->stopPropagation(false);
-
- return $this->triggerListeners($event, $e, $callback);
- }
-
- /**
- * Trigger listeners until return value of one causes a callback to
- * evaluate to true
- *
- * Triggers listeners until the provided callback evaluates the return
- * value of one as true, or until all listeners have been executed.
- *
- * @param string|EventInterface $event
- * @param string|object $target Object calling emit, or symbol describing target (such as static method name)
- * @param array|ArrayAccess $argv Array of arguments; typically, should be associative
- * @param callable $callback
- * @return ResponseCollection
- * @deprecated Please use trigger()
- * @throws Exception\InvalidCallbackException if invalid callable provided
- */
- public function triggerUntil($event, $target, $argv = null, $callback = null)
- {
- trigger_error(
- 'This method is deprecated and will be removed in the future. Please use trigger() instead.',
- E_USER_DEPRECATED
- );
- return $this->trigger($event, $target, $argv, $callback);
- }
-
- /**
- * Attach a listener to an event
- *
- * The first argument is the event, and the next argument describes a
- * callback that will respond to that event. A CallbackHandler instance
- * describing the event listener combination will be returned.
- *
- * The last argument indicates a priority at which the event should be
- * executed. By default, this value is 1; however, you may set it for any
- * integer value. Higher values have higher priority (i.e., execute first).
- *
- * You can specify "*" for the event name. In such cases, the listener will
- * be triggered for every event.
- *
- * @param string|array|ListenerAggregateInterface $event An event or array of event names. If a ListenerAggregateInterface, proxies to {@link attachAggregate()}.
- * @param callable|int $callback If string $event provided, expects PHP callback; for a ListenerAggregateInterface $event, this will be the priority
- * @param int $priority If provided, the priority at which to register the callable
- * @return CallbackHandler|mixed CallbackHandler if attaching callable (to allow later unsubscribe); mixed if attaching aggregate
- * @throws Exception\InvalidArgumentException
- */
- public function attach($event, $callback = null, $priority = 1)
- {
- // Proxy ListenerAggregateInterface arguments to attachAggregate()
- if ($event instanceof ListenerAggregateInterface) {
- return $this->attachAggregate($event, $callback);
- }
-
- // Null callback is invalid
- if (null === $callback) {
- throw new Exception\InvalidArgumentException(sprintf(
- '%s: expects a callback; none provided',
- __METHOD__
- ));
- }
-
- // Array of events should be registered individually, and return an array of all listeners
- if (is_array($event)) {
- $listeners = array();
- foreach ($event as $name) {
- $listeners[] = $this->attach($name, $callback, $priority);
- }
- return $listeners;
- }
-
- // If we don't have a priority queue for the event yet, create one
- if (empty($this->events[$event])) {
- $this->events[$event] = new PriorityQueue();
- }
-
- // Create a callback handler, setting the event and priority in its metadata
- $listener = new CallbackHandler($callback, array('event' => $event, 'priority' => $priority));
-
- // Inject the callback handler into the queue
- $this->events[$event]->insert($listener, $priority);
- return $listener;
- }
-
- /**
- * Attach a listener aggregate
- *
- * Listener aggregates accept an EventManagerInterface instance, and call attach()
- * one or more times, typically to attach to multiple events using local
- * methods.
- *
- * @param ListenerAggregateInterface $aggregate
- * @param int $priority If provided, a suggested priority for the aggregate to use
- * @return mixed return value of {@link ListenerAggregateInterface::attach()}
- */
- public function attachAggregate(ListenerAggregateInterface $aggregate, $priority = 1)
- {
- return $aggregate->attach($this, $priority);
- }
-
- /**
- * Unsubscribe a listener from an event
- *
- * @param CallbackHandler|ListenerAggregateInterface $listener
- * @return bool Returns true if event and listener found, and unsubscribed; returns false if either event or listener not found
- * @throws Exception\InvalidArgumentException if invalid listener provided
- */
- public function detach($listener)
- {
- if ($listener instanceof ListenerAggregateInterface) {
- return $this->detachAggregate($listener);
- }
-
- if (!$listener instanceof CallbackHandler) {
- throw new Exception\InvalidArgumentException(sprintf(
- '%s: expected a ListenerAggregateInterface or CallbackHandler; received "%s"',
- __METHOD__,
- (is_object($listener) ? get_class($listener) : gettype($listener))
- ));
- }
-
- $event = $listener->getMetadatum('event');
- if (!$event || empty($this->events[$event])) {
- return false;
- }
- $return = $this->events[$event]->remove($listener);
- if (!$return) {
- return false;
- }
- if (!count($this->events[$event])) {
- unset($this->events[$event]);
- }
- return true;
- }
-
- /**
- * Detach a listener aggregate
- *
- * Listener aggregates accept an EventManagerInterface instance, and call detach()
- * of all previously attached listeners.
- *
- * @param ListenerAggregateInterface $aggregate
- * @return mixed return value of {@link ListenerAggregateInterface::detach()}
- */
- public function detachAggregate(ListenerAggregateInterface $aggregate)
- {
- return $aggregate->detach($this);
- }
-
- /**
- * Retrieve all registered events
- *
- * @return array
- */
- public function getEvents()
- {
- return array_keys($this->events);
- }
-
- /**
- * Retrieve all listeners for a given event
- *
- * @param string $event
- * @return PriorityQueue
- */
- public function getListeners($event)
- {
- if (!array_key_exists($event, $this->events)) {
- return new PriorityQueue();
- }
- return $this->events[$event];
- }
-
- /**
- * Clear all listeners for a given event
- *
- * @param string $event
- * @return void
- */
- public function clearListeners($event)
- {
- if (!empty($this->events[$event])) {
- unset($this->events[$event]);
- }
- }
-
- /**
- * Prepare arguments
- *
- * Use this method if you want to be able to modify arguments from within a
- * listener. It returns an ArrayObject of the arguments, which may then be
- * passed to trigger().
- *
- * @param array $args
- * @return ArrayObject
- */
- public function prepareArgs(array $args)
- {
- return new ArrayObject($args);
- }
-
- /**
- * Trigger listeners
- *
- * Actual functionality for triggering listeners, to which trigger() delegate.
- *
- * @param string $event Event name
- * @param EventInterface $e
- * @param null|callable $callback
- * @return ResponseCollection
- */
- protected function triggerListeners($event, EventInterface $e, $callback = null)
- {
- $responses = new ResponseCollection;
- $listeners = $this->getListeners($event);
-
- // Add shared/wildcard listeners to the list of listeners,
- // but don't modify the listeners object
- $sharedListeners = $this->getSharedListeners($event);
- $sharedWildcardListeners = $this->getSharedListeners('*');
- $wildcardListeners = $this->getListeners('*');
- if (count($sharedListeners) || count($sharedWildcardListeners) || count($wildcardListeners)) {
- $listeners = clone $listeners;
-
- // Shared listeners on this specific event
- $this->insertListeners($listeners, $sharedListeners);
-
- // Shared wildcard listeners
- $this->insertListeners($listeners, $sharedWildcardListeners);
-
- // Add wildcard listeners
- $this->insertListeners($listeners, $wildcardListeners);
- }
-
- foreach ($listeners as $listener) {
- $listenerCallback = $listener->getCallback();
-
- // Trigger the listener's callback, and push its result onto the
- // response collection
- $responses->push(call_user_func($listenerCallback, $e));
-
- // If the event was asked to stop propagating, do so
- if ($e->propagationIsStopped()) {
- $responses->setStopped(true);
- break;
- }
-
- // If the result causes our validation callback to return true,
- // stop propagation
- if ($callback && call_user_func($callback, $responses->last())) {
- $responses->setStopped(true);
- break;
- }
- }
-
- return $responses;
- }
-
- /**
- * Get list of all listeners attached to the shared event manager for
- * identifiers registered by this instance
- *
- * @param string $event
- * @return array
- */
- protected function getSharedListeners($event)
- {
- if (!$sharedManager = $this->getSharedManager()) {
- return array();
- }
-
- $identifiers = $this->getIdentifiers();
- //Add wildcard id to the search, if not already added
- if (!in_array('*', $identifiers)) {
- $identifiers[] = '*';
- }
- $sharedListeners = array();
-
- foreach ($identifiers as $id) {
- if (!$listeners = $sharedManager->getListeners($id, $event)) {
- continue;
- }
-
- if (!is_array($listeners) && !($listeners instanceof Traversable)) {
- continue;
- }
-
- foreach ($listeners as $listener) {
- if (!$listener instanceof CallbackHandler) {
- continue;
- }
- $sharedListeners[] = $listener;
- }
- }
-
- return $sharedListeners;
- }
-
- /**
- * Add listeners to the master queue of listeners
- *
- * Used to inject shared listeners and wildcard listeners.
- *
- * @param PriorityQueue $masterListeners
- * @param array|Traversable $listeners
- * @return void
- */
- protected function insertListeners($masterListeners, $listeners)
- {
- foreach ($listeners as $listener) {
- $priority = $listener->getMetadatum('priority');
- if (null === $priority) {
- $priority = 1;
- } elseif (is_array($priority)) {
- // If we have an array, likely using PriorityQueue. Grab first
- // element of the array, as that's the actual priority.
- $priority = array_shift($priority);
- }
- $masterListeners->insert($listener, $priority);
- }
- }
-}