• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/access/rule/tasksaverule.php
  • Класс: BitrixTasksAccessRuleTaskSaveRule
  • Вызов: TaskSaveRule::changedDirector
private function changedDirector()
{
	$directors = $this->newTask->getMembers(RoleDictionary::ROLE_DIRECTOR);
	if (empty($directors))
	{
		return false;
	}

	if ($directors[0] === $this->user->getUserId())
	{
		return false;
	}

	$responsibles = $this->newTask->getMembers(RoleDictionary::ROLE_RESPONSIBLE);

	// new task
	if (
		!$this->oldTask->getId()
		&& count($responsibles) === 1
		&& $responsibles[0] === $this->user->getUserId()
	)
	{
		return false;
	}

	// director hasn't changed
	if (
		$this->oldTask->getId()
		&& !empty($this->oldTask->getMembers(RoleDictionary::ROLE_DIRECTOR))
		&& $directors[0] === $this->oldTask->getMembers(RoleDictionary::ROLE_DIRECTOR)[0]
	)
	{
		return false;
	}

	return true;
}