/** * @param int $fromUserId Task current user. * @param int $toUserId Task target user. * @param array|int $ids Task ids. * @param array $errors Error collection. * @return bool */ public static function delegateTasks($fromUserId, $toUserId, $ids = array(), &$errors = array()) { $filter = array('USER_ID' => $fromUserId, 'STATUS' => CBPTaskStatus::Running, 'USER_STATUS' => CBPTaskUserStatus::Waiting); if ($ids) { $ids = array_filter(array_map('intval', (array) $ids)); if ($ids) { $filter['ID'] = $ids; } } $iterator = CBPTaskService::GetList(array('ID' => 'ASC'), $filter, false, false, array('ID', 'NAME')); $found = false; while ($task = $iterator->fetch()) { $found = true; if (!CBPTaskService::delegateTask($task['ID'], $fromUserId, $toUserId)) { $errors[] = GetMessage('BPCGDOC_ERROR_DELEGATE', array('#NAME#' => $task['NAME'])); } } return $found; }