|
<?php |
|
|
|
namespace Kanboard\Action; |
|
|
|
use Kanboard\Model\TaskModel; |
|
|
|
|
|
|
|
|
|
|
|
|
|
class TaskMoveColumnOnDueDate extends Base |
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getDescription() |
|
{ |
|
return t('Move the task to another column when the due date is less than a certain number of days'); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getCompatibleEvents() |
|
{ |
|
return array(TaskModel::EVENT_DAILY_CRONJOB); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getActionRequiredParameters() |
|
{ |
|
return array( |
|
'duration' => t('Duration in days'), |
|
'src_column_id' => t('Source column'), |
|
'dest_column_id' => t('Destination column'), |
|
); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getEventRequiredParameters() |
|
{ |
|
return array('tasks'); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function doAction(array $data) |
|
{ |
|
$results = array(); |
|
$min = $this->getParam('duration') * 86400; |
|
|
|
foreach ($data['tasks'] as $task) { |
|
$duration = $task['date_due'] - time(); |
|
|
|
if ($task['date_due'] > 0 && $duration < $min && $task['column_id'] == $this->getParam('src_column_id')) { |
|
$results[] = $this->taskPositionModel->movePosition( |
|
$task['project_id'], |
|
$task['id'], |
|
$this->getParam('dest_column_id'), |
|
1, |
|
$task['swimlane_id'], |
|
true |
|
); |
|
} |
|
} |
|
|
|
return in_array(true, $results, true); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function hasRequiredCondition(array $data) |
|
{ |
|
return count($data['tasks']) > 0; |
|
} |
|
} |
|
|