• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/checklist/internals/checklist.php
  • Класс: BitrixTasksCheckListInternalsCheckList
  • Вызов: CheckList::getChangedFields
private function getChangedFields($oldFields)
{
	$changedTableFields = [];
	$changedCommonFields = [];

	$newFields = $this->getFields();
	$possibleChanges = ['TITLE', 'PARENT_ID', 'SORT_INDEX', 'IS_COMPLETE', 'IS_IMPORTANT', 'MEMBERS', 'ATTACHMENTS'];

	foreach ($possibleChanges as $field)
	{
		switch ($field)
		{
			case 'PARENT_ID':
				if ($oldFields[$field] !== $newFields[$field])
				{
					$changedCommonFields[$field] = $newFields[$field];
				}
				break;

			case 'MEMBERS':
				if ($changedMembers = $this->getChangedMembers($oldFields[$field], $newFields[$field]))
				{
					$changedCommonFields[$field] = $changedMembers;
				}
				break;

			case 'ATTACHMENTS':
				if (($changedAttachments = $this->getChangedAttachments($oldFields[$field], $newFields[$field])) !== null)
				{
					$changedCommonFields[$field] = $changedAttachments;
				}
				break;

			default:
				if ($oldFields[$field] !== $newFields[$field])
				{
					$changedTableFields[$field] = $newFields[$field];

					if ($field === 'IS_COMPLETE')
					{
						$userTime = User::getTime($this->userId);

						$changedTableFields['TOGGLED_BY'] = $this->userId;
						$changedTableFields['TOGGLED_DATE'] = new DateTime(UI::formatDateTime($userTime));
					}
				}
				break;
		}
	}

	return [
		'TABLE' => $changedTableFields,
		'COMMON' => $changedCommonFields,
	];
}