Improve events handling

This commit is contained in:
Frédéric Guillot
2014-05-26 12:27:33 -04:00
parent dbc4443bb1
commit 2cb6b77ac8
5 changed files with 51 additions and 30 deletions

View File

@@ -67,13 +67,16 @@ class Event
*/
public function trigger($eventName, array $data)
{
$this->lastEvent = $eventName;
$this->events[] = $eventName;
if (! $this->isEventTriggered($eventName)) {
if (isset($this->listeners[$eventName])) {
foreach ($this->listeners[$eventName] as $listener) {
if ($listener->execute($data)) {
$this->lastListener = get_class($listener);
$this->lastEvent = $eventName;
$this->events[] = $eventName;
if (isset($this->listeners[$eventName])) {
foreach ($this->listeners[$eventName] as $listener) {
if ($listener->execute($data)) {
$this->lastListener = get_class($listener);
}
}
}
}
@@ -112,6 +115,18 @@ class Event
return $this->events;
}
/**
* Check if an event have been triggered
*
* @access public
* @param string $eventName Event name
* @return bool
*/
public function isEventTriggered($eventName)
{
return in_array($eventName, $this->events);
}
/**
* Check if a listener bind to an event
*

View File

@@ -359,12 +359,10 @@ class Task extends Base
// Trigger events
if ($result) {
$events = array();
if (! in_array($this->event->getLastTriggeredEvent(), array(self::EVENT_CREATE_UPDATE))) {
$events[] = self::EVENT_CREATE_UPDATE;
$events[] = self::EVENT_UPDATE;
}
$events = array(
self::EVENT_CREATE_UPDATE,
self::EVENT_UPDATE,
);
if (isset($values['column_id']) && $original_task['column_id'] != $values['column_id']) {
$events[] = self::EVENT_MOVE_COLUMN;