|
|
<?php |
|
|
|
|
|
namespace Kanboard\Action; |
|
|
|
|
|
use Kanboard\Model\TaskModel; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TaskEmailNoActivity extends Base |
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getDescription() |
|
|
{ |
|
|
return t('Send email when there is no activity on a task'); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getCompatibleEvents() |
|
|
{ |
|
|
return array( |
|
|
TaskModel::EVENT_DAILY_CRONJOB, |
|
|
); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getActionRequiredParameters() |
|
|
{ |
|
|
return array( |
|
|
'user_id' => t('User that will receive the email'), |
|
|
'subject' => t('Email subject'), |
|
|
'duration' => t('Duration in days'), |
|
|
); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getEventRequiredParameters() |
|
|
{ |
|
|
return array('tasks'); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function hasRequiredCondition(array $data) |
|
|
{ |
|
|
return count($data['tasks']) > 0; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function doAction(array $data) |
|
|
{ |
|
|
$results = array(); |
|
|
$max = $this->getParam('duration') * 86400; |
|
|
$user = $this->userModel->getById($this->getParam('user_id')); |
|
|
|
|
|
if (! empty($user['email'])) { |
|
|
foreach ($data['tasks'] as $task) { |
|
|
$duration = time() - $task['date_modification']; |
|
|
|
|
|
if ($duration > $max) { |
|
|
$results[] = $this->sendEmail($task['id'], $user); |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
return in_array(true, $results, true); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private function sendEmail($task_id, array $user) |
|
|
{ |
|
|
$task = $this->taskFinderModel->getDetails($task_id); |
|
|
|
|
|
$this->emailClient->send( |
|
|
$user['email'], |
|
|
$user['name'] ?: $user['username'], |
|
|
$this->getParam('subject'), |
|
|
$this->template->render('notification/task_create', array('task' => $task)) |
|
|
); |
|
|
|
|
|
return true; |
|
|
} |
|
|
} |
|
|
|