• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/manager/task.php
  • Класс: BitrixTasksManagerTask
  • Вызов: Task::cleanData
static function cleanData(UserModel $user, array $data)
{
	if ($user->isAdmin())
	{
		return $data;
	}

	$userId = $user->getUserId();

	if (
		array_key_exists('SE_PROJECT', $data)
		&& isset($data['SE_PROJECT']['ID'])
	)
	{
		$groupId = (int) $data['SE_PROJECT']['ID'];
		if (
			!FeaturePermRegistry::getInstance()->get(
				$groupId,
				'tasks',
				'create_tasks',
				$userId
			)
			&& !FeaturePermRegistry::getInstance()->get(
				$groupId,
				'tasks',
				'edit_tasks',
				$userId
			)
		)
		{
			$data['SE_PROJECT']['ID'] = 0;
		}

	}

	if (!$user->isExtranet())
	{
		return $data;
	}

	if (
		array_key_exists('SE_ORIGINATOR', $data)
		&& isset($data['SE_ORIGINATOR']['ID'])
	)
	{
		if (!Group::usersHasCommonGroup($userId, (int) $data['SE_ORIGINATOR']['ID']))
		{
			$data['SE_ORIGINATOR']['ID'] = $userId;
		}
	}

	if (
		array_key_exists('SE_RESPONSIBLE', $data)
		&& is_array($data['SE_RESPONSIBLE'])
	)
	{
		foreach ($data['SE_RESPONSIBLE'] as $code => $member)
		{
			if (!Group::usersHasCommonGroup($userId, (int) $member['ID']))
			{
				unset($data['SE_RESPONSIBLE'][$code]);
			}
		}
	}
	if (empty($data['SE_RESPONSIBLE']))
	{
		$data['SE_RESPONSIBLE'] = [
			'U'.$userId => [
				'ID' => $userId,
				'NAME' => '',
				'LAST_NAME' => '',
				'EMAIL' => '',
			],
		];
	}

	if (
		array_key_exists('SE_ACCOMPLICE', $data)
		&& is_array($data['SE_ACCOMPLICE'])
	)
	{
		foreach ($data['SE_ACCOMPLICE'] as $code => $member)
		{
			if (!Group::usersHasCommonGroup($userId, (int) $member['ID']))
			{
				unset($data['SE_ACCOMPLICE'][$code]);
			}
		}
	}

	if (
		array_key_exists('SE_AUDITOR', $data)
		&& is_array($data['SE_AUDITOR'])
	)
	{
		foreach ($data['SE_AUDITOR'] as $code => $member)
		{
			if (!Group::usersHasCommonGroup($userId, (int) $member['ID']))
			{
				unset($data['SE_AUDITOR'][$code]);
			}
		}
	}

	return $data;
}