Avoid automatic actions that change the color to fire subsequent events

This commit is contained in:
Frederic Guillot 2016-01-17 14:56:31 -05:00
parent 1259e911e4
commit e94c4cab7f
10 changed files with 34 additions and 20 deletions

View File

@ -24,6 +24,7 @@ Bug fixes:
* Automatic action listeners were using the same instance
* Fix wrong link for category in task footer
* Unable to set currency rate with Postgres database
* Avoid automatic actions that change the color to fire subsequent events
Version 1.0.23
--------------

View File

@ -119,7 +119,13 @@ abstract class Base extends \Kanboard\Core\Base
*/
public function __toString()
{
return $this->getName();
$params = array();
foreach ($this->params as $key => $value) {
$params[] = $key.'='.var_export($value, true);
}
return $this->getName().'('.implode('|', $params).'])';
}
/**
@ -246,16 +252,17 @@ abstract class Base extends \Kanboard\Core\Base
}
$data = $event->getAll();
$result = false;
$executable = $this->isExecutable($data, $eventName);
$executed = false;
if ($this->isExecutable($data, $eventName)) {
if ($executable) {
$this->called = true;
$result = $this->doAction($data);
$executed = $this->doAction($data);
}
$this->logger->debug('AutomaticAction '.$this->getName().' => '.($result ? 'true' : 'false'));
$this->logger->debug($this.' ['.$eventName.'] => executable='.var_export($executable, true).' exec_success='.var_export($executed, true));
return $result;
return $executed;
}
/**

View File

@ -78,7 +78,7 @@ class TaskAssignColorCategory extends Base
'color_id' => $this->getParam('color_id'),
);
return $this->taskModification->update($values);
return $this->taskModification->update($values, false);
}
/**

View File

@ -79,7 +79,7 @@ class TaskAssignColorColumn extends Base
'color_id' => $this->getParam('color_id'),
);
return $this->taskModification->update($values);
return $this->taskModification->update($values, false);
}
/**

View File

@ -78,7 +78,7 @@ class TaskAssignColorLink extends Base
'color_id' => $this->getParam('color_id'),
);
return $this->taskModification->update($values);
return $this->taskModification->update($values, false);
}
/**

View File

@ -79,7 +79,7 @@ class TaskAssignColorUser extends Base
'color_id' => $this->getParam('color_id'),
);
return $this->taskModification->update($values);
return $this->taskModification->update($values, false);
}
/**

View File

@ -88,6 +88,9 @@ class TaskCreation extends Base
{
$event = new TaskEvent(array('task_id' => $task_id) + $values);
$this->logger->debug('Event fired: '.Task::EVENT_CREATE_UPDATE);
$this->logger->debug('Event fired: '.Task::EVENT_CREATE);
$this->dispatcher->dispatch(Task::EVENT_CREATE_UPDATE, $event);
$this->dispatcher->dispatch(Task::EVENT_CREATE, $event);

View File

@ -17,16 +17,17 @@ class TaskModification extends Base
*
* @access public
* @param array $values
* @param boolean $fire_events
* @return boolean
*/
public function update(array $values)
public function update(array $values, $fire_events = true)
{
$original_task = $this->taskFinder->getById($values['id']);
$this->prepare($values);
$result = $this->db->table(Task::TABLE)->eq('id', $original_task['id'])->update($values);
if ($result) {
if ($fire_events && $result) {
$this->fireEvents($original_task, $values);
}
@ -57,7 +58,8 @@ class TaskModification extends Base
}
foreach ($events as $event) {
$this->container['dispatcher']->dispatch($event, new TaskEvent($event_data));
$this->logger->debug('Event fired: '.$event);
$this->dispatcher->dispatch($event, new TaskEvent($event_data));
}
}

View File

@ -177,11 +177,14 @@ class TaskPosition extends Base
);
if ($task['swimlane_id'] != $new_swimlane_id) {
$this->container['dispatcher']->dispatch(Task::EVENT_MOVE_SWIMLANE, new TaskEvent($event_data));
$this->logger->debug('Event fired: '.Task::EVENT_MOVE_SWIMLANE);
$this->dispatcher->dispatch(Task::EVENT_MOVE_SWIMLANE, new TaskEvent($event_data));
} elseif ($task['column_id'] != $new_column_id) {
$this->container['dispatcher']->dispatch(Task::EVENT_MOVE_COLUMN, new TaskEvent($event_data));
$this->logger->debug('Event fired: '.Task::EVENT_MOVE_COLUMN);
$this->dispatcher->dispatch(Task::EVENT_MOVE_COLUMN, new TaskEvent($event_data));
} elseif ($task['position'] != $new_position) {
$this->container['dispatcher']->dispatch(Task::EVENT_MOVE_POSITION, new TaskEvent($event_data));
$this->logger->debug('Event fired: '.Task::EVENT_MOVE_POSITION);
$this->dispatcher->dispatch(Task::EVENT_MOVE_POSITION, new TaskEvent($event_data));
}
}
}

View File

@ -113,10 +113,8 @@ class TaskStatus extends Base
));
if ($result) {
$this->container['dispatcher']->dispatch(
$event,
new TaskEvent(array('task_id' => $task_id) + $this->taskFinder->getById($task_id))
);
$this->logger->debug('Event fired: '.$event);
$this->dispatcher->dispatch($event, new TaskEvent(array('task_id' => $task_id) + $this->taskFinder->getById($task_id)));
}
return $result;