Implements hook_tmgmt_job_item_update().
@todo: Move this to the translator plugin API.
function tmgmt_local_tmgmt_job_item_update(JobItemInterface $job_item) {
if ($job_item
->isAccepted() && !$job_item->original
->isAccepted() || $job_item
->isAborted() && !$job_item->original
->isAborted()) {
$tltiid = \Drupal::database()
->query('SELECT tltiid FROM {tmgmt_local_task_item} ti INNER JOIN {tmgmt_local_task} t ON ti.tltid = t.tltid WHERE t.tjid = :tjid AND ti.tjiid = :tjiid', array(
':tjid' => $job_item
->getJobId(),
':tjiid' => $job_item
->id(),
))
->fetchField();
if ($tltiid) {
$task_item = LocalTaskItem::load($tltiid);
$task_item
->closed();
$task_item
->save();
// Check if the task can be marked as closed as well.
$unclosed_tasks = \Drupal::entityQuery('tmgmt_local_task_item')
->accessCheck(TRUE)
->condition('tltid', $task_item
->id())
->condition('status', LocalTaskItemInterface::STATUS_CLOSED, '<>')
->count()
->execute();
if ($unclosed_tasks == 0) {
$task = $task_item
->getTask();
$task
->setStatus(LocalTaskInterface::STATUS_CLOSED);
$task
->save();
}
}
}
}